flusso

strutture per il controllo del flusso dell'esecuzione

Sequenza

Ci consente di eseguire una serie di istruzioni in ordine.

La sintassi è piuttosto semplice: basta mettere una istruzione (terminata da un ";") dopo l'altra.

Nell'esempio qui sotto viene eseguita prima istruzione1 e poi istruzione2 ma... è possibile metterne un numero qualsiasi.

istruzione1;
istruzione2;
avvia programma

variabili

codice

x =10;
y = x+4;
y++;

Condizionale

Questa struttura è utile se voglio eseguire delle istruzioni soltanto se si verifica un dato evento, in caso contrario quelle istruzioni non vanno eseguite.

Sintatticamente l'istruzione si costruisce usando la parola chiave if seguita da una espressione booleana racchiusa tra parentesi tonde. Se la condizione è vera l'istruzione successiva viene eseguita altrimenti no, in ogni caso si passa a quella dopo ancora. Se però ho bisogno di eseguire più istruzioni al verificarsi della condizione posso inserirne un blocco racchiudendole tra parentesi graffe (il consiglio generale è di mettere sempre le graffe anche se ho una sola istruzione).

Nell'esempio qui sotto istruzione verrà eseguita soltanto se condizione (che è una espressione di tipo booleano) è vera.

if(condizione){
istruzione;
}

avvia programma

variabili

codice

x = 12;
y = 1;
if( x < 8){
y = x+4;
}

Condizionale

Questo secondo tipo di condizionale ha anche la parte else che verrà eseguita soltanto se la condizione è falsa: una sola tra le parti if e else verrà eseguita, poi in ogni caso si procederà con l'istruzione successiva.

if(condizione){
istruzione1;
}else{
istruzione2;
}
avvia programma

variabili

codice

x = 12;
if( x> 8){
y = x+4;
}else{
y = x-4;
}
y = y+1;
avvia programma

variabili

codice

x = 4;
if( x> 8){
y = x+4;
}else{
y = x-4;
}
y = y+1;

Switch

È una struttura che ci consente di abbreviare una serie di if-else.

Il costrutto è un pò elaborato e usa tre parole chiave: switch, case e default. Rispetto all'if-else dobbiamo tener presente che l'esecuzione del programma una volta verificata una condizione continuerà fino alla fine dello switch e non si fermerà al case (o al default) successivo, per questo si possono usare i break.

switch(espressione){
case espressione1:
istruzione1;
case espressione2:
istruzione2;
/* tutti i "case" che servono */
default:
istruzioneN;
}

esempio

codice

switch ( x ) {
case 1:
y = 10;
break;
case 2: case 3: y = 20;
break;
default: y = 40; }

Il programma qui sopra assegna il volore 10 alla variabile y se x=1, se invece x è uguale a 2 o 3 assegna ad y il valore 20, in tutti gli altri casi ad y verrà assegnato il valore 40. Se non ci fosse stato nessun break avrebbe assegnato sempre il valore 40.

Ciclo for

Il ciclo for funziona così:
1-viene eseguita una sola volta l'inizializzazione (di solito una o più assegnazioni separarte da virgola)
2-se la condizione (che è una espressione booleana) è falsa il ciclo finisce
3-se la condizione è vera si esegue istruzione1, poi il passo (che di solito è un incremento) e si torna al punto 2

for(inizializzazione;condizione;passo){
istruzione1;
}
avvia programma

variabili

codice

j = 0;
for(  x=1 ;  x<5; x++ ){
j = j + i;
}

Ciclo while

Il ciclo while funziona così:
1-se la condizione (che è una espressione booleana) è falsa il ciclo finisce
2-se la condizione è vera si esegue il corpo del while (le istruzioni contenute)
3-arrivati in fondo si torna al punto 1 cioè a testare la condizione all'inizio del ciclo...

while(condizione){
istruzione1;
}
avvia programma

variabili

codice

y = 0;
x = 1;
while( x< 4 ){
y = y+x;
x++;
}

Ciclo do-while

Il ciclo do-while esegue il controllo alla fine (e non all'inizio come il while), per il resto si comporta come il while.
1-esegue il corpo del ciclo 2-se la condizione (che è una espressione booleana) è falsa il ciclo finisce
2-se la condizione è vera si torna al punto 2, cioè ad eseguire il corpo del ciclo...

do{
istruzione1;
}while(condizione)