il costrutto iterazione – 2 -...
TRANSCRIPT
![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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/4.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/13.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/14.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/15.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/18.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/26.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/28.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.site/reader031/viewer/2022021810/5c6e6b9a09d3f2154d8b5194/html5/thumbnails/31.jpg)
Esercizi dal libro
•Pagina 341,342,343•N. 8, 18,•N. 26,27,31,32,34,36,37,•N. 41
•
•