Pr1: determinare il maggiore di n numeri interi 1 2 3 4 … Fondamenti di Informatica Prof. Vittoria de Nitto Personè n 1 Pr1: determinare il maggiore di n numeri interi … 1 2 3 4 P1. trovare il maggiore fra i primi 2 numeri; n P2. trovare il maggiore fra il terzo numero e il risultato del sottoproblema precedente; P3. trovare il maggiore fra il quarto numero e il risultato del sottoproblema precedente; P4. trovare il maggiore fra il quinto numero e il risultato del sottoproblema precedente; … Pn-1. trovare il maggiore fra l'ultimo numero e il risultato del sottoproblema precedente. Fondamenti di Informatica Prof. Vittoria de Nitto Personè 2 1. I passi sono eseguiti uno alla volta 2. Ogni passo è eseguito esattamente una volta: nessuno è ripetuto nessuno è omesso 3. L'ordine in cui i passi sono eseguiti è esattamente quello in cui sono scritti 4. La terminazione dell'ultimo passo implica la terminazione dell'algoritmo Fondamenti di Informatica Prof. Vittoria de Nitto Personè 3 SEQUENZA 1. I passi sono eseguiti uno alla volta 2. Ogni passo è eseguito esattamente una volta: nessuno è ripetuto nessuno è omesso 3. L'ordine in cui i passi sono eseguiti è esattamente quello in cui sono scritti 4. La terminazione dell'ultimo passo implica la terminazione dell'algoritmo Poco flessibile! Fondamenti di Informatica Prof. Vittoria de Nitto Personè 4 Pr1: determinare il maggiore di n numeri interi … 1 2 3 4 P1. trovare il maggiore fra i primi 2 numeri; n P2. trovare il maggiore fra il terzo numero e il risultato del sottoproblema precedente; P3. trovare il maggiore fra il quarto numero e il risultato del sottoproblema precedente; P4. trovare il maggiore fra il quinto numero e il risultato del sottoproblema precedente; Pi. … i+1-esimo e il risultato del sottoproblema precedente; … Pn-1. trovare il maggiore fra l'ultimo numero e il risultato del sottoproblema precedente. Fondamenti di Informatica Prof. Vittoria de Nitto Personè 5 P1. trovare il maggiore fra i primi 2 numeri; P2. finchè ci sono numeri da verificare ripetere il passo P3; P 3. trovare il maggiore fra il nuovo numero da esaminare e il più grande trovato in precedenza. ITERAZIONE . poter ripetere certi passi in un algoritmo un numero arbitrario di volte . per esprimere algoritmi la cui lunghezza varia in accordo alle “circostanze” Fondamenti di Informatica Prof. Vittoria de Nitto Personè 6 P1. trovare il maggiore fra i primi 2 numeri; P2. finchè ci sonoCONDIZIONE numeri da verificare ripetere il passo P3; AZIONE P 3. trovare il maggiore fra il nuovo numero da esaminare e il più grande trovato in precedenza. ITERAZIONE . poter ripetere certi passi in un algoritmo un numero arbitrario di volte . per esprimere algoritmi la cui lunghezza varia in accordo alle “circostanze” definita indefinita descrivere un processo di durata indeterminata mediante un algoritmo di lunghezza finita Fondamenti di Informatica Prof. Vittoria de Nitto Personè 7 Pr2: determinare il maggiore fra due numeri interi x e y P1. determinare la differenza δ fra x e y P2. se δ >0 allora la soluzione è x altrimenti la soluzione è y. Fondamenti di Informatica Prof. Vittoria de Nitto Personè 8 Pr2: determinare il maggiore fra due numeri interi x e y P1. determinare la differenza δ fra x e y P2. se δcondizione >0 allora la soluzione azione1 è x altrimenti la soluzione azione2 è y. SELEZIONE . poter selezionare tra diversi cammini in un algoritmo a seconda delle “circostanze” Fondamenti di Informatica Prof. Vittoria de Nitto Personè 9 Scrivere un programma per il calcolo della media di due interi dati in ingresso cinque #include <iostream> using namespace std; int main () {int a, b; double media; cout <<"Questo programma calcola la media di due valori interi dati in ingresso;\n"; cout <<"scrivi i due interi:\n"; cin >>a >>b; media=a+b; media=media/2; cout <<"la loro media e':\n" <<media <<'\n'; return 0; Fondamenti di Informatica } Prof. Vittoria de Nitto Personè 10 #include <iostream.h> using namespace std; int main () {int a, b, c, d, e; double media; cout <<"Questo programma calcola la media di cinque valori interi dati in ingresso;\n"; cout <<"scrivi i cinque interi:\n"; cin >>a >>b >>c >>d >>e; media=a+b+c+d+e; media=media/5; cout <<"la loro media e':\n" <<media <<'\n'; return 0; } Fondamenti di Informatica Prof. Vittoria de Nitto Personè 11 #include <iostream> using namespace std; int main () {int a, N, i; double media=0; cout <<"Questo programma calcola la media di N valori interi dati in ingresso;\n"; cout <<"Quale e' il valore di N?\n"; cin >>N; i=N; finchè (i>0) condizione {cout <<"scrivi il prossimo intero:\n"; azione cin >>a; media=media+a; i=i-1;} media=media/N; cout <<"la loro media e':\n" <<media <<'\n'; return 0; } Fondamenti di Informatica Prof. Vittoria de Nitto Personè 12 SINTASSI while (espressione) comando; espressione deve essere una espressione logica SEMANTICA 1. valuta espressione 2. se espressione è vera - esegui comando - torna a 1 se espressione è falsa termina Fondamenti di Informatica Prof. Vittoria de Nitto Personè 13 …. int main () {int a, N, i; double media=0; cout <<"Questo programma calcola la media di N valori interi dati in ingresso;\n"; cout <<"Quale e' il valore di N?\n"; cin >>N; i=N; inizializzazione while (i>0) condizione {cout <<"scrivi il prossimo intero:\n"; cin >>a; media=media+a; i=i-1;} decremento (o incremento) media=media/N; cout <<"la loro media e':\n" <<media <<'\n'; return 0; Fondamenti di Informatica 14 Prof. Vittoria de Nitto Personè } … int main () {int a, N, i; double media=0; cout <<"Questo programma calcola la media di N valori interi dati in ingresso;\n"; cout <<"Quale e' il valore di N?\n"; cin >>N; for (i=N; i>0; i=i-1;) {cout <<"scrivi il prossimo intero:\n"; cin >>a; media=media+a; } media=media/N; cout <<"la loro media e':\n" <<media <<'\n'; return 0; Fondamenti di Informatica } Prof. Vittoria de Nitto Personè 15 SINTASSI for (assegnamento; condizione; espressione) comando; SEMANTICA for (nome=exp; exp1; exp2) comandoX; 1. 2. 3. inizializza la variab. di controllo tramite nome=exp; valuta exp1: se è vera si esegue comandoX; se è falsa il for termina; valuta exp2, torna a 2. Fondamenti di Informatica Prof. Vittoria de Nitto Personè 16 i=0; while (i<=8) {cout <<"Ciao! "; i=i+1;} for (i=0; i<=8; i=i+1) cout <<"Ciao! "; cout <<"Ciao! cout <<"Ciao! cout <<"Ciao! cout <<"Ciao! cout <<"Ciao! cout <<"Ciao! cout <<"Ciao! cout <<"Ciao! cout <<"Ciao! Fondamenti di Informatica Prof. Vittoria de Nitto Personè "; "; "; "; "; "; "; "; "; 17 8 ! i =0+1+2+3+4+5+6+7+8 i=0 sommatoria=sommatoria+0; sommatoria=sommatoria+1; sommatoria=0; sommatoria=sommatoria+2; for (i=0; i<=8; i=i+1) sommatoria=sommatoria+i; sommatoria=sommatoria+3; sommatoria=sommatoria+4; sommatoria=sommatoria+5; sommatoria=sommatoria+6; sommatoria=sommatoria+7; sommatoria=sommatoria+8; Fondamenti di Informatica Prof. Vittoria de Nitto Personè 18 SINTASSI espressione logica a) if (espressione) comando; b) if (espressione) comando1; else comando2; SEMANTICA a) 1. valuta espressione 2. se espressione è vera - esegui comando - termina se espressione è falsa termina b) 1. valuta espressione 2. se espressione è vera - esegui comando1 se espressione è falsa - esegui comando2 3. termina Fondamenti di Informatica Prof. Vittoria de Nitto Personè 19 if (e1) if (e2) comandox else comandoy ? if (e1) {if (e2) comandox} else comandoy oppure if (e1) {if (e2) comandox else comandoy} Fondamenti di Informatica Prof. Vittoria de Nitto Personè 20