IL COSTRUTTO ITERAZIONE – 2 -...

31
IL COSTRUTTO ITERAZIONE – 2

Transcript of IL COSTRUTTO ITERAZIONE – 2 -...

Page 1: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

IL COSTRUTTO ITERAZIONE – 2

Page 2: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Il costrutto iterativo e la potenza di calcolo

L’iterazione nella programmazione strutturata

Il costrutto iterativo (detto anche ciclo) viene utilizzato quando un’istruzione (o un gruppo di istruzioni) deve essere eseguita finché non si verifica una determinata condizione.

Nella programmazione strutturata vengono utilizzati due costrutti iterativi:• il costrutto iterativo precondizionale;• il costrutto iterativo postcondizionale.

Page 3: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Tipologie di iterazione

● Iterazione definita: si conosce a priori quante volte l’azione elementare (o il blocco di istruzioni) verrà ripetuta. L’iterazione termina quando si è raggiunto il numero prefissato di ripetizioni.

● Iterazione condizionata: NON si conosce a priori quante volte l’azione elementare (o il blocco di istruzioni) verrà ripetuta. L’iterazione termina quando si verifica una certa condizione.

● Pre-condizionata: La condizione viene controllata prima delle istruzioni che quindi, potrebbero non essere mai eseguite.

● post-condizionata: La condizione viene controllata dopo le istruzioni, che quindi vengono eseguite almeno una volta.

Page 4: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Non si deve commette errore

veroC<3

C>=3

Ciclo Post condizionale Selezione

Page 5: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Non si deve commette errore

VeroC<3

Postcondizionale Precondizionale

C<3

Falso

Page 6: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Sintassi del libro - Precondizionato

Page 7: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Sintassi del libro - post

Attenzione

Page 8: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Quando usarli??

• Quando il blocco deve essere eseguito almeno una volta

• Quando il blocco uno potrebbe non essere mai eseguito

Page 9: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Il costrutto iterativo postcondizionale

L’iterazione nella programmazione strutturata

L’istruzione iterativa postcondizionale presenta notevoli differenze rispetto a quella precondizionale:

Page 10: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

L’istruzione while

Nel linguaggio C il costrutto iterazione pre-condizionato si implementa tramite l’istruzione while, che ha la seguente sintassi:

while (condizione) istruzione o blocco;

ATTENZIONE: Non mettere mai il ; dopo le (), altrimenti l’istruzione o il blocco non saranno eseguiti.

Il controllo della condizione viene effettuato prima dell’inizio del ciclo.Se la condizione è vera si entra nel ciclo, altrimenti si esce

Page 11: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

L’istruzione while

while (i<20) istruzione o blocco;

i<20 è una condizione, la cui verità viene controllata ad ogni iterazione. Se la condizione è vera si procede con le istruzioni, altrimenti si esce dal ciclo.

ATTENZIONE: In fase di scrittura del codice si deve sempre controllare che la condizione prima o poi venga soddisfatta, per evitare di cadere in cicli infiniti.

Page 12: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

La condizione

La condizione può essere:

vUna variabile singola if aritmetico,

vUna proposizione elementare, costituita dal confronto, mediante operatori relazionali, tra due variabili o due espressioni,vvUna proposizione articolata, costituita dalla connessione di proposizioni elementari mediante connettivi logici.

Page 13: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

Simulare un registratore di cassa che calcoli l’importo finale di una spesa. Il costo dei singoli prodotti è inserito da tastiera e termina quando l’importo totale supera una cifra prefissata TOT.

float prezzo;float somma=0;while(somma<TOT)

{cin>>prezzo;somma=somma+prezzo;}

Page 14: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

L’istruzione do while

Nel linguaggio C il costrutto iterazione post-condizionato si implementa tramite l’istruzione do while, che ha la seguente sintassi:

ATTENZIONE: Non mettere il ; dopo il do. E’ un errore di sintassi.

Il controllo della condizione è effettuato dopo l’inizio del ciclo.L’istruzione viene eseguita almeno una volta e poi viene

controllata la condizione.

doistruzione o blocco;

while (condizione);

Page 15: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

L’istruzione do while

0 è una condizione ( if aritmetico), la cui verità viene controllata al termine della prima iterazione. Se la condizione è vera si procede

con le altre iterazioni, altrimenti si esce dal ciclo.

ATTENZIONE: In fase di scrittura del codice si deve sempre controllare che la condizione prima o poi venga soddisfatta, per evitare di cadere in cicli infiniti.

do{cout>>‘‘CIAO’’;}

while (0);

Page 16: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

La condizione

La condizione può essere:

vUna variabile singola if aritmetico,

vUna proposizione elementare, costituita dal confronto, mediante operatori relazionali, tra due variabili o due espressioni,vvUna proposizione articolata, costituita dalla connessione di proposizioni elementari mediante connettivi logici.

Page 17: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

Eseguiamo il codice a video

do{cout>>‘‘CIAO’’;}

while (0);CIAO

Page 18: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

Inserire una sequenza di numeri interi. Terminare l’inserimento premendo 0.

int a;do

{cin>>a;}while(a);

Page 19: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

Eseguiamo il codice a

int a;do

{cin>>a};while(a);

0

Page 20: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

Inserire una sequenza di numeri interi. Terminare l’inserimento premendo 0. Calcolare la somma e la media della sequenza di numeri.

int a, somma, conta;float media;somma=conta=0;do

{cin>>a; somma=somma+a; conta++;}

while(a); media=(float)somma/conta;

Page 21: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

int a, somma, conta;float media;somma=conta=0;do

{cin>>a; somma=somma+a; conta++;}

while(a);

media=(float)somma/conta;

1 1 1

3 4 2

Eseguiamo il codice a somma conta

0 4 3

media 1,3

Page 22: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

int a, somma, conta;float media;somma=conta=0;do

{cin>>a; somma=somma+a; conta++;}

while(a);

media=(float)somma/(conta-1);

1 1 1

3 4 2

Aggiustiamo ed eseguiamo il codice: a somma conta

0 4 3

media 2

Page 23: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

EsempioInserire una sequenza di numeri interi. Terminare l’inserimento premendo 0. Calcolare la somma e la media dei numeri maggiori di 5.

int a, somma, conta;float media;somma=conta=0;do

{cin>>a;if(a>5){somma=somma+a; conta++;}}

while(a); media=(float)somma/conta;

Page 24: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

int a, somma, conta;float media;somma=conta=0;do

{cin>>a;if(a>5){somma=somma+a; conta++;}}

while(a);

media=(float)somma/conta;

-1 0 0

3 0 0

Eseguiamo il codice a somma conta

0 0 0

media NaN

Page 25: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esempio

int a, somma, conta;float media;somma=conta=0;do

{cin>>a;if(a>5){somma=somma+a; conta++;}

}while(a);

if(!conta)media=(float)somma/conta;

1 0 0

3 0 0

Aggiustiamo ed eseguiamo il codice: somma conta a

0 0 0

media

Page 26: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esercizi1)Realizzare un algoritmo che,dati in input N numeri interi, ne determini la somma e il prodotto

2)Realizzare un algoritmo che data in input una soquenza di numeri chiusa da uno zero, determini la loro somma e la media

3)Realizzare un algoritmo che data in input una soquenza di numeri chiusa da uno zero, determini la loro somma e la media ma nel caso non sarà possibile inseire più di 50 numeri

Page 27: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esercizi1)Realizzare un algoritmo che, data una sequenza di numeri, determini il massimo tra essi. Si esce dal ciclo quando si inserisce un numero negativo.

2)Realizzare un algoritmo che calcola la media dei voti di uno studente Non si sa a priori quanti voti verranno inseriti. Si inseriranno i voti finche l’utente non digita “S “come risposta alla domanda “ci sono altri voti”.

3)Dato un numero da tastiera, Somma tanti tre fino che non supera il numero dato. Visualizzare in output numero di questi 3

4)

Page 28: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Confronto 1● // costrutto do while● #include<iostream>● using namespace std;● int main(){● int num;● num=0;● do{● cout<<num<<" ";● num++;● }● while(num<10);● return 0; ● }

● // costrutto while● #include<iostream>● using namespace std;● int main(){● int num;● num=0;● while(num<10)● {● cout<<num<<" ";● num++;● }● return 0; ● }

● // costrutto for● #include<iostream>● using namespace std;● int main(){● int num;● for(num=0;num<10;num++)● {● cout<<num<<" ";● }● return 0; ● }

Page 29: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Confronto 2● // costrutto do while● #include<iostream>● using namespace std;● int main(){● int num;● char risp;● num=1;● do {● cout<<num<<endl;● num++;● cout<<"vuoi continuare (s/n)?";● cin>>risp;● }● while(risp!='n'); ● return 0; ● }

● // costrutto while prima versione● #include<iostream>● using namespace std;● int main(){● int num;● char risp;● num=1;● risp='s';● while(risp!='n')● {● cout<<num<<endl;● num++;● cout<<"vuoi continuare (s/n)? ";● cin>>risp;● }● return 0; ● }

● // costrutto while seconda versione● #include<iostream>● using namespace std;● int main(){● int num;● char risp;● num=1;● cout<<"vuoi iniziare (s/n)? ";● cin>>risp;● while(risp!='n')● {● cout<<num<<endl;● num++;● cout<<"vuoi continuare (s/n)? ";● cin>>risp;● }● return 0; ● }

Page 30: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Confronto - 3● // costrutto while 1● #include<iostream>● using namespace std;● int main(){● int voto,max;● max=-1000;● cout<<"inserire voto ";● cin>>voto;● while(voto>0)● {● if(max<voto)● {max=voto;} ● cout<<"inserire voto";● cin>>voto;● }● cout<<"il voto maggiore e'”;● cout<<max;● return 0; ● }

● // costrutto while 2● #include<iostream>● using namespace std;● int main(){● int voto,max;● cout<<"inserire voto ";● cin>>voto;● max=voto;● while(voto>0)● {● cout<<"inserire voto";● cin>>voto;● if(max<voto)● {max=voto;} ● }● cout<<"il voto maggiore e' “ ;

cout<<max;● return 0; ● }

● // costrutto do while 1● #include<iostream>● using namespace std;● int main(){● int voto,max;● max=-1000;● do{● cout<<"inserire voto";● cin>>voto;● if(max<voto)● {max=voto;} ● }● while(voto>0);● cout<<"il voto maggiore e'”;

cout<<max;● return 0; ● }

● // costrutto do while 2● #include<iostream>● using namespace std;● int main(){● int voto,max;● cout<<"inserire voto ";● cin>>voto;● max=voto;● do{● cout<<"inserire voto";● cin>>voto;● if(max<voto)● {max=voto;} ● }● while(voto>0);● cout<<"il voto maggiore e' “ ;

cout<<max;● return 0; ● }

Page 31: IL COSTRUTTO ITERAZIONE – 2 - ascanu.altervista.orgascanu.altervista.org/wp-content/uploads/2016/11/While-DoWhile.pdf · Tipologie di iterazione Iterazione definita: si conosce

Esercizi dal libro

•Pagina 341,342,343•N. 8, 18,•N. 26,27,31,32,34,36,37,•N. 41