Laboratorio di informatica 1 6 marzo 2002 Laboratorio di informatica 1 (Programmazione)
Laboratorio di Informatica 1 (Programmazione) Mercoledì 11:30 –13:15 , (14:30-15:15) 11:30 –13:00 Giovedì 9:30 –11:15 9:45 –11:15 Aula T8
Docenti Dora Giammarresi Miriam Di Ianni (esercizi e progetti) Ricevimento: orario da definire + su appuntamento Ufficio 2002 (piano terra, 2o dente) e-mail: giammarr@mat.uniroma2.it Miriam Di Ianni (esercizi e progetti) e-mail: diianni@mat.uniroma2.it
Contenuto del corso Programmazione strutturata Il linguaggio C Approccio strutturato e disciplinato alla stesura di programmi Il linguaggio C
Testo consigliato H.M.Deitel , P.J.Deitel C corso completo di programmazione Apogeo
+ (in ciascuno dei modi scelti) Esame Due prove in itinere (meta’ e fine corso) prima: programma svolto fino a quella data seconda: tutto il programma Due appelli a fine corso tutto il programma + (in ciascuno dei modi scelti) Progetto modalita’ ancora da definire
Per passare l’esame… (Studiare) e…. … programmare, programmare, programmare, programmare, programmare, programmare, programmare, programmare, programmare, programmare, programmare, programmae, programmare, programmare, programmare,……
Pagina WEB Consultarla spesso! Programma del corso, testo consigliato Segui puntatore dalla pagina del corso di laurea ….. oppure www.mat.uniroma2.it\~giammarr\Teaching\Programmazione\ index.html Programma del corso, testo consigliato Lezioni svolte, esercizi Codice dei programmi (“disco” con tutti i programmi del libro) Informazioni esami Compilatori Avvisi vari Consultarla spesso!
Compilatore Dev-C++ Requisiti di sistema per Dev-C++ Sistema operativo Microsoft Windows 95, 98, ME, NT 4, o 2000 RAM: 8 Mb (consigliati 32 Mb) CPU: Intel Pentium 100 MHz o compatibile (consigliati 233 MHz) Spazio su disco: 30 Mb liberi (consigliati 45 Mb) Scaricare Dev-C++ da Internet ftp://ftp.sunet.se/pub/simtelnet/win95/prog/devcpp_4.zip Istruzioni dettagliate sulla pagina WEB del corso ! Consiglio: seguire le “scorciatoie”….
Osservazioni generali su C Chiarezza dei programmi Programmi “intricati” sono difficili da leggere, capire, correggere, collaudare, modificare. (nessun motivo di orgoglio….) C e’ un linguaggio “portabile” Programmi possono essere eseguiti su computer diversi Tuttavia la portabilita’ e’ sempre sfuggente…. Vari dettagli non verranno trattati…. Per dettagli tecnici Leggere il manuale del compilatore usato Leggere il manuale dell’ ANSI C Leggere il libro di Kernigan e Ritchie
Breve storia del C C Standard C Sviluppato da Ritchie a partire da due precendenti linguaggi, BCPL e B Usato per sviluppare UNIX Adesso, molti sistemi operativi sono scritti in C or C++ Hardware indipedente (portabile) Alla fine degli anni ‘70 si e’ trasformato nel " C tradizionale “ [Kerninghan, Rich ,Il linguaggio di programmazione C , 1978-(88)] Standard C Esistevano diverse (leggere) variazioni del C, spesso non compatibili Fu incaricato un comitato che creasse una definizione del C che fosse “non ambigua, indipendente dalla macchina“ Standard creato nel 1989, aggiornato nel 1999
Le Librerie del C Programmi C sono composti da pezzi/moduli chiamati funzioni Si possono creare delle proprie funzioni Vantaggi: si sa esattamente come funzionano Svantaggi: perdita di tempo Spesso si usano le funzioni delle librerie C … come “mattoni” Evitare di ri-inventare la ruota! Se la funzione esiste, in genere e’ meglio usare quella piuttosto che riscriversela… Le funzioni di libreria sono scritte bene e sono portabili
Ambiente Tipico C Fasi di un programma C: Edit Preprocess Compile Link Programma creato con un editor e memorizzato Loader Memoria Compiler Editor Preprocessor Linker . Disk CPU Fasi di un programma C: Edit Preprocess Compile Link Load Execute Il programma preprocessore esegue il codice. Compilatore crea il codice oggetto e lo memorizza nel disco Linker collega il codice oggetto con le librerie, crea a.out (nome.exe) e lo memorizza sul disco Loader carica il programma in memoria. CPU esegue un’istruzione per volta, eventualmente memorizzando i nuovi dati ottenuti dall’esecuzione del programma
Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 Il primo programma in C */ 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( "Welcome to C!\n" ); 8 return 0; 9 } Commenti Testo racchiuso tra /* e */ é ignorato dal computer Si usano per descrivere i programmi
Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 Il primo programma in C */ 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( "Welcome to C!\n" ); 8 return 0; 9 } #include <stdio.h> Direttiva del preprocessore – dice di caricare il contenuto di un certo file <stdio.h> consente le operazioni standard di input/output
Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 Il primo programma in C */ 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( "Welcome to C!\n" ); 8 return 0; 9 } int main() Un programma C++ contiene una o piu’ funzioni, una delle quali deve essere main Le parentesi si usano per indicare una funzione int significa che main “restituisce" un valore intero Parentesi { } indicano un blocco Il corpo di tutte le funzioni deve stare tra parentesi { }.
Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 Il primo programma in C */ 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( "Welcome to C!\n" ); 8 return 0; 9 } printf( "Welcome to C!\n" ); E’ una istruzione: indica una azione In particolare: stampa la stringa di caratteri tra “ ” Tutte le istruzioni terminano con ; \ carattere di escape In particolare \n carattere newline
Linker Quando una funzione viene chiamata, il Linker la cerca nella libreria La inserisce nel programma oggetto Se il nome della funzione e' scritto male, il Linker segnalera' errore perche' non riuscira' a trovarla nella libreria.
Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 Il primo programma in C */ 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( "Welcome to C!\n" ); 8 return 0; 9 } return 0; modo di terminare una funzione in questo caso: il programma finisce normalmente
Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 Il primo programma in C */ 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( "Welcome to C!\n" ); 8 return 0; 9 } Parentesi } Indica che il main e' finito
Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 Il primo programma in C */ 3 #include <stdio.h> 4 5 int main() 6 { 7 printf( "Welcome to C!\n" ); 8 return 0; 9 } Compilo ed eseguo. Output: Welcome to C!
Esercizi: Istallare il compilatore! Compilare (ed eseguire) i programmi visti a lezione