i comandi if while e - cs.unibo.itlaneve/html/lez3-if-while-for.pdf · 2 argomenti (savitch,...
TRANSCRIPT
![Page 1: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/1.jpg)
1
I COMANDI IF, WHILE E FOR
Cosimo Laneve
![Page 2: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/2.jpg)
2
ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3)
![Page 3: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/3.jpg)
2
ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3)
1. i comandi if-then-else e if-then
![Page 4: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/4.jpg)
2
ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3)
1. i comandi if-then-else e if-then
2. il comando while
![Page 5: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/5.jpg)
2
ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3)
1. i comandi if-then-else e if-then
2. il comando while
3. il comando for
![Page 6: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/6.jpg)
2
ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3)
1. i comandi if-then-else e if-then
2. il comando while
3. il comando for
4. esempi/esercizi
![Page 7: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/7.jpg)
3
CASO DI STUDIO: TIPOLOGIA DI CARATTERE
![Page 8: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/8.jpg)
3
CASO DI STUDIO: TIPOLOGIA DI CARATTERE
scrivere un programma che prende in input un carattere e stampa
“carattere numerico” se è una cifra“simbolo” altrimenti
![Page 9: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/9.jpg)
3
CASO DI STUDIO: TIPOLOGIA DI CARATTERE
scrivere un programma che prende in input un carattere e stampa
“carattere numerico” se è una cifra“simbolo” altrimenti
algoritmo:
![Page 10: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/10.jpg)
3
CASO DI STUDIO: TIPOLOGIA DI CARATTERE
scrivere un programma che prende in input un carattere e stampa
“carattere numerico” se è una cifra“simbolo” altrimenti
algoritmo: 1. prendere in input un carattere
![Page 11: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/11.jpg)
3
CASO DI STUDIO: TIPOLOGIA DI CARATTERE
scrivere un programma che prende in input un carattere e stampa
“carattere numerico” se è una cifra“simbolo” altrimenti
algoritmo: 1. prendere in input un carattere2. se il carattere è compreso tra '0' e '9' allora stampa
“carattere numerico”
![Page 12: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/12.jpg)
3
CASO DI STUDIO: TIPOLOGIA DI CARATTERE
scrivere un programma che prende in input un carattere e stampa
“carattere numerico” se è una cifra“simbolo” altrimenti
algoritmo: 1. prendere in input un carattere2. se il carattere è compreso tra '0' e '9' allora stampa
“carattere numerico”3. altrimenti stampa “simbolo”
![Page 13: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/13.jpg)
4
COMANDI CONDIZIONALI/IF-THEN-ELSE
![Page 14: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/14.jpg)
4
COMANDI CONDIZIONALI/IF-THEN-ELSE
permette di effettuare una scelta tra diversi comandi alternativi da eseguire
![Page 15: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/15.jpg)
4
COMANDI CONDIZIONALI/IF-THEN-ELSE
permette di effettuare una scelta tra diversi comandi alternativi da eseguire• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
![Page 16: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/16.jpg)
4
COMANDI CONDIZIONALI/IF-THEN-ELSE
permette di effettuare una scelta tra diversi comandi alternativi da eseguire• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
sintassi: if (condition) statementT else statementF
![Page 17: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/17.jpg)
4
COMANDI CONDIZIONALI/IF-THEN-ELSE
permette di effettuare una scelta tra diversi comandi alternativi da eseguire• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
sintassi: if (condition) statementT else statementF
ramo then
![Page 18: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/18.jpg)
4
COMANDI CONDIZIONALI/IF-THEN-ELSE
permette di effettuare una scelta tra diversi comandi alternativi da eseguire• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
sintassi: if (condition) statementT else statementF
ramo then ramo else
![Page 19: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/19.jpg)
4
COMANDI CONDIZIONALI/IF-THEN-ELSE
permette di effettuare una scelta tra diversi comandi alternativi da eseguire• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
sintassi: if (condition) statementT else statementF
esempio: if ((x >= '0') && (x <= ‘9'))
cout << "carattere numerico" ;
else cout << "simbolo" ;
ramo then ramo else
![Page 20: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/20.jpg)
COMANDI CONDIZIONALI/IF-THEN-ELSE
![Page 21: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/21.jpg)
semantica: if (condition) statementT else statementF
COMANDI CONDIZIONALI/IF-THEN-ELSE
![Page 22: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/22.jpg)
semantica: if (condition) statementT else statementF
1. valuta la condizione
COMANDI CONDIZIONALI/IF-THEN-ELSE
condition
![Page 23: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/23.jpg)
semantica: if (condition) statementT else statementF
1. valuta la condizione2. se il risultato è true esegue l’istruzione che segue la
condizione (ramo then)
COMANDI CONDIZIONALI/IF-THEN-ELSE
conditiontrue
statementT
![Page 24: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/24.jpg)
semantica: if (condition) statementT else statementF
1. valuta la condizione2. se il risultato è true esegue l’istruzione che segue la
condizione (ramo then)3. se il risultato è false esegue l’istruzione che segue la
parola else (ramo else)
COMANDI CONDIZIONALI/IF-THEN-ELSE
conditiontrue false
statementT statementF
![Page 25: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/25.jpg)
CONDIZIONI
![Page 26: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/26.jpg)
CONDIZIONI
operatori relazionali:< (minore di) > (maggiore di) <= (minore o uguale a) >= (maggiore o uguale a)
![Page 27: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/27.jpg)
CONDIZIONI
operatori relazionali:< (minore di) > (maggiore di) <= (minore o uguale a) >= (maggiore o uguale a)
operatori di uguaglianza:== (uguale a) != (diverso da)
![Page 28: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/28.jpg)
CONDIZIONI
operatori relazionali:< (minore di) > (maggiore di) <= (minore o uguale a) >= (maggiore o uguale a)
operatori di uguaglianza:== (uguale a) != (diverso da)
operatori logici: && (and) || (or) ! (not)
![Page 29: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/29.jpg)
CONDIZIONI
operatori relazionali:< (minore di) > (maggiore di) <= (minore o uguale a) >= (maggiore o uguale a)
operatori di uguaglianza:== (uguale a) != (diverso da)
operatori logici: && (and) || (or) ! (not)
tabella di verità di &&
op1 op2 op1 && op2
false false falsefalse true falsetrue false falsetrue true true
![Page 30: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/30.jpg)
CONDIZIONI
operatori relazionali:< (minore di) > (maggiore di) <= (minore o uguale a) >= (maggiore o uguale a)
operatori di uguaglianza:== (uguale a) != (diverso da)
operatori logici: && (and) || (or) ! (not)
tabella di verità di &&
op1 op2 op1 && op2
false false falsefalse true falsetrue false falsetrue true true
tabella di verità di ||
op1 op2 op1 || op2
false false falsefalse true truetrue false truetrue true true
![Page 31: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/31.jpg)
CONDIZIONI
operatori relazionali:< (minore di) > (maggiore di) <= (minore o uguale a) >= (maggiore o uguale a)
operatori di uguaglianza:== (uguale a) != (diverso da)
operatori logici: && (and) || (or) ! (not)
tabella di verità di &&
op1 op2 op1 && op2
false false falsefalse true falsetrue false falsetrue true true
tabella di verità di ||
op1 op2 op1 || op2
false false falsefalse true truetrue false truetrue true true
tabella di verità di !
op1 !op1
false truetrue false
![Page 32: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/32.jpg)
CONDIZIONI - PROBLEMI
![Page 33: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/33.jpg)
CONDIZIONI - PROBLEMI
• la seguente espressione esprime la condizione “x e' compreso tra min e max”?
min <= x <= max
![Page 34: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/34.jpg)
CONDIZIONI - PROBLEMI
• la seguente espressione esprime la condizione “x e' compreso tra min e max”?
min <= x <= max
• la seguente espressione esprime la condizione “x e y sono maggiori di z”?
x && y > z
![Page 35: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/35.jpg)
CONDIZIONI - PROBLEMI
• la seguente espressione esprime la condizione “x e' compreso tra min e max”?
min <= x <= max
• la seguente espressione esprime la condizione “x e y sono maggiori di z”?
x && y > z
• la seguente espressione esprime la condizione “x è uguale a 1.0 oppure a 3.0” ?
x == 1.0 || 3.0
![Page 36: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/36.jpg)
CONDIZIONI - COMPLEMENTO
![Page 37: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/37.jpg)
CONDIZIONI - COMPLEMENTO• il complemento (!) di una condizione formata da un solo
operatore relazionale (o di uguaglianza) può essere effettuato cambiando l’operatore:
- !(x==y) equivale a x!=y- !(x <= y) equivale a x > y
![Page 38: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/38.jpg)
CONDIZIONI - COMPLEMENTO• il complemento (!) di una condizione formata da un solo
operatore relazionale (o di uguaglianza) può essere effettuato cambiando l’operatore:
- !(x==y) equivale a x!=y- !(x <= y) equivale a x > y
• il complemento di condizioni con && e || si ottiene usando le leggi di De Morgan:
- !(expr1 && expr2) equivale a !expr1 || !expr2- !(expr1 || expr2) equivale a !expr1 && !expr2
![Page 39: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/39.jpg)
CONDIZIONI - COMPLEMENTO• il complemento (!) di una condizione formata da un solo
operatore relazionale (o di uguaglianza) può essere effettuato cambiando l’operatore:
- !(x==y) equivale a x!=y- !(x <= y) equivale a x > y
• il complemento di condizioni con && e || si ottiene usando le leggi di De Morgan:
- !(expr1 && expr2) equivale a !expr1 || !expr2- !(expr1 || expr2) equivale a !expr1 && !expr2
• l’operatore ! può rendere le espressioni difficili da comprendere: usarlo solamente quando è necessario!
![Page 40: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/40.jpg)
9
LA SEQUENZA DI COMANDI
![Page 41: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/41.jpg)
9
LA SEQUENZA DI COMANDIun comando è la combinazione di singoli comandi in un’unica struttura logica- assegnamento- sequenza- condizionale- iterazione
![Page 42: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/42.jpg)
9
LA SEQUENZA DI COMANDIun comando è la combinazione di singoli comandi in un’unica struttura logica- assegnamento- sequenza- condizionale- iterazione
sequenza di comandi: gruppo di istruzioni racchiuse tra graffe ed eseguite sequenzialmente
{ statement-1 ;statement-2 ;...statement-n ;
}
il controllo passa da statement-i a statement-(i+1) quando statement-i termina
![Page 43: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/43.jpg)
9
LA SEQUENZA DI COMANDIun comando è la combinazione di singoli comandi in un’unica struttura logica- assegnamento- sequenza- condizionale- iterazione
sequenza di comandi: gruppo di istruzioni racchiuse tra graffe ed eseguite sequenzialmente
{ statement-1 ;statement-2 ;...statement-n ;
}
il controllo passa da statement-i a statement-(i+1) quando statement-i termina
le parentesi graffe consentono il
raggruppamento
![Page 44: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/44.jpg)
10
SEQUENZA DI COMANDI E IF
![Page 45: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/45.jpg)
10
SEQUENZA DI COMANDI E IF
è possibile scrivereif (condition) {
statement1. . .statementm
} else { statement1 . . .statementn
}
![Page 46: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/46.jpg)
10
SEQUENZA DI COMANDI E IF
è possibile scrivereif (condition) {
statement1. . .statementm
} else { statement1 . . .statementn
}
il cui significato è:
![Page 47: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/47.jpg)
10
SEQUENZA DI COMANDI E IF
è possibile scrivereif (condition) {
statement1. . .statementm
} else { statement1 . . .statementn
}
il cui significato è:- se la condizione è vera allora esegui la sequenza di comandi
nel ramo then
![Page 48: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/48.jpg)
10
SEQUENZA DI COMANDI E IF
è possibile scrivereif (condition) {
statement1. . .statementm
} else { statement1 . . .statementn
}
il cui significato è:- se la condizione è vera allora esegui la sequenza di comandi
nel ramo then- altrimenti esegui la sequenza di comandi nel ramo else
![Page 49: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/49.jpg)
IF: ESERCIZI1. qual e' il complemento di
(x>y) && (ch=='a' || ch=='b') ?2. scrivere un programma che prende in input due interi e restituisce true se sono uguali e false altrimenti
3. scrivere un programma che prende in input tre numeri e un carattere a scelta tra '-' e '/' e stampa in output una tabella con la differenza o il rapporto dei numeri a due a due
esempio: se i valori in input sono 2, 7, 3, e ' - ' stampa 2 7 3
2 0 -5 -1
7 5 0 4
3 1 -4 0
![Page 50: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/50.jpg)
12
COMANDI CONDIZIONALI/IF-THEN
![Page 51: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/51.jpg)
12
COMANDI CONDIZIONALI/IF-THEN
permette di effettuare una scelta tra un comando da eseguire e non far nulla• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
![Page 52: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/52.jpg)
12
COMANDI CONDIZIONALI/IF-THEN
permette di effettuare una scelta tra un comando da eseguire e non far nulla• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
sintassi: if (condition) statementT
![Page 53: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/53.jpg)
12
COMANDI CONDIZIONALI/IF-THEN
permette di effettuare una scelta tra un comando da eseguire e non far nulla• la scelta viene fatta calcolando il valore di una espressione
booleana, detta condizione
sintassi: if (condition) statementT
esempio: if (x != 0) cout << 25/x ;
![Page 54: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/54.jpg)
13
COMANDI CONDIZIONALI/IF-THEN
![Page 55: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/55.jpg)
13
COMANDI CONDIZIONALI/IF-THEN
semantica: if (condition) statementT
![Page 56: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/56.jpg)
13
COMANDI CONDIZIONALI/IF-THEN
semantica: if (condition) statementT
1. valuta la condizione tra parentesi
condition
![Page 57: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/57.jpg)
13
COMANDI CONDIZIONALI/IF-THEN
semantica: if (condition) statementT
1. valuta la condizione tra parentesi2. se il risultato è true esegue l’istruzione che segue la
condizione (ramo then)
condition
statementT
true
![Page 58: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/58.jpg)
13
COMANDI CONDIZIONALI/IF-THEN
semantica: if (condition) statementT
1. valuta la condizione tra parentesi2. se il risultato è true esegue l’istruzione che segue la
condizione (ramo then)
condition
statementT
true
![Page 59: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/59.jpg)
13
COMANDI CONDIZIONALI/IF-THEN
semantica: if (condition) statementT
1. valuta la condizione tra parentesi2. se il risultato è true esegue l’istruzione che segue la
condizione (ramo then)3. se il risultato è false va all’istruzione successiva
condition
statementT
true false
![Page 60: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/60.jpg)
14
COMANDI CONDIZIONALI/IF ANNIDATI
![Page 61: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/61.jpg)
14
COMANDI CONDIZIONALI/IF ANNIDATI comando if in cui statement
T ( o statementF ) è a sua volta un’istruzione if
- è utilizzata per codificare decisioni con più di due alternative
![Page 62: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/62.jpg)
14
COMANDI CONDIZIONALI/IF ANNIDATI comando if in cui statement
T ( o statementF ) è a sua volta un’istruzione if
- è utilizzata per codificare decisioni con più di due alternative
formato standard: if (condition1 ) statement
1
else if (condition2 ) statement
2 . . .
else if (condition
n ) statement
n
else statemente
![Page 63: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/63.jpg)
14
COMANDI CONDIZIONALI/IF ANNIDATI comando if in cui statement
T ( o statementF ) è a sua volta un’istruzione if
- è utilizzata per codificare decisioni con più di due alternative
formato standard: if (condition1 ) statement
1
else if (condition2 ) statement
2 . . .
else if (condition
n ) statement
n
else statemente
semantica: le condizioni vengono testate in sequenza, finchè non si trova una condizione vera• se viene trovata una condizione vera, viene eseguita l’istruzione corrispondente e il resto
dell’if a più alternative viene saltato• se nessuna condizione è vera, viene eseguita l’istruzione statement
e
![Page 64: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/64.jpg)
14
COMANDI CONDIZIONALI/IF ANNIDATI comando if in cui statement
T ( o statementF ) è a sua volta un’istruzione if
- è utilizzata per codificare decisioni con più di due alternative
formato standard: if (condition1 ) statement
1
else if (condition2 ) statement
2 . . .
else if (condition
n ) statement
n
else statemente
semantica: le condizioni vengono testate in sequenza, finchè non si trova una condizione vera• se viene trovata una condizione vera, viene eseguita l’istruzione corrispondente e il resto
dell’if a più alternative viene saltato• se nessuna condizione è vera, viene eseguita l’istruzione statement
e
esempio: if (x > 0) num_pos = num_pos + 1; else if (x < 0) num_neg = num_neg + 1; else num_zero = num_zero + 1;
![Page 65: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/65.jpg)
15
IF ANNIDATI E SEQUENZE DI IF
![Page 66: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/66.jpg)
15
IF ANNIDATI E SEQUENZE DI IFsequenze di if:
if (x > 0) num_pos = num_pos + 1; if (x < 0) num_neg = num_neg + 1;
if (x == 0) num_zero = num_zero + 1;
![Page 67: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/67.jpg)
15
IF ANNIDATI E SEQUENZE DI IFsequenze di if:
if (x > 0) num_pos = num_pos + 1; if (x < 0) num_neg = num_neg + 1;
if (x == 0) num_zero = num_zero + 1;
• meno leggibile (è più difficile capire che verrà eseguito uno solo dei tre assegnamenti per ogni valore di x)
![Page 68: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/68.jpg)
15
IF ANNIDATI E SEQUENZE DI IFsequenze di if:
if (x > 0) num_pos = num_pos + 1; if (x < 0) num_neg = num_neg + 1;
if (x == 0) num_zero = num_zero + 1;
• meno leggibile (è più difficile capire che verrà eseguito uno solo dei tre assegnamenti per ogni valore di x)
• meno efficiente (se x è positivo, si eseguono tutti e tre i confronti)
![Page 69: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/69.jpg)
15
IF ANNIDATI E SEQUENZE DI IFsequenze di if:
if (x > 0) num_pos = num_pos + 1; if (x < 0) num_neg = num_neg + 1;
if (x == 0) num_zero = num_zero + 1;
• meno leggibile (è più difficile capire che verrà eseguito uno solo dei tre assegnamenti per ogni valore di x)
• meno efficiente (se x è positivo, si eseguono tutti e tre i confronti)
• la semantica è differente: i comandi possono modificare il valore di x
![Page 70: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/70.jpg)
IF: TRAPPOLE
![Page 71: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/71.jpg)
IF: TRAPPOLE• tipici errori di programmazione (non di compilazione) legati all'if:
if (x=0)...
![Page 72: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/72.jpg)
IF: TRAPPOLE• tipici errori di programmazione (non di compilazione) legati all'if:
if (x=0)...
• errori nelle condizioni come quelli visti in precedenzax<=y<=z
![Page 73: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/73.jpg)
IF: TRAPPOLE• tipici errori di programmazione (non di compilazione) legati all'if:
if (x=0)...
• errori nelle condizioni come quelli visti in precedenzax<=y<=z
• associatività dell'ifif (cond1) com1;
if (cond2) com2; else com3;
![Page 74: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/74.jpg)
IF: TRAPPOLE• tipici errori di programmazione (non di compilazione) legati all'if:
if (x=0)...
• errori nelle condizioni come quelli visti in precedenzax<=y<=z
• associatività dell'ifif (cond1) com1;
if (cond2) com2; else com3;
provate a inserire questo tipo di errori per vedere cosa succede al programma
![Page 75: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/75.jpg)
17
ESERCIZI1. scrivere un “firewall” che prende in input 5 caratteri e stampa
solamente le lettere minuscole
2. scrivere un programma che prende 3 interi e stampa 1 se uno dei tre è divisore degli altri due, 0 altrimenti (fare due versioni: una con l’if e una senza)
3. scrivere un programma che simula una calcolatrice tascabile con le operazioni “+”, “-”, “*”, “/” e “%”; cioè prende un intero, uno dei simboli precedenti, e un altro intero e calcola il risultato dell’operazione relativa
4. scrivere un programma che prende 3 interi e li stampa in maniera ordinata
5. scrivere un programma che prende 4 interi e stampa l’intero tra i tre più vicino al valor medio
![Page 76: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/76.jpg)
18
COMANDI ITERATIVI
![Page 77: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/77.jpg)
18
COMANDI ITERATIVI
un problema molto usuale negli algoritmi/programmi è la ripetizione della stessa operazione tante volte
![Page 78: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/78.jpg)
18
COMANDI ITERATIVI
un problema molto usuale negli algoritmi/programmi è la ripetizione della stessa operazione tante volte
esempio: stampare 10 volte “ciao”
![Page 79: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/79.jpg)
18
COMANDI ITERATIVI
un problema molto usuale negli algoritmi/programmi è la ripetizione della stessa operazione tante volte
esempio: stampare 10 volte “ciao” int main(){
cout << "ciao" << endl ; cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ; cout << "ciao" << endl ; cout << "ciao" << endl ;return(0) ;
}
![Page 80: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/80.jpg)
18
COMANDI ITERATIVI
un problema molto usuale negli algoritmi/programmi è la ripetizione della stessa operazione tante volte
esempio: stampare 10 volte “ciao” int main(){
cout << "ciao" << endl ; cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ;cout << "ciao" << endl ; cout << "ciao" << endl ; cout << "ciao" << endl ;return(0) ;
}
. . . e se volete stampare “ciao” 100 volte?
![Page 81: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/81.jpg)
19
COMANDI ITERATIVI
![Page 82: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/82.jpg)
19
COMANDI ITERATIVI
esempio: stampare 10 volte “ciao”
![Page 83: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/83.jpg)
19
COMANDI ITERATIVI
esempio: stampare 10 volte “ciao”• usare i comandi iterativi
![Page 84: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/84.jpg)
19
COMANDI ITERATIVI
esempio: stampare 10 volte “ciao”• usare i comandi iterativi
int main(){int conta ;conta = 10 ;
ripeti_finche` (conta > 0) {cout << "ciao" << endl ; conta = conta - 1 ;
}return(0) ;
}
![Page 85: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/85.jpg)
19
COMANDI ITERATIVI
esempio: stampare 10 volte “ciao”• usare i comandi iterativi
int main(){int conta ;conta = 10 ;
ripeti_finche` (conta > 0) {cout << "ciao" << endl ; conta = conta - 1 ;
}return(0) ;
}
while
![Page 86: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/86.jpg)
19
COMANDI ITERATIVI
esempio: stampare 10 volte “ciao”• usare i comandi iterativi
int main(){int conta ;conta = 10 ;
ripeti_finche` (conta > 0) {cout << "ciao" << endl ; conta = conta - 1 ;
}return(0) ;
}
. . . e se volete stampare “ciao” 100 volte?
while
![Page 87: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/87.jpg)
19
COMANDI ITERATIVI
esempio: stampare 10 volte “ciao”• usare i comandi iterativi
int main(){int conta ;conta = 10 ;
ripeti_finche` (conta > 0) {cout << "ciao" << endl ; conta = conta - 1 ;
}return(0) ;
}
. . . e se volete stampare “ciao” 100 volte?
conta = 100 ;
while
![Page 88: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/88.jpg)
20
COMANDI ITERATIVI/WHILE
![Page 89: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/89.jpg)
20
COMANDI ITERATIVI/WHILEil comando while consente di ripetere un gruppo di comandi, detto corpo del ciclo- la scelta viene fatta calcolando il valore di una espressione
booleana, detta guardia del ciclo
![Page 90: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/90.jpg)
20
COMANDI ITERATIVI/WHILEil comando while consente di ripetere un gruppo di comandi, detto corpo del ciclo- la scelta viene fatta calcolando il valore di una espressione
booleana, detta guardia del ciclo
sintassi: while (condition) statement
- condition è la struttura decisionale per controllare il numero di iterazioni (guardia del ciclo)
- statement è il gruppo di istruzioni che vengono ripetute (corpo del ciclo)
![Page 91: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/91.jpg)
20
COMANDI ITERATIVI/WHILEil comando while consente di ripetere un gruppo di comandi, detto corpo del ciclo- la scelta viene fatta calcolando il valore di una espressione
booleana, detta guardia del ciclo
sintassi: while (condition) statement
- condition è la struttura decisionale per controllare il numero di iterazioni (guardia del ciclo)
- statement è il gruppo di istruzioni che vengono ripetute (corpo del ciclo)
esempio: while (x >= y) { x = x-y ; quoziente = quoziente+1 ;}
![Page 92: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/92.jpg)
21
COMANDI ITERATIVI/WHILE
![Page 93: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/93.jpg)
21
COMANDI ITERATIVI/WHILEsemantica: while (condition) statement
![Page 94: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/94.jpg)
21
COMANDI ITERATIVI/WHILEsemantica: while (condition) statement
1. valuta la guardia del ciclo
condition
![Page 95: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/95.jpg)
21
COMANDI ITERATIVI/WHILEsemantica: while (condition) statement
1. valuta la guardia del ciclo2. se il risultato è true esegue il corpo del ciclo e ritorna al
punto 1
conditiontrue
statementT
![Page 96: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/96.jpg)
21
COMANDI ITERATIVI/WHILEsemantica: while (condition) statement
1. valuta la guardia del ciclo2. se il risultato è true esegue il corpo del ciclo e ritorna al
punto 13. se il risultato è false il comando while termina (e si
esegue quello successivo)
conditiontrue false
statementT
![Page 97: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/97.jpg)
22
COMANDI ITERATIVI/WHILE/WHEELER
![Page 98: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/98.jpg)
il primo programma eseguito su un calcolatore e memorizzato in memoria (David Wheeler, Cambridge, May 6, 1949) [ riscritto in C++ ]
22
COMANDI ITERATIVI/WHILE/WHEELER
![Page 99: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/99.jpg)
il primo programma eseguito su un calcolatore e memorizzato in memoria (David Wheeler, Cambridge, May 6, 1949) [ riscritto in C++ ]
// calcola e stampa la tabella dei quadrati di 0-99
int main(){int i = 0;while (i<100) {
cout << i << '\t' << i*i << '\n' ;i = i+1 ;
}return(0) ;
}
22
COMANDI ITERATIVI/WHILE/WHEELER
![Page 100: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/100.jpg)
23
COMANDI ITERATIVI/WHILE
![Page 101: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/101.jpg)
il programma di Wheeler, come quello della stampa di “ciao”, sono esempi di cicli controllati da contatore
23
COMANDI ITERATIVI/WHILE
![Page 102: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/102.jpg)
il programma di Wheeler, come quello della stampa di “ciao”, sono esempi di cicli controllati da contatore
ciclo il cui numero di iterazioni è conosciuto prima dell’inizio dell’esecuzione del ciclo
23
COMANDI ITERATIVI/WHILE
![Page 103: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/103.jpg)
il programma di Wheeler, come quello della stampa di “ciao”, sono esempi di cicli controllati da contatore
ciclo il cui numero di iterazioni è conosciuto prima dell’inizio dell’esecuzione del ciclo
la ripetizione del ciclo è gestita da una variabile di controllo, il cui valore rappresenta un contatore
23
COMANDI ITERATIVI/WHILE
![Page 104: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/104.jpg)
il programma di Wheeler, come quello della stampa di “ciao”, sono esempi di cicli controllati da contatore
ciclo il cui numero di iterazioni è conosciuto prima dell’inizio dell’esecuzione del ciclo
la ripetizione del ciclo è gestita da una variabile di controllo, il cui valore rappresenta un contatore
formato: 1. inizializza la variabile_di_controllo ad un valore iniziale2. la condizione diventa variabile_di_controllo < valore finale3. esegue il corpo e alla fine del corpo incrementa/
decrementa la variabile_di_controllo23
COMANDI ITERATIVI/WHILE
![Page 105: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/105.jpg)
24
COMANDI ITERATIVI/WHILE/ESEMPIO
![Page 106: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/106.jpg)
24
COMANDI ITERATIVI/WHILE/ESEMPIO
scrivere un programma che prende un intero n, prende altri n interi e stampa la loro somma
![Page 107: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/107.jpg)
24
COMANDI ITERATIVI/WHILE/ESEMPIO
scrivere un programma che prende un intero n, prende altri n interi e stampa la loro somma
int main(){int res, n , val;res = 0 ;cin >> n ;while (n>0) {
cin >> val ;res = res + val ; n = n-1 ;
}cout << res ;return(0) ;
}
![Page 108: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/108.jpg)
25
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
![Page 109: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/109.jpg)
25
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition è false la prima volta che viene testata, lo statement non viene mai eseguito
![Page 110: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/110.jpg)
25
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition è false la prima volta che viene testata, lo statement non viene mai eseguitoesempio: while (false) cout << "Hello" ;
cout << "Hello" ;
![Page 111: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/111.jpg)
25
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition è false la prima volta che viene testata, lo statement non viene mai eseguitoesempio: while (false) cout << "Hello" ;
cout << "Hello" ;
stampa una sola volta "Hello" quindi è equivalente a cout << "Hello" ;
![Page 112: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/112.jpg)
25
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition è false la prima volta che viene testata, lo statement non viene mai eseguitoesempio: while (false) cout << "Hello" ;
cout << "Hello" ;
stampa una sola volta "Hello" quindi è equivalente a cout << "Hello" ;
se il corpo del while è eseguito, il valore della condizione può cambiare (perchè cambiano le variabili che vi occorrono)
![Page 113: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/113.jpg)
25
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition è false la prima volta che viene testata, lo statement non viene mai eseguitoesempio: while (false) cout << "Hello" ;
cout << "Hello" ;
stampa una sola volta "Hello" quindi è equivalente a cout << "Hello" ;
se il corpo del while è eseguito, il valore della condizione può cambiare (perchè cambiano le variabili che vi occorrono)esempio:
while (x < 10) { cout << "Hello" ; x = x+1 ;}
![Page 114: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/114.jpg)
26
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
![Page 115: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/115.jpg)
26
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition rimane sempre true l’iterazione non termina (ciclo infinito)
![Page 116: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/116.jpg)
26
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition rimane sempre true l’iterazione non termina (ciclo infinito)esempio: while (true) cout << "Hello" ;stampa una sequenza infinita di "Hello"
![Page 117: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/117.jpg)
26
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition rimane sempre true l’iterazione non termina (ciclo infinito)esempio: while (true) cout << "Hello" ;stampa una sequenza infinita di "Hello"
ogni iterazione deve contenere una istruzione che invalida la guardia del while
esempio: stampare i numeri dispari minori di 12while (x != 12){
cout << x << endl;x = x + 2;
}
![Page 118: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/118.jpg)
26
COMANDI ITERATIVI/WHILE/OSSERVAZIONI
nel comando while (condition) statement
se la condition rimane sempre true l’iterazione non termina (ciclo infinito)esempio: while (true) cout << "Hello" ;stampa una sequenza infinita di "Hello"
ogni iterazione deve contenere una istruzione che invalida la guardia del while
esempio: stampare i numeri dispari minori di 12while (x != 12){
cout << x << endl;x = x + 2;
}
meglio usare la condizione while (x < 12)
![Page 119: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/119.jpg)
27
ESERCIZI
1. scrivere un programma che prende un intero n, e calcola la somma dei numeri minori di n,
2. scrivere un programma che prende un intero n, e calcola il fattoriale di n (!0 =1 ; !n = 1*2*…*n)
3. scrivere un programma che prende n e ritorna la parte intera della radice quadrata di n
4. scrivere un programma che prende n e ritorna la parte intera del logaritmo in base 2 di n
5. scrivere un programma che prende n e la precisione x e ritorna la radice quadrata di n con precisione x cifre decimali
![Page 120: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/120.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI
![Page 121: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/121.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
![Page 122: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/122.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
![Page 123: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/123.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
algoritmo: usare tre contenitori
![Page 124: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/124.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
algoritmo: usare tre contenitori
n n+1 n+2
![Page 125: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/125.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1algoritmo: usare tre contenitori
n n+1 n+2
1
= 0
![Page 126: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/126.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1
algoritmo: usare tre contenitori
n n+1 n+2
1
= 1
1
= 0
![Page 127: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/127.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2
algoritmo: usare tre contenitori
n n+1 n+2
1
= 1
1
= 0
2
= 2
![Page 128: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/128.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2
algoritmo: usare tre contenitori
n n+1 n+2
1
= 1
1
= 0
2
= 2
![Page 129: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/129.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2
algoritmo: usare tre contenitori
n n+1 n+2
1
= 1
2
= 2
1
= 1
![Page 130: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/130.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
1
= 1
2
= 2
![Page 131: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/131.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
1
= 1
2
= 2
![Page 132: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/132.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3
algoritmo: usare tre contenitori
n n+1 n+2
1
= 1
2
= 2
3
= 3
![Page 133: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/133.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3
algoritmo: usare tre contenitori
n n+1 n+2
1
= 1
2
= 2
3
= 3
![Page 134: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/134.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
3
= 3
2
= 2
![Page 135: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/135.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3
algoritmo: usare tre contenitori
n n+1 n+2
3
= 3
2
= 2
3
= 3
![Page 136: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/136.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3
algoritmo: usare tre contenitori
n n+1 n+2
3
= 3
2
= 2
3
= 3
![Page 137: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/137.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3f(4) = f(3) + f(2) = 5
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
3
= 3
5
= 5
![Page 138: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/138.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3f(4) = f(3) + f(2) = 5
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
3
= 3
5
= 5
![Page 139: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/139.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3f(4) = f(3) + f(2) = 5f(5) = f(4) + f(3) = 8
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
3
= 3
5
= 5
![Page 140: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/140.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3f(4) = f(3) + f(2) = 5f(5) = f(4) + f(3) = 8f(6) = f(5) + f(4) = 13
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
3
= 3
5
= 5
![Page 141: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/141.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3f(4) = f(3) + f(2) = 5f(5) = f(4) + f(3) = 8f(6) = f(5) + f(4) = 13f(7) = f(6) + f(5) = 21
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
3
= 3
5
= 5
![Page 142: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/142.jpg)
28
COMANDI ITERATIVI/WHILE/FIBONACCI la funzione di fibonacci è definita da:
f(0) = 1 f(1) = 1 f(n+2) = f(n+1) + f(n)
scrivere un programma che prende n e ritorna f(n)
f(0) = 1f(1) = 1f(2) = f(1) + f(0) = 2f(3) = f(2) + f(1) = 3f(4) = f(3) + f(2) = 5f(5) = f(4) + f(3) = 8f(6) = f(5) + f(4) = 13f(7) = f(6) + f(5) = 21. . .
algoritmo: usare tre contenitori
n n+1 n+2
2
= 2
3
= 3
5
= 5
![Page 143: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/143.jpg)
29
COMANDI ITERATIVI/WHILE/FIBONACCI
int main(){int x, n0, n1 , n2;cin >> x ; // x>=0n0 = 1 ;n1 = 1 ;n2 = 1 ;while (x-2 >= 0) {
n2 = n1 + n0 ; n0 = n1 ; n1 = n2 ;x = x-1 ;
}cout << n2 ;return(0) ;
}
![Page 144: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/144.jpg)
30
COMANDI ITERATIVI/FOR
![Page 145: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/145.jpg)
30
COMANDI ITERATIVI/FOR
sintassi: for (variable = expression ; condition ; variable = expression’)
statement
![Page 146: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/146.jpg)
30
COMANDI ITERATIVI/FOR
sintassi: for (variable = expression ; condition ; variable = expression’)
statement
• variable = expression è l’assegnamento di inizializzazione della variabile di controllo
![Page 147: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/147.jpg)
30
COMANDI ITERATIVI/FOR
sintassi: for (variable = expression ; condition ; variable = expression’)
statement
• variable = expression è l’assegnamento di inizializzazione della variabile di controllo
• condition è la struttura decisionale per controllare il numero di iterazioni, detta guardia del ciclo for
![Page 148: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/148.jpg)
30
COMANDI ITERATIVI/FOR
sintassi: for (variable = expression ; condition ; variable = expression’)
statement
• variable = expression è l’assegnamento di inizializzazione della variabile di controllo
• condition è la struttura decisionale per controllare il numero di iterazioni, detta guardia del ciclo for
• statement ; variable = expression’ è il gruppo di istruzioni che vengono ripetute, detto corpo del ciclo for
![Page 149: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/149.jpg)
30
COMANDI ITERATIVI/FOR
sintassi: for (variable = expression ; condition ; variable = expression’)
statement
• variable = expression è l’assegnamento di inizializzazione della variabile di controllo
• condition è la struttura decisionale per controllare il numero di iterazioni, detta guardia del ciclo for
• statement ; variable = expression’ è il gruppo di istruzioni che vengono ripetute, detto corpo del ciclo for
esempio: stampare 10 volte “ciao”
![Page 150: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/150.jpg)
30
COMANDI ITERATIVI/FOR
sintassi: for (variable = expression ; condition ; variable = expression’)
statement
• variable = expression è l’assegnamento di inizializzazione della variabile di controllo
• condition è la struttura decisionale per controllare il numero di iterazioni, detta guardia del ciclo for
• statement ; variable = expression’ è il gruppo di istruzioni che vengono ripetute, detto corpo del ciclo for
esempio: stampare 10 volte “ciao”for (conta = 10 ; conta > 0 ; conta = conta-1)
cout << "ciao" << endl ;
![Page 151: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/151.jpg)
30
COMANDI ITERATIVI/FOR
sintassi: for (variable = expression ; condition ; variable = expression’)
statement
• variable = expression è l’assegnamento di inizializzazione della variabile di controllo
• condition è la struttura decisionale per controllare il numero di iterazioni, detta guardia del ciclo for
• statement ; variable = expression’ è il gruppo di istruzioni che vengono ripetute, detto corpo del ciclo for
esempio: stampare 10 volte “ciao”for (conta = 10 ; conta > 0 ; conta = conta-1)
cout << "ciao" << endl ;
una alternativa molto usata è type variable = expression
cioè dichiarazione+inizializzazione
![Page 152: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/152.jpg)
31
COMANDI ITERATIVI/FOR
![Page 153: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/153.jpg)
31
COMANDI ITERATIVI/FOR
semantica: for (variable = expression ; condition ; variable = expression’)
statement
![Page 154: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/154.jpg)
31
COMANDI ITERATIVI/FOR
semantica: for (variable = expression ; condition ; variable = expression’)
statement
condition
statement
true false
variable = expression
variable = expression’
![Page 155: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/155.jpg)
31
COMANDI ITERATIVI/FOR
semantica: for (variable = expression ; condition ; variable = expression’)
statement
nella sintassi di C++ non cisono variable = expression e variable = expression’ ma ci sono statement
condition
statement
true false
variable = expression
variable = expression’
![Page 156: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/156.jpg)
32
COMANDI ITERATIVI/FOR/WHEELER
il primo programma eseguito su un calcolatore e memorizzato in memoria (David Wheeler, Cambridge, May 6, 1949) [ riscritto in C++ con il comando for]
// calcola e stampa la tabella dei quadrati di 0-99int main(){
for (int i = 0; i<100 ; i = i+1 )cout << i << '\t' << i*i << '\n' ;return(0) ;
}
![Page 157: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/157.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTI
![Page 158: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/158.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTIil comando for permette di raggruppare in un’unica posizione tutte e tre le componenti tipiche di una iterazione:
![Page 159: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/159.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTIil comando for permette di raggruppare in un’unica posizione tutte e tre le componenti tipiche di una iterazione:
1. inizializzazione della variabile di controllo del ciclo
![Page 160: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/160.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTIil comando for permette di raggruppare in un’unica posizione tutte e tre le componenti tipiche di una iterazione:
1. inizializzazione della variabile di controllo del ciclo2. test della condizione di ripetizione del ciclo
![Page 161: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/161.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTIil comando for permette di raggruppare in un’unica posizione tutte e tre le componenti tipiche di una iterazione:
1. inizializzazione della variabile di controllo del ciclo2. test della condizione di ripetizione del ciclo3. aggiornamento della variabile di controllo del ciclo
![Page 162: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/162.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTIil comando for permette di raggruppare in un’unica posizione tutte e tre le componenti tipiche di una iterazione:
1. inizializzazione della variabile di controllo del ciclo2. test della condizione di ripetizione del ciclo3. aggiornamento della variabile di controllo del ciclo
osservazione: un comando for può essere riscritto in un comando while:
![Page 163: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/163.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTIil comando for permette di raggruppare in un’unica posizione tutte e tre le componenti tipiche di una iterazione:
1. inizializzazione della variabile di controllo del ciclo2. test della condizione di ripetizione del ciclo3. aggiornamento della variabile di controllo del ciclo
osservazione: un comando for può essere riscritto in un comando while:for (variable = expression ; condition ; variable = expression’) statement
≡ variable = expression ; while (condition) { statement ;
variable = expression’ ; }
![Page 164: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/164.jpg)
33
COMANDI ITERATIVI/FOR/COMMENTIil comando for permette di raggruppare in un’unica posizione tutte e tre le componenti tipiche di una iterazione:
1. inizializzazione della variabile di controllo del ciclo2. test della condizione di ripetizione del ciclo3. aggiornamento della variabile di controllo del ciclo
osservazione: un comando for può essere riscritto in un comando while:for (variable = expression ; condition ; variable = expression’) statement
≡ variable = expression ; while (condition) { statement ;
variable = expression’ ; }
in C++ vale anche il viceversa: ogni comando while può essere riscritto in comando for
![Page 165: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/165.jpg)
34
COMANDI ITERATIVI/STILI
![Page 166: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/166.jpg)
34
COMANDI ITERATIVI/STILI
il comando for va utilizzato
![Page 167: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/167.jpg)
34
COMANDI ITERATIVI/STILI
il comando for va utilizzato• quando le fasi di inizializzazione e aggiornamento sono semplici (es.
azzeramento e incremento);esempio: assegnamento iniziale i = 0 e aggiornamento i = i + 1
![Page 168: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/168.jpg)
34
COMANDI ITERATIVI/STILI
il comando for va utilizzato• quando le fasi di inizializzazione e aggiornamento sono semplici (es.
azzeramento e incremento);esempio: assegnamento iniziale i = 0 e aggiornamento i = i + 1
• quando staticamente sono note il numero di iterazioni che il comando deve fare
![Page 169: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/169.jpg)
34
COMANDI ITERATIVI/STILI
il comando for va utilizzato• quando le fasi di inizializzazione e aggiornamento sono semplici (es.
azzeramento e incremento);esempio: assegnamento iniziale i = 0 e aggiornamento i = i + 1
• quando staticamente sono note il numero di iterazioni che il comando deve fare
osservazioni: (1) in altri linguaggi il for può avere assegnamenti iniziali e aggiornamenti solo “semplici”, il C++ consente più libertà
(2) storicamente il for poteva essere usato solo per cicli il cui numero di iterazioni era noto a priori, altrimenti si doveva usare il while (o il do-while)
for i = 1 to 10 do comando
![Page 170: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/170.jpg)
34
COMANDI ITERATIVI/STILI
il comando for va utilizzato• quando le fasi di inizializzazione e aggiornamento sono semplici (es.
azzeramento e incremento);esempio: assegnamento iniziale i = 0 e aggiornamento i = i + 1
• quando staticamente sono note il numero di iterazioni che il comando deve fare
osservazioni: (1) in altri linguaggi il for può avere assegnamenti iniziali e aggiornamenti solo “semplici”, il C++ consente più libertà
(2) storicamente il for poteva essere usato solo per cicli il cui numero di iterazioni era noto a priori, altrimenti si doveva usare il while (o il do-while)
for i = 1 to 10 do comando
rispettate questa convenzione, se no potreste indispettire gli informatici più tradizionalisti
![Page 171: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/171.jpg)
COMANDI ITERATIVI: ESEMPIO
35
![Page 172: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/172.jpg)
scrivere un programma che prende in input un carattere e se il carattere ‘0’, ‘1’, …, ‘9’ stampa l’intero successivo, se diverso da "q" (quit) non stampa niente, se "q" termina (il numero delle iterazioni del ciclo non è noto a priori)
COMANDI ITERATIVI: ESEMPIO
35
![Page 173: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/173.jpg)
scrivere un programma che prende in input un carattere e se il carattere ‘0’, ‘1’, …, ‘9’ stampa l’intero successivo, se diverso da "q" (quit) non stampa niente, se "q" termina (il numero delle iterazioni del ciclo non è noto a priori)
algoritmo:
COMANDI ITERATIVI: ESEMPIO
35
![Page 174: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/174.jpg)
scrivere un programma che prende in input un carattere e se il carattere ‘0’, ‘1’, …, ‘9’ stampa l’intero successivo, se diverso da "q" (quit) non stampa niente, se "q" termina (il numero delle iterazioni del ciclo non è noto a priori)
algoritmo: 1. prendi un carattere in input
COMANDI ITERATIVI: ESEMPIO
35
![Page 175: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/175.jpg)
scrivere un programma che prende in input un carattere e se il carattere ‘0’, ‘1’, …, ‘9’ stampa l’intero successivo, se diverso da "q" (quit) non stampa niente, se "q" termina (il numero delle iterazioni del ciclo non è noto a priori)
algoritmo: 1. prendi un carattere in input2. se è compreso tra ‘0’ e ‘9’ ritorna l’intero successivo
COMANDI ITERATIVI: ESEMPIO
35
![Page 176: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/176.jpg)
scrivere un programma che prende in input un carattere e se il carattere ‘0’, ‘1’, …, ‘9’ stampa l’intero successivo, se diverso da "q" (quit) non stampa niente, se "q" termina (il numero delle iterazioni del ciclo non è noto a priori)
algoritmo: 1. prendi un carattere in input2. se è compreso tra ‘0’ e ‘9’ ritorna l’intero successivo3. altrimenti, se diverso da ‘q’ ritorna a 1
COMANDI ITERATIVI: ESEMPIO
35
![Page 177: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/177.jpg)
scrivere un programma che prende in input un carattere e se il carattere ‘0’, ‘1’, …, ‘9’ stampa l’intero successivo, se diverso da "q" (quit) non stampa niente, se "q" termina (il numero delle iterazioni del ciclo non è noto a priori)
algoritmo: 1. prendi un carattere in input2. se è compreso tra ‘0’ e ‘9’ ritorna l’intero successivo3. altrimenti, se diverso da ‘q’ ritorna a 14. altrimenti (= ‘q’) termina
COMANDI ITERATIVI: ESEMPIO
35
![Page 178: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/178.jpg)
scrivere un programma che prende in input un carattere e se il carattere ‘0’, ‘1’, …, ‘9’ stampa l’intero successivo, se diverso da "q" (quit) non stampa niente, se "q" termina (il numero delle iterazioni del ciclo non è noto a priori)
algoritmo: 1. prendi un carattere in input2. se è compreso tra ‘0’ e ‘9’ ritorna l’intero successivo3. altrimenti, se diverso da ‘q’ ritorna a 14. altrimenti (= ‘q’) termina
COMANDI ITERATIVI: ESEMPIO
attenzione a questo passo! l’input è un char, l’output è un int
come calcolarlo?
35
![Page 179: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/179.jpg)
36
IMPLEMENTAZIONE 1 int main() {
char c ;cout << "carattere in input (q per terminare)?> " ;cin >> c ;while (c != 'q') {
if (c>='0' && c <='9') {if (c == '0') cout << "> " << 1 << "\n" ;else if (c == '1') cout << "> " << 2 << "\n" ;else if (c == '2') cout << "> " << 3 << "\n" ;else if (c == '3') cout << "> " << 4 << "\n" ;else if (c == '4') cout << "> " << 5 << "\n" ;else if (c == '5') cout << "> " << 6 << "\n" ;else if (c == '6') cout << "> " << 7 << "\n" ;else if (c == '7') cout << "> " << 8 << "\n" ;else if (c == '8') cout << "> " << 9 << "\n" ;else cout << "> " << 10 << "\n" ;}
else cout << "\n" << "carattere non cifra; \n" ;cout << "carattere in input (q per terminare)>" ;cin >> c ;
}return(0);
}
![Page 180: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/180.jpg)
36
IMPLEMENTAZIONE 1 int main() {
char c ;cout << "carattere in input (q per terminare)?> " ;cin >> c ;while (c != 'q') {
if (c>='0' && c <='9') {if (c == '0') cout << "> " << 1 << "\n" ;else if (c == '1') cout << "> " << 2 << "\n" ;else if (c == '2') cout << "> " << 3 << "\n" ;else if (c == '3') cout << "> " << 4 << "\n" ;else if (c == '4') cout << "> " << 5 << "\n" ;else if (c == '5') cout << "> " << 6 << "\n" ;else if (c == '6') cout << "> " << 7 << "\n" ;else if (c == '7') cout << "> " << 8 << "\n" ;else if (c == '8') cout << "> " << 9 << "\n" ;else cout << "> " << 10 << "\n" ;}
else cout << "\n" << "carattere non cifra; \n" ;cout << "carattere in input (q per terminare)>" ;cin >> c ;
}return(0);
}
troppe ripetizioni!
![Page 181: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/181.jpg)
37
IMPLEMENTAZIONE 2
int main(){char c ;cout << "carattere in input (q per terminare)?>" ; cin >> c ;while (c != 'q') {
if (c>='0' && c <='9') {cout << "> " << c - '0' + 1 << "\n" ;
}else cout << "\n" << "carattere non cifra; \n" ;cout << "carattere in input (q per terminare)>" ;cin >> c ;
}return(0);
}
![Page 182: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/182.jpg)
37
IMPLEMENTAZIONE 2
int main(){char c ;cout << "carattere in input (q per terminare)?>" ; cin >> c ;while (c != 'q') {
if (c>='0' && c <='9') {cout << "> " << c - '0' + 1 << "\n" ;
}else cout << "\n" << "carattere non cifra; \n" ;cout << "carattere in input (q per terminare)>" ;cin >> c ;
}return(0);
} l’espressione interessante èc - '0' + 1
![Page 183: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/183.jpg)
COMANDI ITERATIVI: ESERCIZI
1. scrivere un programma che prende in input un numero intero n e stampa n asterischi
2. scrivere un programma che chiede in input un numero: se è positivo lo stampa e termina, se è negativo o nullo lo rifiuta e ne chiede un altro.
3. scrivere un programma che interroga uno studente sulla divisibilità: prende in input un numero intero e chiede allo studente di inserire un divisore. Il programma termina solo quando lo studente inserisce un divisore corretto.
4. scrivere un programma che prende un intero e stampa la somma delle sue cifre
![Page 184: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/184.jpg)
COMANDO DO-WHILE
![Page 185: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/185.jpg)
COMANDO DO-WHILE
do comando while(condizione);
![Page 186: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/186.jpg)
COMANDO DO-WHILE
do comando while(condizione);
semantica:
![Page 187: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/187.jpg)
COMANDO DO-WHILE
do comando while(condizione);
semantica:- viene eseguito il comando e in seguito la condizione viene testata
![Page 188: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/188.jpg)
COMANDO DO-WHILE
do comando while(condizione);
semantica:- viene eseguito il comando e in seguito la condizione viene testata- se è vera, il comando viene ripetuto
![Page 189: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/189.jpg)
COMANDO DO-WHILE
do comando while(condizione);
semantica:- viene eseguito il comando e in seguito la condizione viene testata- se è vera, il comando viene ripetuto- se è falsa si esce dal ciclo e l’esecuzione continua con il comando
successivo al while
![Page 190: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/190.jpg)
COMANDO DO-WHILE
do comando while(condizione);
semantica:- viene eseguito il comando e in seguito la condizione viene testata- se è vera, il comando viene ripetuto- se è falsa si esce dal ciclo e l’esecuzione continua con il comando
successivo al while- il comando viene chiamato corpo del do-while
![Page 191: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/191.jpg)
COMANDO DO-WHILE
do comando while(condizione);
semantica:- viene eseguito il comando e in seguito la condizione viene testata- se è vera, il comando viene ripetuto- se è falsa si esce dal ciclo e l’esecuzione continua con il comando
successivo al while- il comando viene chiamato corpo del do-while
osservazione: il corpo del do-while viene eseguito almeno una volta anche nel caso in cui la condizione sia falsa
![Page 192: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/192.jpg)
COMANDO DO-WHILE
do comando while(condizione);
semantica:- viene eseguito il comando e in seguito la condizione viene testata- se è vera, il comando viene ripetuto- se è falsa si esce dal ciclo e l’esecuzione continua con il comando
successivo al while- il comando viene chiamato corpo del do-while
osservazione: il corpo del do-while viene eseguito almeno una volta anche nel caso in cui la condizione sia falsa
esercizi: provare a scrivere i programmi precedenti col do-while: quando i programmi sono più semplici?
![Page 193: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/193.jpg)
40
ESEMPIO
successore del carattere ‘0’, ‘1’, …, ‘9’ . . .
![Page 194: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/194.jpg)
40
ESEMPIO
successore del carattere ‘0’, ‘1’, …, ‘9’ . . .
int main(){char c ;cout << "carattere in input (q per terminare)?>" ; cin >> c ;while (c != 'q') {
if (c>='0' && c <='9') {cout << "> " << c - '0' + 1 << "\n" ;
}else cout << "\n" << "carattere non cifra; \n" ;cout << "carattere in input (q per terminare)>" ;cin >> c ;
}return(0);
}
![Page 195: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/195.jpg)
40
ESEMPIO
successore del carattere ‘0’, ‘1’, …, ‘9’ . . .
int main(){char c ;cout << "carattere in input (q per terminare)?>" ; cin >> c ;while (c != 'q') {
if (c>='0' && c <='9') {cout << "> " << c - '0' + 1 << "\n" ;
}else cout << "\n" << "carattere non cifra; \n" ;cout << "carattere in input (q per terminare)>" ;cin >> c ;
}return(0);
}
int main(){char c ;do {
cout << "carattere in input (q per terminare)?>" ;cin >> c ;if (c>='0' && c <='9') {
cout << "> " << c - '0' + 1 << "\n" ;} else cout << "\n" << "carattere non cifra; \n" ;
}while (c != 'q') ;return(0);
}
![Page 196: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/196.jpg)
CICLI ANNIDATI
![Page 197: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/197.jpg)
CICLI ANNIDATI
• spesso può essere utile usare un ciclo dentro l’altro
![Page 198: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/198.jpg)
CICLI ANNIDATI
• spesso può essere utile usare un ciclo dentro l’altro- ad ogni iterazione del ciclo esterno corrispondono 0 o più
iterazioni del ciclo interno
![Page 199: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/199.jpg)
CICLI ANNIDATI
• spesso può essere utile usare un ciclo dentro l’altro- ad ogni iterazione del ciclo esterno corrispondono 0 o più
iterazioni del ciclo interno
- fate attenzione a1. non mischiare le variabili di controllo dei 2 cicli2. ripristinare i valori di inizializzazione del ciclo interno ad ogni
iterazione del ciclo esterno
![Page 200: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/200.jpg)
CICLI ANNIDATI
• spesso può essere utile usare un ciclo dentro l’altro- ad ogni iterazione del ciclo esterno corrispondono 0 o più
iterazioni del ciclo interno
- fate attenzione a1. non mischiare le variabili di controllo dei 2 cicli2. ripristinare i valori di inizializzazione del ciclo interno ad ogni
iterazione del ciclo esterno
- attenzione: il programma diventa poco leggibile: prendere in considerazione la possibilità di rimpiazzare il ciclo interno con una invocazione di funzione
![Page 201: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/201.jpg)
CICLI ANNIDATI
• spesso può essere utile usare un ciclo dentro l’altro- ad ogni iterazione del ciclo esterno corrispondono 0 o più
iterazioni del ciclo interno
- fate attenzione a1. non mischiare le variabili di controllo dei 2 cicli2. ripristinare i valori di inizializzazione del ciclo interno ad ogni
iterazione del ciclo esterno
- attenzione: il programma diventa poco leggibile: prendere in considerazione la possibilità di rimpiazzare il ciclo interno con una invocazione di funzione
• si possono anche annidare più livelli di cicli
![Page 202: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/202.jpg)
CICLI ANNIDATI: ESERCIZI
![Page 203: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/203.jpg)
CICLI ANNIDATI: ESERCIZI
1. scrivere un programma che stampa un triangolo isoscele dell’altezza desiderata presa in input. Ad esempio, se l'altezza è 4 stampa:
![Page 204: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/204.jpg)
CICLI ANNIDATI: ESERCIZI
1. scrivere un programma che stampa un triangolo isoscele dell’altezza desiderata presa in input. Ad esempio, se l'altezza è 4 stampa:
*
![Page 205: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/205.jpg)
CICLI ANNIDATI: ESERCIZI
1. scrivere un programma che stampa un triangolo isoscele dell’altezza desiderata presa in input. Ad esempio, se l'altezza è 4 stampa:
* *** ***** *******
![Page 206: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/206.jpg)
CICLI ANNIDATI: ESERCIZI
1. scrivere un programma che stampa un triangolo isoscele dell’altezza desiderata presa in input. Ad esempio, se l'altezza è 4 stampa:
* *** ***** *******
2. scrivere un programma che chiede all'utente dei numeri interi e scrive se sono primi o non primi. Il programma termina quando l'utente inserisce il numero 0
![Page 207: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/207.jpg)
CICLI CHE NON TERMINANO
Il programma seguente termina?
int main(){ int i; cout << “Inserire un numero intero:”; cin >> i; while(i < 100){
cout << i << “\n”; i = i * 2;
} }
![Page 208: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/208.jpg)
44
METODI PER CONTROLLARE I CICLI
ci sono due metodi per controllare le iterazioni dei cicli
1. controlli definiti da contatori- è il tipo di controllo più semplice perchè prima che il
ciclo inizi si conoscono il numero di iterazioni- vedi programma di Wheeler
2. cicli controllati da flag - una variabile il cui cambiamento di valore indica che un
particolare evento è avvenuto è detta flag - vedi programma di incremento di un carattere
some event has taken place is a flag
![Page 209: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/209.jpg)
45
CONTROLLO DEI CICLI: CONTATORI
![Page 210: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/210.jpg)
45
CONTROLLO DEI CICLI: CONTATORI
prendi il seguente ciclo (Collatz 1937) while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
![Page 211: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/211.jpg)
45
CONTROLLO DEI CICLI: CONTATORI
prendi il seguente ciclo (Collatz 1937) while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
siamo sicuri che termina?
![Page 212: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/212.jpg)
45
CONTROLLO DEI CICLI: CONTATORI
prendi il seguente ciclo (Collatz 1937) while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
siamo sicuri che termina?• c’ è una congettura (di Collatz) secondo la quale, qualunque sia
il numero iniziale questo programma termina sempre
![Page 213: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/213.jpg)
45
CONTROLLO DEI CICLI: CONTATORI
prendi il seguente ciclo (Collatz 1937) while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
siamo sicuri che termina?• c’ è una congettura (di Collatz) secondo la quale, qualunque sia
il numero iniziale questo programma termina sempre• ma non è stata mai dimostrata
![Page 214: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/214.jpg)
46
CONTROLLO DEI CICLI: CONTATORI
![Page 215: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/215.jpg)
46
CONTROLLO DEI CICLI: CONTATORI
poichè
while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
potrebbe non terminare, conviene imporre la terminazione mediante un flag:
![Page 216: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/216.jpg)
46
CONTROLLO DEI CICLI: CONTATORI
poichè
while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
potrebbe non terminare, conviene imporre la terminazione mediante un flag:• utilizziamo una variabile flag inizializzata a un certo limite superiore
![Page 217: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/217.jpg)
46
CONTROLLO DEI CICLI: CONTATORI
poichè
while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
potrebbe non terminare, conviene imporre la terminazione mediante un flag:• utilizziamo una variabile flag inizializzata a un certo limite superiore • ad ogni iterazione decrementiamo flag
![Page 218: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/218.jpg)
46
CONTROLLO DEI CICLI: CONTATORI
poichè
while (n != 1){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ;
}
potrebbe non terminare, conviene imporre la terminazione mediante un flag:• utilizziamo una variabile flag inizializzata a un certo limite superiore • ad ogni iterazione decrementiamo flag• modifichiamo la guardia in
((n != 1) && (flag > 0))
![Page 219: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/219.jpg)
47
CONTROLLO DEI CICLI: CONTATORI
il ciclo di Collatz diventa
int flag = upper_bound ; while ((n != 1) && (flag > 0)){
if (n%2 == 0) n = n/2 ; else n = 3*n + 1 ; flag = flag - 1 ;
}
che termina sempre . . .
(farà al massimo upper_bound iterazioni)
![Page 220: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/220.jpg)
48
CONTROLLO DEI CICLI: FLAG
![Page 221: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/221.jpg)
48
CONTROLLO DEI CICLI: FLAG
programma che prende un numero e stampa “primo” o “non primo” a seconda se il numero è o meno primo
![Page 222: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/222.jpg)
48
CONTROLLO DEI CICLI: FLAG
programma che prende un numero e stampa “primo” o “non primo” a seconda se il numero è o meno primoint main() {
int n , i;bool flag ;cin >> n ;i = 2 ; flag = true ;while ((i < n) && flag) {
if (n % i == 0) { cout << "non primo"; flag = false; }i = i+1 ;
}if (flag) cout << "primo" ;return (0) ;
}
![Page 223: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/223.jpg)
48
CONTROLLO DEI CICLI: FLAG
programma che prende un numero e stampa “primo” o “non primo” a seconda se il numero è o meno primoint main() {
int n , i;bool flag ;cin >> n ;i = 2 ; flag = true ;while ((i < n) && flag) {
if (n % i == 0) { cout << "non primo"; flag = false; }i = i+1 ;
}if (flag) cout << "primo" ;return (0) ;
}
il flag consente di separare i due casi!
![Page 224: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/224.jpg)
49
DEBUG DI CICLI
gli errori comuni che riguardano i cicli sono1. gli errori “off-by-one’’ in cui il ciclo esegue una volta di più o
una volta di meno
2. i cicli infiniti, di solito dovuti a un errore progettuale della guardia del ciclo
![Page 225: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/225.jpg)
50
DEBUG DI CICLI
![Page 226: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/226.jpg)
50
DEBUG DI CICLI
per gli errori “off-by-one’’
![Page 227: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/227.jpg)
50
DEBUG DI CICLI
per gli errori “off-by-one’’• verifica la guardia: deve esserci “<“ oppure “<=“ ?
![Page 228: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/228.jpg)
50
DEBUG DI CICLI
per gli errori “off-by-one’’• verifica la guardia: deve esserci “<“ oppure “<=“ ?
• verifica che l’inizializzazione della variabile di controllo sia fatta correttamente
![Page 229: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/229.jpg)
50
DEBUG DI CICLI
per gli errori “off-by-one’’• verifica la guardia: deve esserci “<“ oppure “<=“ ?
• verifica che l’inizializzazione della variabile di controllo sia fatta correttamente
• il ciclo prende in considerazione il caso di 0 iterazioni?
![Page 230: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/230.jpg)
50
DEBUG DI CICLI
per gli errori “off-by-one’’• verifica la guardia: deve esserci “<“ oppure “<=“ ?
• verifica che l’inizializzazione della variabile di controllo sia fatta correttamente
• il ciclo prende in considerazione il caso di 0 iterazioni?
per i cicli infiniti
![Page 231: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/231.jpg)
50
DEBUG DI CICLI
per gli errori “off-by-one’’• verifica la guardia: deve esserci “<“ oppure “<=“ ?
• verifica che l’inizializzazione della variabile di controllo sia fatta correttamente
• il ciclo prende in considerazione il caso di 0 iterazioni?
per i cicli infiniti
• nelle guardie, verifica le diseguaglianze: deve esserci “<“ oppure “>“?
![Page 232: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/232.jpg)
50
DEBUG DI CICLI
per gli errori “off-by-one’’• verifica la guardia: deve esserci “<“ oppure “<=“ ?
• verifica che l’inizializzazione della variabile di controllo sia fatta correttamente
• il ciclo prende in considerazione il caso di 0 iterazioni?
per i cicli infiniti
• nelle guardie, verifica le diseguaglianze: deve esserci “<“ oppure “>“?
• nelle guardie, utilizza “<“ oppure “>“ piuttosto che “==“ (ricordare che i double sono approssimati . . .)
![Page 233: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/233.jpg)
51
ALTRI SUGGERIMENTI
verifica accuratamente che il bug sia nel ciclo
tracciare la variabile di controllo per verificare come cambia durante le iterazioni• ``tracciare’’ significa controllare i valori della variabile durante
l’esecuzione: molti supporti runtime forniscono tools per fare questa operazione (anche Eclipse)
• un modo semplice per tracciare una variabile è usare cout
![Page 234: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/234.jpg)
52
ESEMPIO DI DEBUG DI CICLI
![Page 235: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/235.jpg)
52
ESEMPIO DI DEBUG DI CICLI
questo ciclo dovrebbe memorizzare nella variabile result il prodotto dei naturali minori o uguali a 5
![Page 236: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/236.jpg)
52
ESEMPIO DI DEBUG DI CICLI
questo ciclo dovrebbe memorizzare nella variabile result il prodotto dei naturali minori o uguali a 5
int next = 2, result = 1; while (next < 5){ next = next + 1 ; result = result * next ;
}
![Page 237: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/237.jpg)
52
ESEMPIO DI DEBUG DI CICLI
questo ciclo dovrebbe memorizzare nella variabile result il prodotto dei naturali minori o uguali a 5
int next = 2, result = 1; while (next < 5){ next = next + 1 ; result = result * next ;
}
testiamolo aggiungendo un cout temporaneo per controllare le variabili (tracciare le variabili)
![Page 238: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/238.jpg)
53
ESEMPIO DI DEBUG DI CICLI
int next = 2, result = 1; while (next < 5){
next = next + 1 ;result = result * next ;cout << "next = " << next << endl ;cout << "result = " << result << endl ;
}
i comandi cout rivelano che result non è mai moltiplicato per 2
soluzione: sposta l’assegnamento next = next + 1 ;
![Page 239: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/239.jpg)
54
ESEMPIO DI DEBUG DI CICLI
![Page 240: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/240.jpg)
54
ESEMPIO DI DEBUG DI CICLI
int next = 2, result = 1; while (next < 5){
result = result * next ;next = next + 1 ;cout << "next = " << next << endl ;cout << "result = " << result << endl ;
}
![Page 241: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/241.jpg)
54
ESEMPIO DI DEBUG DI CICLI
int next = 2, result = 1; while (next < 5){
result = result * next ;next = next + 1 ;cout << "next = " << next << endl ;cout << "result = " << result << endl ;
}
c’ è ancora un problema . . .
![Page 242: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/242.jpg)
54
ESEMPIO DI DEBUG DI CICLI
int next = 2, result = 1; while (next < 5){
result = result * next ;next = next + 1 ;cout << "next = " << next << endl ;cout << "result = " << result << endl ;
}
c’ è ancora un problema . . .• se ri-testiamo il ciclo, ci accorgiamo che result non è mai
moltiplicato per 5
![Page 243: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/243.jpg)
54
ESEMPIO DI DEBUG DI CICLI
int next = 2, result = 1; while (next < 5){
result = result * next ;next = next + 1 ;cout << "next = " << next << endl ;cout << "result = " << result << endl ;
}
c’ è ancora un problema . . .• se ri-testiamo il ciclo, ci accorgiamo che result non è mai
moltiplicato per 5• occorre rimpiazzare la condizione (next < 5) con (next <= 5)
![Page 244: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/244.jpg)
55
TEST DI CICLI: GUIDA
![Page 245: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/245.jpg)
55
TEST DI CICLI: GUIDA
ogni volta che modificate un programma occorre ri-testarlo- il cambiamento in una parte di codice può causare problemi in
un’altra
![Page 246: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/246.jpg)
55
TEST DI CICLI: GUIDA
ogni volta che modificate un programma occorre ri-testarlo- il cambiamento in una parte di codice può causare problemi in
un’altra
ogni ciclo deve essere testato con input che consenta-no di verificare (almeno) i casi
![Page 247: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/247.jpg)
55
TEST DI CICLI: GUIDA
ogni volta che modificate un programma occorre ri-testarlo- il cambiamento in una parte di codice può causare problemi in
un’altra
ogni ciclo deve essere testato con input che consenta-no di verificare (almeno) i casi- zero iterazioni del corpo
![Page 248: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/248.jpg)
55
TEST DI CICLI: GUIDA
ogni volta che modificate un programma occorre ri-testarlo- il cambiamento in una parte di codice può causare problemi in
un’altra
ogni ciclo deve essere testato con input che consenta-no di verificare (almeno) i casi- zero iterazioni del corpo- una iterazione del corpo
![Page 249: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/249.jpg)
55
TEST DI CICLI: GUIDA
ogni volta che modificate un programma occorre ri-testarlo- il cambiamento in una parte di codice può causare problemi in
un’altra
ogni ciclo deve essere testato con input che consenta-no di verificare (almeno) i casi- zero iterazioni del corpo- una iterazione del corpo- un numero di iterazioni del corpo immediatamente inferiore al
massimo
![Page 250: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/250.jpg)
55
TEST DI CICLI: GUIDA
ogni volta che modificate un programma occorre ri-testarlo- il cambiamento in una parte di codice può causare problemi in
un’altra
ogni ciclo deve essere testato con input che consenta-no di verificare (almeno) i casi- zero iterazioni del corpo- una iterazione del corpo- un numero di iterazioni del corpo immediatamente inferiore al
massimo- il numero massimo di iterazioni
![Page 251: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/251.jpg)
56
RICOMINCIARE DACCAPO
alcune volte è meglio cestinare un programma con errori e rifarne uno ex-novo piuttosto che ripararlo• il nuovo programma sarà più leggibile• difficilmente il nuovo programma avrà tanti errori come il
primo• ci si mette meno tempo a sviluppare un nuovo programma
piuttosto che ripararne uno vecchio• in ogni modo, imparerete la lezione che la fase cruciale per
sviluppare codice è la progettazione
![Page 252: I COMANDI IF WHILE E - cs.unibo.itlaneve/html/lez3-IF-WHILE-FOR.pdf · 2 ARGOMENTI (SAVITCH, SEZIONE 2.4, CAPITOLO 3) 1.i comandi if-then-else e if-then 2.il comando while 3.il comando](https://reader030.vdocuments.mx/reader030/viewer/2022020303/5afd7eb67f8b9a256b8baeeb/html5/thumbnails/252.jpg)
57
ESERCIZI1. il valore ex può essere approssimato dalla somma
1 + x + x2/2! + x3/3! + . . . + xn/n!
scrivere un programma che prende x, prende n e stampa l’approssimazione fino ad n di ex. Il programma stampa anche il valore exp(x) dove exp è la funzione definita nella libreria cmath. [SUGGERIMENTO: dichiarare n double per evitare overflow]
2. usando un ciclo while annidato scrivere un programma che prende n e stampa la seguente struttura di altezza n:
riscrivere il programma usando cicli for.