Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi ai soli fini didattici previa autorizzazione dell autore. E severamente vietata la riproduzione anche parziale e la vendita. 01/10/2008
Introduzione Linguaggio di programmazione ad alto livello (HLL) Sviluppato negli anni 70 (C standard ANSI) Molto diffuso e adatto ad un ampio spettro di applicazioni Scientifiche Gestionali Industriali (acquisizione dei dati, controllo dei processi) Informatiche (sw di base (SO Unix), strumenti (CAD), pacchetti applicativi) 2
Struttura di un programma C Un programma scritto in C è un file di testo strutturato in modo opportuno Il programma scritto in modo corretto può essere compilato: tradotto in linguaggio macchina Le fasi di compilazione ed esecuzione saranno approfondite durante le ore di laboratorio Imparare a programmare in C significa impararne la sintassi e la semantica per fare in modo che esso: Sia compilabile (verifica sintattica) Si comporti come atteso (verifica semantica) 3
Alcune proprietà del C È un linguaggio dichiarativo: L intenzione di utilizzare una variabile o una funzione deve essere dichiarata a priori È un linguaggio strutturato Fornisce i costrutti base per la definizione di sequenza, selezione ed iterazione È un linguaggio case sensitive: Discrimina tra caratteri maiuscoli e minuscole e.g., Main è diverso da main!! 4
Hello world! Il codice inizia qui #include <stdio.h> Parte dichiarativa L esecuzione inizia qui int main() { printf( Hello World ); Parte esecutiva } return 0; L esecuzione termina qui (è buona norma, nel main, indicare return 0 come ultima istruzione) 5
Direttiva include Le direttive: sono istruzioni particolari rivolte al compilatore iniziano con il carattere # La direttiva include indica l intenzione di utilizzo di una libreria esterna Esempio #include <stdio.h> richiede la libreria di gestione degli input e degli output (e.g., printf() e scanf(), ) #include <math.h> richiede la libreria con le principali funzioni matematiche (e.g., abs(), sin(), ) Una volta inclusa una libreria è possibile utilizzare tutte le funzioni definite al loro interno 6
main È una parola chiave e indica l inizio del programma vero e proprio Le istruzioni che seguono saranno quelle effettivamente eseguite dall elaboratore Le istruzioni che compongono il programma principale (il main appunto) sono racchiuse all interno di parentesi graffe { } 7
printf( Hello world! ); È una tipica istruzione Come tutte le istruzioni deve terminare con il carattere ; (punto e virgola) Permette la stampa a video dei caratteri racchiusi tra apici e inseriti all interno delle parentesi tonde Dettagli su input e output sono forniti nella lezione successiva 8
Risultato 9
Esempio #include <stdio.h> int main() { printf( 1 - Overture ); printf( 2-1921 ); } return 0; 10
Esempio #include <stdio.h> int main() { } printf( 1 - Overture\n ); printf( 2-1921\n ); return 0; 11
Struttura standard Un programma solitamente ha: Sezione di input iniziale Ricevo i dati da un utente Algoritmo Opero sui dati utilizzando anche le variabili di stato Sezione di output finale Trasmetto le informazioni ottenute all utente Questa è la struttura più semplice: Programma batch In un programma interattivo: Spesso i dati sono richiesti all utente anche durante l esecuzione dell algoritmo Risultati parziali possono anche essere trasmesse durante l esecuzione 12
Input e output L input e l output del programma possono essere ottenute: Dall utente finale attraverso tastiera e monitor Da file Al momento analizziamo solo il primo caso: La libreria <stdio.h> fornisce il supporto per la comunicazione con l utente finale Ci concentriamo su due funzioni: scanf (solitamente usato per l input) printf (solitamente usato per l output) 13
printf: sintassi printf(stringa di controllo, lista di variabili); stringa di controllo (racchiusa tra ), contiene: caratteri alfanumerici da stampare a video segnaposto: caratteri di conversione e/o di formato (preceduti dal simbolo %): utilizzati per interpretare i valori degli elementi da stampare. Es. d, f, c, caratteri di controllo della stampa: caratteri ASCII a cui non corrisponde alcun simbolo stampabile, hanno effetti di formato di stampa, come linea nuova (\n), tabulazione (\t), ecc lista di variabili è una lista di variabili separate da virgola: in egual numero ai segnaposto inseriti nella stringa di controllo nello stesso ordine in cui compaiono i segnaposto di tipo compatibile con il tipo di segnaposto individuato 14
printf: semantica È la chiamata alla funzione, che fa partire l attivazione del sottoprogramma associato Stampa i caratteri alfanumerici tra doppi apici e al posto dei segnaposto stampa il valore dell identificatore corrispondente nella lista da stampare I segnaposto posizionano il cursore nella posizione opportuna 15
scanf: sintassi scanf(stringa controllo, lista di variabili) stringa di controllo (racchiusa tra ), contiene: caratteri di conversione e/o di formato (preceduti dal simbolo %): utilizzati per interpretare i valori degli elementi letti da tastiera, che devono essere memorizzati nelle variabili. Es. d, f, c, lista di variabili è la la lista di variabili a cui associare il valore letto è sempre meglio richiedere l inserimento di una variabile per volta le variabili devono essere indicate tramite il loro indirizzo: &nome_var (passaggio per indirizzo) la lista è ordinata rispetto ai caratteri di conversione 16
Esempio #include <stdio.h> int main() { int r; float circ; scanf( %d, &r); circ= 2*3.14*r; printf( Circonferenza è %f, circ); } return 0; 17
scanf e messaggio di input Una scanf dovrebbe essere sempre accompagnata da una printf che visualizza un messaggio in cui è indicata la natura del dato richiesto Invece di scanf( %d, &r); È più oppurtuno utilizzare printf( Inserire il valore del raggio ); scanf( %d, &r); 18