Laboratorio di Informatica INTDER01 INF3 Prodotto da Generali Matteo e da Zaniboni Filippo Contenuto presentazione STRUTTURE DI CONTROLLO Le strutture di controllo sono istruzioni che consentono di eseguire una certa sequenza di comandi solo nel caso in cui la condizione preposta sia verificata. E posso essere di vari tipi: • IF-ELSE • IF • IF in Cascata INTDER01 INF3 • IF in Sequenza • Struttura a Scelta Multipla (Switch) IF-ELSE if ( Condizione ) { istruzione 1; istruzione 2; } else { istruzione 3; istruzione 4; } INTDER01 INF3 Nel caso in cui la condizione dell’if è verificata verranno eseguite solo le istruzioni 1 e 2, altrimenti verranno eseguite solo le istruzioni 3 e 4 presenti all’interno dell’else Esempio IF if ( Condizione ) { istruzione 1; istruzione 2; } Nel caso in cui la condizione dell’if è verificata verranno eseguite solo le istruzioni 1 e 2, altrimenti non verrà eseguita nessuna istruzione. Come possiamo notare da questo esempio l’else è opzionale, ma, se utilizzato, nessuna istruzione deve essere inserita tra il ramo if e il ramo else. INTDER01 INF3 Nel caso in cui all’interno del ramo if o del ramo else vi sia solo una istruzione è possibile omettere le parentesi graffe. Esempio IF in Cascata In alcuni casi è necessario verificare una condizione dopo avere verificato un’altra condizione: INTDER01 INF3 if ( Condizione1) { istruzione 1; istruzione 2; } else { if ( Condizione2 ) { istruzione 3; istruzione 4; } } Esempio In questo caso il programma verifica la condizione1 e, se questa non è verificata, entra nell’else, controlla la condizione2, se questa è verificata esegue le istruzioni 3 e 4, se invece non è verificata non esegue alcuna istruzione. IF in Sequenza Gli If in sequenza servono per verificare delle condizioni che sono una in sequenza all’altra. INTDER01 INF3 if (Condizione1) { istruzione 1; istruzione 2; } if (Condizione2) { istruzione 3; istruzione 4; } if (Condizione3){ istruzione 5; istruzione 6, } Esempio Possiamo infatti vedere da esempio che nel caso sia verificata la condizione1 vengono eseguite le istruzioni1 e 2, nel caso sia verificata la condizione2 vengono eseguite le istruzioni3 e 4. Nel caso che invece sia verificata la condizione3 verranno eseguite le operazioni5 e 6. STRUTTURA DI SCELTA MULTIPLA (SWITCH) INTDER01 INF3 switch (variabile di controllo ) { case valori1: istruzione 1; break; case valori2: istruzione 2; break; ……………….. case valorin: istruzionen; break; default: istruzioni; } STRUTTURA DI SCELTA MULTIPLA (SWITCH) Per risolvere situazioni più complesse rispetto alla struttura alternativa è stato introdotto lo schema della scelta multipla (o struttura di selezione multipla). INTDER01 INF3 Dopo lo switch viene indicato il nome della variabile di controllo (o variabile selettore) la quale deve essere controllata per decidere quale strada seguire tra quelle possibili. Quando le istruzioni da eseguire nel case sono finite, bisogna mettere una istruzione break che serve per uscire dalla struttura di scelta multipla. Nel caso che la variabile non sia verificata per nessun valore all’interno del case, vengono eseguite (se necessarie) una serie di operazioni di default. Come possiamo notare dagli esempi di if in cascata e di switch, la struttura a scelta multipla (o switch) può essere sostituita o può sostituire da una serie di if in cascata Esempio IF-ELSE #include<iostream.h> #include<conio.h> void main() { int a, b; clrscr(); cout<<”inserire il primo numero: ”; cin>>a; cout<<”inserire il secondo numero: ”; cin>>b; if (a<b) { cout<<”il cout<<”il } else { cout<<”il cout<<”il } getch(); INTDER01 INF3 } //nel caso in cui a sia minore di b maggior numero inserito è: “<<b; minor numero inserito è: “<<a; //nel caso in cui b sia minore di a maggior numero inserito è: “<<a; minor numero inserito è: “<<b; Indietro IF #include<iostream.h> #include<conio.h> void main() { int a; clrscr(); cout<<”inserisci un numero maggiore di 0: “; cin>>a; if ( num<0) //nel caso in cui il numero inserito sia minore di 0 cout<<”ASINACCIO”; getch(); } INTDER01 INF3 Indietro IF in Cascata #include<iostream.h> #include<conio.h> INTDER01 INF3 void main() { int x,y; clrscr(); cout<<”inserisci un numero: “; cin>>x; cout<<”inserisci un numero: “; cin>>y; if (x==1) y++; // nel caso in cui x sia 1 viene incrementato il valore di y else { if (x==2) x++; //nel caso in cui x sia 2 viene incrementato il valore di x else x=y; //nel caso in cui il valore di x non sia verificato all’interno } //degli altri if, il valore di y verrà attribuito a x getch(); } Indietro IF in Sequenza #include<iostream.h> #include<conio.h> void main() { int x,y; clrscr(); cout<<”inserisci un numero: “; cin>>x; cout<<”inserisci un numero: “; cin>>y; INTDER01 INF3 if (x==y) y++; if (x==0) y--; if (x==1) x=y; //se x è uguale a y, y viene incrementata //se x è uguale a 0, y viene decrementata //se x è uguale ad uno, x assume il valore di y getch(); } Indietro SWITCH #include<iostream.h> #include<conio.h> INTDER01 INF3 void main() { Indietro int x,y; clrscr(); cout<<”inserisci un numero: “; cin>>x; cout<<”inserisci un numero: “; cin>>y; switch(x) { case 1: y++; // nel caso che x sia 1 viene incrementato il valore di y break; case 2: x++; //nel caso che x sia 2 viene incrementato il valore di x break; default: x=y; //nel caso in cui il valore di x non sia verificato all’interno } //dei case il valore di y verrà attribuito a x getch(); }