Upload
agata-salvatori
View
229
Download
1
Embed Size (px)
Citation preview
Iterazioni (for, do, while)
Lab.Calc. AA2005/06 2
Iterazioni
3 istruzioni che consentono di eseguire un loop (ciclo):
1. while2. do...while3. for
con alcune differenze non solo sintattiche…
Lab.Calc. AA2005/06 3
Sintassi di while
while (espressione) istruzione
dove espressione è una qualsiasi espressione C++ e istruzione può essere una singola istruzione o una sequenza di istruzioni racchiusa tra { e }.
Lab.Calc. AA2005/06 4
Semantica di whileNellesecuzione di un'istruzione while viene 1. Valutata l'espressione espressione
– Se non è nulla si esegue l'istruzione– Se è nulla si passa alle istruzioni successive
al ciclo while
2. Si torna al punto 1
Lab.Calc. AA2005/06 5
Confronto tra if e while
espressione
if
Lab.Calc. AA2005/06 6
Confronto tra if e while
espressione espressione
if while
Lab.Calc. AA2005/06 7
Confronto tra if e while
espressione espressione
if while
falsa
Lab.Calc. AA2005/06 8
Confronto tra if e while
espressione espressione
if while
falsa falsa
Lab.Calc. AA2005/06 9
Confronto tra if e while
espressione
istruzione
espressione
if while
falsa vera falsa
Lab.Calc. AA2005/06 10
Confronto tra if e while
espressione
istruzione
espressione
istruzione
if while
falsa vera verafalsa
Lab.Calc. AA2005/06 11
Confronto tra if e while
espressione
istruzione
espressione
istruzione
if while
falsa vera verafalsa
Lab.Calc. AA2005/06 12
Confronto tra if e while
espressione
istruzione
espressione
istruzione
if while
falsa vera verafalsa
Lab.Calc. AA2005/06 13
Confronto tra if e while
while è un if insistente!
Lab.Calc. AA2005/06 14
Esempio 1 di uso di while
int contatore = 0;int somma = 0;while(contatore <= 25){
somma = somma + contatore;contatore = contatore + 1;
}
Lab.Calc. AA2005/06 15
double somma= 0;int contatore =0;while(1){ // sempre vero!
if (contatore > 25) break; // esce somma = somma + contatore;
contatore++; }
Esempio 2 di uso di while
Lab.Calc. AA2005/06 16
Sintassi di do...while
do istruzione while (espressione)
dove espressione è una qualsiasi espressione C++ e istruzione può essere una singola istruzione o una sequenza di istruzioni racchiusa tra { e }.
Lab.Calc. AA2005/06 17
Semantica di do...while • Nellesecuzione di un'istruzione
do...while viene 1. Eseguita l'istruzione 2. Valutata l'espressione tra parentesi:
– Se non è nulla si torna al punto 1– Se è nulla si passa alle istruzioni successive
al do...while
Lab.Calc. AA2005/06 18
Confronto tra while e do...while
espressione
istruzione espressione
istruzione
while do...while
falsa vera vera
falsa
Lab.Calc. AA2005/06 19
Confronto tra while e do...while
do...while esegue sempre l'istruzione almeno una volta
Lab.Calc. AA2005/06 20
Esempio 1 di uso di do...while
do {
cout << "Inserisci i tuoi anni " ;cin >> age;if(age <= 0)
cout<<"Deve essere un numero positivo! ";
}while(age <= 0);
Lab.Calc. AA2005/06 21
Esempio 2 di uso di do...while
#include <iostream.h>#include <fstream.h> // gestione di files int main( ) { double voto=0, somma=0; int num=0;// oggetto ifstream : file di input ifstream inFile= "voti.dat";
Lab.Calc. AA2005/06 22
do {inFile >> voto;
// inFile.eof( ) diverso da zero a fine file if(!inFile.eof( )) {
somma = somma + voti;num++;
} }
while(!inFile.eof( ));
Lab.Calc. AA2005/06 23
if(num)cout<< "voto medio
="<<sum/num<<endl;else
cout<< "file vuoto"<<endl;return 1;
} // chiude la parentesi del main
Lab.Calc. AA2005/06 24
Sintassi di for
for (espr1;espr2;espr3) istruzione
dove espr1 espr2 e espr3 sono espressioni C++ e istruzione può essere una singola istruzione o una sequenza di istruzioni racchiusa tra { e }.
Lab.Calc. AA2005/06 25
Semantica di forNellesecuzione di un'istruzione for viene 1. Valutata l'espressione espr1 (di solito
inizializzazione del contatore: esempio i=0)2. Valutata l'espressione espr2 (di solito un
test del contatore: esempio i<10)– Se non è nulla si esegue l'istruzione– Se è nulla si passa alle istruzioni successive al
ciclo for
3. Valuata l'espressione espr3 (di solito un incremento o decremento del contatore, esempio i++ )
4. Si torna al punto 2
Lab.Calc. AA2005/06 26
Confronto tra while e for
espressione
istruzione
espr1
istruzione
while for
falsa vera
verafalsa
espr3
espr2
Lab.Calc. AA2005/06 27
for (espr1;espr2;espr3) istruzione
Si può riscrivere anche come
espr1; while (espr2) { istruzione; espr3;
}
Confronto tra while e for
Lab.Calc. AA2005/06 28
Esempio 1 di uso di for
int sum=0;for (int i = 1; i <= n; i=i +1) sum = sum + i;cout << " La somma dei primi "<<n
<<" interi vale "<<sum<<endl;
Lab.Calc. AA2005/06 29
Esempio 2 di uso di for: calcolo del fattoriale
int fattoriale=1; int n; cout << "inserisci n" << endl; cin << n; for(int i=1; i<=n; i++) { fattoriale *= i; } cout << "n!=" << fattoriale << endl;