problema: dato un insieme di numeri, compresi tra 1 e 100, stampare tutti i numeri compresi tra max e min dell’insieme e non presenti nell’insieme stesso formalizzazione dato I C {1, 2, 3, …, 99, 100} costruire J={n|n∈N, min(I)<n<max(I), n∉I} esempio: I={5, 7, 2} → J={3, 4, 6} decomposizione Fondamenti di Informatica Prof. Vittoria de Nitto Personè 1 decomposizione • leggere I e memorizzarlo • determinare minimo e massimo di I • costruire J • stampare J Fondamenti di Informatica Prof. Vittoria de Nitto Personè 2 Progettazione strutturata #include … … int main () { _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ _______ leggi I min-max I costruisci J stampa J } Fondamenti di Informatica Prof. Vittoria de Nitto Personè 3 Progettazione strutturata dichiarazione leggi_I ________ ________ ________ ________ dichiarazione costruisci_J ________ ________ ________ ________ dichiarazione min-max_I ________ ________ ________ ________ dichiarazione stampa_J ________ ________ ________ ________ int main () { "attiva" leggi_I "attiva" min-max_I "attiva" costruisci_J "attiva" stampa_J } Fondamenti di Informatica Prof. Vittoria de Nitto Personè 4 Progettazione strutturata VANTAGGI • realizzazione modulare dei programmi • riuso • leggibilità manutenibilità Fondamenti di Informatica Prof. Vittoria de Nitto Personè 5 Programmazione strutturata Un programma si dice strutturato se il flusso del controllo risulta evidente dalla struttura sintattica del testo del programma Fondamenti di Informatica Prof. Vittoria de Nitto Personè 6 Progettazione strutturata Definizione di funzione SINTASSI: tipo nome () {comando; … comando;} INTESTAZIONE CORPO int, double, char, … void Fondamenti di Informatica Prof. Vittoria de Nitto Personè 7 Progettazione strutturata REGOLE SEMANTICHE: • (dalla sintassi) una funzione ha un tipo oppure è void • una funzione con tipo deve restituire un valore di quel tipo mediante una istruzione return espressione; • una funzione deve essere dichiarata prima di essere "usata" Fondamenti di Informatica Prof. Vittoria de Nitto Personè void nome () {comando; … comando;} tipo nome () {comando; … return espressione; … comando;} 8 Progettazione strutturata A = { …, (nome, oggetto), ….} • cella di memoria • valore costante ... • riferimento a funzione ... Fondamenti di Informatica Prof. Vittoria de Nitto Personè 9 Progettazione strutturata Chiamata di funzione SINTASSI nome_fun () {comando; … comando;} CORPO SEMANTICA la sua chiamata corrisponde all’esecuzione del blocco che costituisce il corpo della funzione; Fondamenti di Informatica Prof. Vittoria de Nitto Personè 10 Progettazione strutturata MA 1. se la funzione è "void": la sua chiamata è un comando; 2. se la funzione ha un tipo: la sua chiamata restituisce un valore (del tipo specificato) mediante l’istruzione "return"; quindi la sua chiamata è una espressione oppure è un termine di una espressione; Fondamenti di Informatica Prof. Vittoria de Nitto Personè 11 1. se la funzione è "void": if (espressione) comando; nome_fun {comando;(); … comando;}; 2. se la funzione ha un tipo: int a, b, c; … expr () ; c = a + b; CORPO int expr () {comando; … return espressione; … comando;} Fondamenti di Informatica Prof. Vittoria de Nitto Personè 12 Abbiamo visto: • Concetto di ambiente: ambiente attivo, stato annidamento e mascheramento • Unità funzionali: sintassi e semantica Fondamenti di Informatica Prof. Vittoria de Nitto Personè 13 A = { …, (nome, oggetto), ….} • cella di memoria • valore costante ... • riferimento a funzione ... Fondamenti di Informatica Prof. Vittoria de Nitto Personè 14 int y; void P() { int x; . x=3; . } int main () { . P(); . . P(); { int x; . x=3; . } . . } Fondamenti di Informatica Prof. Vittoria de Nitto Personè { int x; . x=3; . } 15 Ambiente globale: {(a, 8), (x, l1), (P,→)} const int a=8; int x; x/ int l 1 void P() { const int a=3; AP: {(a, 3), (x, l1), (P,→)} . x=a-1; . } int main () { . P(); x=x-a; . } Fondamenti di Informatica Prof. Vittoria de Nitto Personè 16 const int a=8; int x; l1 -6 2 x/ int void P() { const int a=3; . x=a-1; . } int main ()ambiente attivo:Ag={(a, 8), (x, l1), (P,→)} { { const int a=3; AP: {(a, 3), (x, l1)} . . P(); x=a-1; x=x-a; ambiente attivo:A . g={(a, 8), (x, l1), (P,→)} . } } Fondamenti di Informatica Prof. Vittoria de Nitto Personè 17