La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Concetti Fondamentali sulla Programmazione  Cosa Significa Programmare  Linguaggi di Programmazione  Lo sviluppo dei programmi: tecniche di programmazione.

Presentazioni simili


Presentazione sul tema: "1 Concetti Fondamentali sulla Programmazione  Cosa Significa Programmare  Linguaggi di Programmazione  Lo sviluppo dei programmi: tecniche di programmazione."— Transcript della presentazione:

1 1 Concetti Fondamentali sulla Programmazione  Cosa Significa Programmare  Linguaggi di Programmazione  Lo sviluppo dei programmi: tecniche di programmazione  L’esecuzione dei programmi L’interpretazione La compilazione  Le Librerie  Le Fasi di Compilazione e Link  Esempio in C

2 2 Dato un problema INFORMATICO, programmare significa:  Definire l’algoritmo risolutivo, che deve essere finito e realizzabile con le risorse disponibili  Tradurre l’algoritmo nel linguaggio di programmazione scelto, attraverso la particolare tecnica di programmazione scelta, rispettando le regole sintattiche del linguaggio La Programmazione

3 3 Linguaggi di programmazione: Linguaggio Macchina  I primi linguaggi di programmazione coincidevano con l'insieme delle istruzioni eseguibili dall'hardware.  Le istruzioni hardware sono codificate in codice binario: ogni informazione è rappresentata, all'interno della macchina, come una sequenza di bit.  LOAD 8 potrà essere rappresentata in una macchina reale come , dove 0011 è la rappresentazione interna del codice operativo LOAD  Enorme sforzo richiesto per codificare algoritmi semplici.

4 4 Linguaggi di programmazione: Assembly  Dalla nascita dei primi calcolatori, si è cercato di diminuire lo sforzo e aumentare la produttività dell'utente, anche a costo di caricare la macchina di maggiori compiti.  E’ meglio risparmiare il tempo dell'uomo anche a costo di sprecare tempo-macchina (traduzione di programmi e scarsa efficienza del programma).  La prima evoluzione dei linguaggi di programmazione ha portato ad una codifica di tipo simbolico, anziché binaria, dei programmi. assembly  Tali versioni simboliche dei linguaggi hardware sono note come linguaggi assembly

5 5 Linguaggi di programmazione: Evoluzione Hardware MicroProgrammi Macchina/binario Assembly Alto Livello  Il passo successivo nell’evoluzione dei linguaggi di programmazione tese a rendere la codifica degli algoritmi il più possibile “vicina” al problema da risolvere anziché all'architettura della macchina destinata all'esecuzione del programma. FORTRANCOBOL  Non a caso i primi due linguaggi di alto livello, FORTRAN e COBOL, hanno costrutti fortemente ispirati alla notazione usata per descrivere i problemi di maggior rilievo per il calcolo automatico degli anni '50, cioè l'elaborazione numerica e quella gestionale.

6 6 Linguaggi di programmazione: Evoluzione  Gli anni '70 vedono il fiorire dei linguaggi Strutturati: SIMULA 67ALGOL 68 PASCAL e il C  il SIMULA 67, l’ALGOL 68, ma soprattutto il PASCAL e il C  Negli anni '80 si ha l'affermarsi dei linguaggi Object-Oriented (OO): C++Visual BASICJava, C#  C++, Visual BASIC, Java, C#

7 7  Non è legata ad un linguaggio, anche se alcuni linguaggi sono ideali per essere abbinati ad una specifica tecnica di programmazione  Esistono tre tecniche: a)Programmazione NON Strutturata, che produce lo Spaghetti Code b)Programmazione Strutturata: Sequenza, Selezione, Ripetizione c)Programmazione ad Oggetti: Classe, Oggetto, Metodo La Tecnica di Programmazione

8 8  Il programma scritto in un qualunque linguaggio deve essere tradotto in linguaggio binario  Esistono due soluzioni: Interpretazione Compilazione L’Esecuzione dei Programmi

9 9  Funzionamento di un interprete: Preleva un’istruzione I del programma P scritto nel linguaggio L Decodifica I Traduce I in una serie di istruzioni in linguaggio macchina M 1, M 2, …, M n Esegue M 1, M 2, …, M n Passa all’istruzione successiva di P fino a quando non si sia raggiunta una istruzione di terminazione L’Interpretazione

10 10  I codici sorgente ed oggetto possono essere suddivisi in più file, il codice eseguibile di un programma risiede in un unico file File oggetto Libreria/e File oggetto File sorgente File oggetto File eseguibile Compilazione Link Lo sviluppo dei programmi basato sulla Compilazione

11 11 Le Funzioni di Libreria  In molti linguaggi (quali il C), molte operazioni vengono delegate a delle librerie  Le funzioni sono divise in gruppi, quali I/O, gestione della memoria, operazioni matematiche e manipolazione di stringhe file header  Per ogni gruppo di funzioni esiste un file sorgente, chiamato file header, contenente le informazioni necessarie per utilizzare le funzioni (Dichiarazione costanti, funzioni, parametri delle funzioni, etc.) stdio.h  I nomi dei file header terminano, per convenzione, con l’estensione “.h” (ad es., stdio.h è il file header dello standard I/O nel linguaggio C)

12 12 funzioni  Un file sorgente contiene un main e un insieme di routine, chiamate funzioni, ognuna delle quali risolve una piccola parte del problema di programmazione  Un file sorgente può contenere chiamate a funzioni di libreria e chiamate a funzioni contenute in altri file sorgenti  Il compilatore è esso stesso un programma (o un gruppo di programmi) che deve essere eseguito  Durante la compilazione avviene: Controllo del codice sorgente da parte di un preprocessore: interpretare speciali direttive di precompilazione, Controllo di eventuali errori sintattici (NON LOGICI), Produzione di un file in codice Assembly, Trasformazione del file in codice Assembly in un altro file in codice OGGETTO (Macchina): estensione.obj La compilazione dei file sorgente

13 13  Il linker è generalmente un programma distinto dal compilatore: in alcuni ambienti il programma di link deve essere lanciato separatamente  Il Linker fa in modo che:  i riferimenti tra diversi file oggetto e con le librerie vengano risolti  i file oggetto creati dal compilatore vengano trasformati in un unico file eseguibile, al quale vengano associate le librerie necessarie all’esecuzione programma eseguibile, che può essere caricato in memoria  Il risultato prodotto dal Linker è un programma eseguibile, che può essere caricato in memoria Il link

14 14  Il Caricamento di un programma in memoria, avviene nel momento in cui l’utente richiede la sua esecuzione loading  Durante la fase di caricamento (o loading ), il programma eseguibile viene caricato nella memoria del calcolatore;  Le Fasi di Compilazione, Linker e Loading sono separate (anche temporalmente) Attenzione: l’uso dei compilatori crea false impressioni ! La Fase di Caricamento

15 15  Molte idee basilari del C derivano dal linguaggio BCDL e linguaggio B  Nel 1978 Kernighan e Ritchie pubblicano “The C Programming Language”  Nel 1983 l’American National Standards Institute (ANSI) ha iniziato i lavori per la definizione dell’ANSI C  Nel 1988 nasce l’ANSI C Esempio – Linguaggio C

16 16  Per includere un file header in un programma in linguaggio C, occorre inserire nel codice sorgente:  include preprocessore  La direttiva  include è rivolta al preprocessore  Si chiama: Direttiva di Precompilazione  Esempioprintf()  Esempio: Per utilizzare printf(), che permette di visualizzare dati su terminale, è necessario inserire nel sorgente la direttiva di precompilazione:  include Esempio – Linguaggio C

17 17 Esempio – Linguaggio C  include main() { printf(“Salve, mondo\n”); } main richiama la funzione di libreria printf per stampare la sequenza di caratteri specificata; \n indica il new line Include la libreria standard di I/O Definisce una funzione main che non riceve alcun valore come argomento


Scaricare ppt "1 Concetti Fondamentali sulla Programmazione  Cosa Significa Programmare  Linguaggi di Programmazione  Lo sviluppo dei programmi: tecniche di programmazione."

Presentazioni simili


Annunci Google