11) iterazioni (for, do, while). lab.calc.i aa2002/03 - cap.112 iterazioni 3 istruzioni che...

29
11) Iterazioni (for, do, while)

Upload: augostino-innocenti

Post on 01-May-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

11) Iterazioni (for, do, while)

Page 2: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 2

Iterazioni

3 istruzioni che consentono di eseguire un loop (ciclo):

1. while2. do...while3. for

con alcune differenze non solo sintattiche…

Page 3: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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 }.

Page 4: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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

Page 5: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 5

Confronto tra if e while

espressione

if

Page 6: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 6

Confronto tra if e while

espressione espressione

if while

Page 7: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 7

Confronto tra if e while

espressione espressione

if while

falsa

Page 8: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 8

Confronto tra if e while

espressione espressione

if while

falsa falsa

Page 9: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 9

Confronto tra if e while

espressione

istruzione

espressione

if while

falsa vera falsa

Page 10: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 10

Confronto tra if e while

espressione

istruzione

espressione

istruzione

if while

falsa vera verafalsa

Page 11: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 11

Confronto tra if e while

espressione

istruzione

espressione

istruzione

if while

falsa vera verafalsa

Page 12: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 12

Confronto tra if e while

espressione

istruzione

espressione

istruzione

if while

falsa vera verafalsa

Page 13: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 13

Confronto tra if e while

while è un if insistente!

Page 14: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 14

Esempio 1 di uso di while

int contatore = 0;int somma = 0;while(contatore <= 25){

somma = somma + contatore;contatore = contatore + 1;

}

Page 15: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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

Page 16: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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 }.

Page 17: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 17

Semantica di do...while 1. Nellesecuzione di un'istruzione

do...while viene 2. Eseguita l'istruzione 3. Valutata l'espressione tra parentesi:

– Se non è nulla si torna al punto 1– Se è nulla si passa alle istruzioni successive

al do...while

Page 18: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 18

Confronto tra while e do...while

espressione

istruzione espressione

istruzione

while do...while

falsa vera vera

falsa

Page 19: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 19

Confronto tra while e do...while

do...while esegue sempre l'istruzione almeno una volta

Page 20: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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);

Page 21: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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";

Page 22: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 22

do {inFile >> voto;

// inFile.eof( ) diverso da zero a fine file if(!inFile.eof( )) {

somma = somma + voti;num++;

} }

while(!inFile.eof( ));

Page 23: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 23

if(num)cout<< "voto medio

="<<sum/num<<endl;else

cout<< "file vuoto"<<endl;return 1;

} // chiude la parentesi del main

Page 24: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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 }.

Page 25: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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

Page 26: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 26

Confronto tra while e for

espressione

istruzione

espr1

istruzione

while for

falsa vera

verafalsa

espr3

espr2

Page 27: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 27

for (espr1;espr2;espr3) istruzione

Si può riscrivere anche come

espr1; while (espr2) { istruzione; espr3;

}

Confronto tra while e for

Page 28: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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;

Page 29: 11) Iterazioni (for, do, while). Lab.Calc.I AA2002/03 - cap.112 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while

Lab.Calc.I AA2002/03 - cap.11 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;