1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
2 Controllo del flusso Il controllo del flusso è lesecuzione ordinata di una sequenza di istruzioni. Il controllo del flusso (che vediamo…) può essere: sequenziale esegue le istruzioni una alla volta nellordine in cui sono state scritte selezione (che abbiamo già visto…) esegue le istruzioni scelte tra almeno due possibilità iterazione esegue ripetutamente delle istruzioni finchè si verifica una certa condizione
3 Iterazione I costrutti di iterazione sono: while do-while for Un costrutto di iterazione ripete lesecuzione di un blocco di codice finché si verifica una determinata condizione data da unespressione booleana (che restituisce true quando la condizione è verificata e false in caso contrario)
4 Iterazione WHILE Il costrutto di iterazione while permette di eseguire ripetutamente un blocco di istruzioni while( ){ ; } ;... dove è lespressione booleana che valutata decide di iterare o meno lesecuzione del blocco di istruzioni definito da. Ogni volta che tutte le istruzioni di vengono eseguite, si valuta nuovamente e si decide se rieseguire. Non appena la valutazione di restituisce false, viene saltato, il controllo diventa sequenziale e viene eseguita listruzione successiva.
5 Iterazione WHILE Quindi: determina la terminazione delle iterazioni e quindi luscita dal ciclo while allinterno di ci deve essere qualche istruzione che, ad un certo punto, renda false e che interrompa quindi le iterazioni è possibile che non venga eseguito nemmeno una volta (quando la prima valutazione di è false)
6 Iterazione WHILE (esempi) Esempio 1: int x=1; while(x <= 10){ System.out.println(x); x++; } La stampa è: x++ è in questo caso listruzione che permette ad un certo punto di uscire dal ciclo while. Se non esistesse il numero delle iterazioni sarebbe infinito perché la condizione (x<=10) sarebbe sempre true
7 Iterazione WHILE (esempi) Esempio 2: int x=10; while(x > 0){ System.out.println(x); x--; } La stampa è:
8 Iterazione WHILE (esempi) Esempio 3: int num=1; int somma=0; while(num <= 5){ somma=somma+num; num++; } System.out.println(somma); La stampa è: 15 Questo codice esegue la somma degli interi da 1 a
9 Iterazione WHILE (esempi) Esempio 4: int num=6; int somma=0; while(num <= 5){ somma=somma+num; num++; } System.out.println(somma); La stampa è: 0 La condizione (num<=5) è false in quanto num è inizializzata a 6. In tale caso il blocco di codice del ciclo while non viene mai eseguito e quindi il contenuto della variabile somma rimane 0 (valore di inizializzazione)
10 Iterazione DO-WHILE Il costrutto di iterazione do-while permette di eseguire ripetutamente un blocco di istruzioni do{ ; } while( ); ;... dove è lespressione booleana che valutata decide di reiterare o meno lesecuzione del blocco di istruzioni definito da. Ogni volta che tutte le istruzioni di vengono eseguite, si valuta nuovamente e si decide se rieseguire. Non appena la valutazione di restituisce false, viene saltato, il controllo diventa sequenziale e viene eseguita listruzione successiva.
11 Iterazione DO-WHILE Quindi: determina la terminazione delle iterazioni e quindi luscita dal ciclo do-while allinterno di ci deve essere qualche istruzione che, ad un certo punto, renda false e che interrompa quindi le iterazioni è eseguito almeno una volta in quanto la prima volta viene eseguito e solo successivamente viene valutata
12 Iterazione DO-WHILE (esempi) Esempio 1: int num=1; int somma=0; do{ somma=somma+num; num++; }while(num <= 5); System.out.println(somma); La stampa è: 15 Questo codice esegue la somma degli interi da 1 a
13 Iterazione DO-WHILE (esempi) Esempio 2: int num=6; int somma=0; do{ somma=somma+num; num++; }while(num <= 5); System.out.println(somma); La stampa è: 6 Listruzione somma=somma+num viene eseguita solo una volta e quindi il contenuto della variabile somma al momento della stampa a video è 6.
14 Iterazione FOR Il costrutto di iterazione for permette di eseguire ripetutamente un blocco di istruzioni for( ; ; ){ ; } ;... dove è lespressione booleana che valutata decide di reiterare o meno lesecuzione del blocco di istruzioni definito da. è listruzione che viene eseguita una sola volta allinizio (istruzione di inizializzazione) e (istruzione di aggiornamento) è listruzione che viene eseguita al termine di ogni iterazione del blocco e appena prima di rivalutare.
15 Iterazione FOR Il ciclo for funziona nel modo seguente: 1.viene eseguita 2.viene valutata : a)se è true viene eseguito b)se è false si esce dal ciclo for, il controllo ridiventa sequenziale e viene eseguita listruzione 3.al termine dellesecuzione di (punto 2a), viene eseguita listruzione 4.viene rivalutata e si ritorna al punto 2
16 Iterazione FOR Quindi: determina la terminazione delle iterazioni e quindi luscita dal ciclo for è listruzione che, ad un certo punto, rende false e che interrompe quindi le iterazioni è possibile che non venga eseguito nemmeno una volta (quando la prima valutazione di è false)
17 Iterazione FOR (esempi) Esempio 1: int x; for(x=1; x <= 10; x++){ System.out.println(x); } La stampa è: x++ è in questo caso listruzione di aggiornamento che permette ad un certo punto di uscire dal ciclo for x=1 è listruzione di inizializzazione
18 Iterazione FOR (esempi) Esempio 2: int x; for(x=10; x > 0; x--){ System.out.println(x); } La stampa è:
19 Iterazione FOR (esempi) Esempio 3: int num; int somma; for(num=1; num <= 5; num++){ somma=somma+num; } System.out.println(somma); La stampa è: 15 Questo codice esegue la somma degli interi da 1 a