Dipartimento di Ingegneria dell’Informazione Costruzione di una applicazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l’ambiente e il territorio Ambienti di programmazione Stefano Cagnoni e Monica Mordonini Si deve compilare il file (o i file) che contiene (contengono) il testo del programma (file sorgente, estensione .c) Il risultato sono uno o più file oggetto (estensione .o (Unix) o .obj (Windows)) si devono poi collegare (linking) i file oggetto l‟uno con l‟altro e con le librerie di sistema al fine di creare un unico file eseguibile (estensione .exe (Windows); nome a piacere o a.out se non si specifica il nome (Unix)) FI - Algoritmi e Programmazione Perché? 2 Librerie di sistema L‟elaboratore capisce solo il linguaggio macchina della CPU utilizzata il nostro programma, definito in un linguaggio di programmazione simile al linguaggio naturale, opera su una macchina astratta, „rivestita‟ del sistema operativo che controlla le periferiche (stampante, memoria di massa, ecc.) alcune istruzioni del linguaggio di programmazione sono dei brevi programmi forniti insieme al compilatore, che può inglobarli nel programma eseguibile nella fase di link FI - Algoritmi e Programmazione 3 Insieme di componenti software che consentono di interfacciarsi col sistema operativo, usare le risorse gestite da quest‟ultimo e realizzare alcune “istruzioni complesse” del linguaggio In pratica, insieme di funzioni „preconfezionate‟, utilizzabili all‟interno di un file sorgente FI - Algoritmi e Programmazione 4 1 Eseguire un programma Ambienti integrati di programmazione Una volta scritto, compilato (con il compilatore) e collegato (con il linker) lo si può eseguire sull‟elaboratore E se non funziona? Debugger: strumento in grado di eseguire passo passo il programma, mostrando i valori delle variabili e la loro evoluzione e tenendo traccia delle funzioni via via chiamate FI - Algoritmi e Programmazione Noi utilizzeremo il DevC++ presente nei laboratori di informatica base 5 Ambiente DevC++ FI - Algoritmi e Programmazione Il DevC++ è un ambiente integrato per la messa a punto di programmi in C e in C++. In questo ambiente è possibile creare, correggere, compilare, mandare in esecuzione e memorizzare su disco programmi C/C++. ambiente turbo C 6 Realizzazione di un programma Automatizzano la procedura di compilazione e linking dei file Possono lanciare il programma sulla macchina e visualizzarne l‟output a video Incorporano le funzioni di debug 7 Apertura della finestra di editor Scrittura del programma e suo salvataggio Compilazione del programma (success, warnings, errors) Esecuzione del programma (run) L‟input e l‟output dei dati avvengono in una apposita finestra Creazione di una versione eseguibile del programma esegui: viene creato un .exe nella cartella corrente ambiente turbo C 8 2 Istruzioni di I/O: printf() Istruzioni di I/O: printf() printf(stringa di formato [,lista di espressioni]) printf (“Questa è una frase di prova\n”); per visualizzare dati sullo standard output (monitor) lista di espressioni espressione {,espressione} sono le espressioni il cui valore deve essere visualizzato stringa di formato: contiene i caratteri da visualizzare ed i simboli di formato che rappresentano i valori delle espressioni da visualizzare, specificate nella lista di espressioni: %d per la visualizzazione di un numero intero %f per la visualizzazione di un numero reale %c per la visualizzazione di un carattere %s per la visualizzazione di una stringa ambiente turbo C 9 Istruzioni di I/O: scanf() consente la lettura di dati dallo standard input e la loro assegnazione alle variabili di cui si specificano gli indirizzi lista indirizzi di variabili indirizzo {,indirizzo} indirizzo &variabile stringa di formato come per printf Esempio scanf (“%d %f %c”, &n, &x, &c); ambiente turbo C %d e %d risulta: printf (“Il codice ASCII %d\nviene visualizzato come %c\n”,61,61); Quando viene eseguita produce il seguente output: Il codice ASCII 61 viene visualizzato come A ambiente turbo C 10 Istruzioni di I/O: printf() e scanf() scanf (stringa di formato , lista indirizzi di variabili) printf (“La somma di %d\n”, m, n, m+n); 11 printf (“Inserisci un intero, un float e un carattere: \n”); scanf (“%d %f %c”, &n, &x, &c); printf (“Adesso n vale: %d \n”, n); printf (“ x vale: %f \n”, x); printf (“ c è il carattere %c”, c); printf (“e ha %d come codice ASCII \n”, c); Inserisci un intero, un float e un carattere: 12 3.14 A (dati che si suppone vengano inseriti) Adesso n vale 12 x vale 3.14 c è il carattere A e ha 61 come codice ASCII ambiente turbo C 12 3