6 marzo 2002 Laboratorio di informatica 1 (Programmazione) Laboratorio di Informatica 1 (Programmazione) Mercoledì 11:30 –13:15 11:30 –13:00 Giovedì Aula T8 9:30 –11:15 9:45 –11:15 , (14:30-15:15) Docenti Dora Giammarresi Ricevimento: orario da definire + su appuntamento Ufficio 2002 (piano terra, 2o dente) e-mail: [email protected] Miriam Di Ianni (esercizi e progetti) e-mail: [email protected] Contenuto del corso • Programmazione strutturata 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 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, progra programmare, programmare, programmare, programm programmare, programmare, programmare, programm programmare, programmare, programmare, programm programmare, programmare, programmare, programm programmare, programmare, programmare, programm programmare, programmare, programmare, programm programmare, programmare, programmare,…… Pagina WEB 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 – 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 Editor Programma creato con un editor e memorizzato Disk Fasi di un programma C: Preprocessor Il programma preprocessore esegue il codice. Disk 1. Edit Compiler Disk Linker Disk 2. Preprocess 3. Compile Compilatore crea il codice oggetto e lo memorizza nel disco Memoria 4. Link Loader 5. Load Disk Linker collega il codice oggetto con le librerie, crea a.out (nome.exe) e lo memorizza sul disco Loader carica il programma in memoria. 6. Execute .. .. .. Memoria CPU .. .. .. 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 3 4 5 6 7 8 9 Il primo programma in C */ #include <stdio.h> int main() { printf( "Welcome to C!\n" ); return 0; } • 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 3 4 5 6 7 8 9 Il primo programma in C */ #include <stdio.h> int main() { printf( "Welcome to C!\n" ); return 0; } • #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 3 4 5 6 7 8 9 Il primo programma in C */ #include <stdio.h> int main() { printf( "Welcome to C!\n" ); return 0; } •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 3 4 5 6 7 8 9 Il primo programma in C */ #include <stdio.h> int main() { printf( "Welcome to C!\n" ); return 0; } • 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 3 4 5 6 7 8 9 Il primo programma in C */ #include <stdio.h> int main() { printf( "Welcome to C!\n" ); return 0; } •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 3 4 5 6 7 8 9 Il primo programma in C */ #include <stdio.h> int main() { printf( "Welcome to C!\n" ); return 0; } • Parentesi } –Indica che il main e' finito Primo programma: Stampare una riga di testo 1 /* Fig. 2.1: fig02_01.c 2 3 4 5 6 7 8 9 Il primo programma in C */ #include <stdio.h> int main() { printf( "Welcome to C!\n" ); return 0; } Compilo ed eseguo. Output: Welcome to C! Esercizi: • Istallare il compilatore! • Compilare (ed eseguire) i programmi visti a lezione