Ovvero: Come affrontare i cicli senza impazzire.
• Il C (c99) è un linguaggio imperativo: Ok
• Nel C c'è un solo costrutto primitivo, lo Statement: Ok
• Si possono creare combinazioni di più Statement: OK
• Ogni Statement ha uno scope: ... erh
Purtroppo non è una parolaccia...
Lo SCOPE è questo:
{ * }
... tutte le cose buone tendono a Cadere
Begin
End
Statement 1
Statement 2
Statement 3
Statement 4
... ma a volte ritornano indietro.
Begin
End
Statement 1
Statement 2
Statement 4
Statement 3
Expression
Statement
Statement
Statement(s)
Expression
In generale, diremo che data una ITERAZIONE se il valore di Expression è assimilabile a "VERO" allora Statement di iterazione (Statement 3) viene eseguito.
Altrimenti, il flow procede verso il basso come sempre.
}
ITERAZIONE
Esistono tre tipi diversi di cicli "canonici", ovvero che creano nella loro struttura un blocco (tramite { }), e quindi danno vita ad uno scope.
for ( a ; b ; c ) { d }
a: statement inizializzatore
b: expression (espressione di controllo)
c: statement di incremento
d: statement(s) di iterazione (SCOPE)
for ( a ; b ; c ) { d }
for ( int i=0 ; i < 5 ; i++){
printf("\n iterazione numero %d", i +1);
}
while ( a ) { d }
a: expression (espressione di controllo)
d: statement(s) di iterazione (SCOPE)
while ( a ) { d }
int i = 0;
while ( i < 5 ) {
printf("\n iterazione numero %d", i +1);
i++;
}
do { d } while ( a )
a: expression (espressione di controllo)
d: statement(s) di iterazione (SCOPE)
do { d } while ( a )
int i = 0;
do {
printf("\n iterazione numero %d", i +1);
i++;
} while ( i < 5 ) ;
FOR :
• Possibilità di inizializzare e istanziare una variabile nello scope.
WHILE
• Espressione di controllo non legata a nessuna variabile nello scope: "libertà d'azione"
DO ... WHILE
• A differenza degli altri due, il ciclo viene eseguito almeno una volta.
• Controllo aritmetico e logico coerente
• Interruzioni
- break
- continue
break
Statement
Statement
Statement(s)
Expression
BREAK
continue
Statement
Statement
Statement(s)
Expression
CONTINUE