350 likes | 517 Vues
Algoritmi e basi del C Struttura di un programma. Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014. Informazione: dato + significato…. Che giorno è oggi? 14 Marzo o anche… 14.3 o anche… 3.14. 14 Marzo. Compleanno di…. Labs…. Lunedì: 27
E N D
Algoritmi e basi del CStruttura di un programma Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 11 Marzo 2014
Informazione: dato + significato… Che giorno è oggi? 14 Marzo o anche… 14.3 o anche… 3.14
14 Marzo Compleanno di…
Labs… • Lunedì: 27 • Giovedì: 13
Feedback Sarebbe stato utile approfondire con altri esempi l'argomento sui diagrammi di flusso.
Ciao Mondo: stdio.h • Come prima cosa, dobbiamo includere le librerie necessarie al funzionamento del nostro programma. • La libreria stdio.h • Standard Input Output • Permette di utilizzare I comandi necessari per richiedere dati o visualizzare dei messaggi.
Ciao Mondo: main • Tutti i programmi in C contengono un elemento principale: • Il main • main contiene le istruzioni che verranno eseguite all’avvio del nostro programma
Ciao Mondo: main • La sequenza di istruzioni che caratterizzano il main sono racchiuse tra parentesi graffe • Tale blocco di istruzioni e’ anche noto come corpo • Ogni istruzione deve essere seguita da un punto e virgola
Ciao Mondo: printf • Stampa a video il mesaggio “Ciao Mondo!” • printf e’ contenuta in stdio.h • Il messaggio da stampare e’ contenuto tra “”
Ciao Mondo: printf • return e' un comando che ci permette di comunicare con il sistema ospite • In questo caso viene utilizzato per comunicare lo stato di terminazione del programma • 0 indica una terminazione corretta del nostro programma
Struttura di un programma C parte dichiarativa globale parte dichiarativa locale parte esecutiva inclusione librerie / per poter invocare funzioni utili (i/o, ...) / dichiarazione di variabili globali e funzioni int main ( ) { dichiarazione di variabili locali istruzione 1; / tutti i tipi di operazioni, e cioè: / istruzione 2; / istr. di assegnamento / istruzione 3; / istr. di input / output / istruzione 4; / istr. di controllo (condizionali, cicli) / ... istruzione N; } Ogni programma C deve contenere un modulo int main() {...}
Struttura di un programma C • Parte dichiarativa: contiene le dichiarazioni degli elementi del programma • Dati, ed eventualmente funzioni (ma solo nella parte globale) • Parte esecutiva: contiene leistruzioni da eseguire, che ricadono nelle categorie: • Istruzioni di assegnamento () • Strutture di controllo: • Condizionali (if-then-else e switch) • Iterative, o cicli (while, do e for) • Istruzioni di Input/Output (printf, scanf, ...)
Istruzioni semplici e composte • Sequenze di istruzioni semplici • Ogni istruzione semplice termina con ; • ; è detto il “terminatore” dell’istruzione • Si possono raggruppare più istruzioni in sequenza tra { e } a costituire un blocco • Il blocco costituisce una “super-istruzione” • Non è necessario il ; dopo }, in quanto il blocco è già una istruzione • e non necessita del terminatore per diventarla
Variabili e assegnamenti Le variabili non sono altro che dei contenitori (aree di memoria) identificati da un nome univoco. Le variabili vengono definite da un tipo e da un nome.
Esecuzione degli assegnamenti • valutazione dell’espressione che compare a destra del simbolo = • il valore delle variabili che vi compaiono si trova memorizzato nelle celle corrispondenti, e da lì è letto • memorizzazione del risultato dell'espressione nella variabile a sinistra del simbolo =
Esempi di assegnamento x = 23;w = 'a';y = z;alfa = x + y;r3 = ( alfa * 43 – xgg ) * ( delta – 32 * j );x = x + 1; Abbreviazioni (operatori di assegnamento): a = a + 7; a = a * 5; a = a + 1; a = a - 1; a += 7; a *= 5;++a; --a; Istruzioni della forma variabile = variabileoperatoreespressione; si possono scrivere come: variabileoperatore = espressione;
Aritmetica (1/2) • Operatori aritmetici in C: • * per la moltiplicazione e / per la divisione • La divisione tra interi elimina il resto (quoziente): 13 / 5 è uguale a 2 • L’operatore modulo calcola il resto della divisione: 13 % 5 è uguale a 3 • Precedenza degli operatori: • Come in aritmetica, moltiplicazione e divisione hanno priorità su addizione e sottrazione • si usano le parentesi quando c’è ambiguità • Per esempio: la media aritmetica di a, b, c: a + b + c / 3 NO !!!! (a + b + c ) / 3 SI
Come interagiamo con “l’esterno”? • Input - Output • printf viene utiizzata per fornire un output del programma a video • scanf viene utilizzato per fornire degli input, e.g. da tastiera, al nostro programma
Mostra caratteri • Problema • Si scriva un programma che richieda l’inserimento di un carattere e lo mostri a video
Inserimento dati • Problema • Richiedi all’utente la sua altezza in centrimentri e mostrala a video in metri • Pseudocodice • Scrivi “quanto sei alto?” • Leggi altezzacm • Altezzam = alteccacm/100 • Scrivi “sei alto: altezzam”
Pseudocodice vs Codice C • Pseudocodice • Scrivi “quanto sei alto?” • Leggi altezzacm • Altezzam = alteccacm/100 • Scrivi “sei alto: altezzam”
Soluzione corretta L’importanza dei tipi di dato
Tipi di dato in C • In C esistono diversi tipi di dato built-in, tra cui • int: numeri interi • float: numeri con virgola (singola precisione) • double: numeri con virgola (doppia precisione) • char: caratteri (sono interi che possono variare tra 0-255) • Inoltre il C fornisce anche la possibilità di definire dei nuovi tipi di dato
Problemi per casa… • Scrivere un programma che, letti due numeri, individua quello maggiore • Rappresentare in pseudocodice l’agoritmo che, letti 3 numeri, ne calcola il minimo comune multiplo
Fonti per lo studio + Credits • Fonti per lo studio • how to solve it, Poyla G • http://math.hawaii.edu/home/pdf/putnam/PolyaHowToSolveIt.pdf • Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill • Capitolo 3 • Introduzione ai sistemi informatici, D. Sciuto, G. Buonanno, L. Mari, 4a Ed, McGrawHill • Capitolo 3, 4 • The Art & Craft of Computing, S. Ceri, D. Mandrioli, L. Sbattella, Addison-Wesley • Capitolo 3