Il ciclo While
Nel linguaggio C l'istruzione While crea una struttura iterativa condizionata che esegue lo stesso blocco di codice fin quando si verifica un particolare evento.
La sintassi della funzione While
La sintassi dell'istruzione While è la seguente:
While ( espressione di controllo ) {
// blocco di istruzioni
}
Se l'espressione di controllo è vera il blocco di istruzioni compreso tra le parentesi graffe {} viene eseguito una o più volte.
Ogni esecuzione del blocco di istruzioni è detto ciclo o iterazione. In ogni ciclo sono eseguite le stesse istruzioni del blocco.
Il ciclo si interrompe quando l'espressione di controllo diventa falsa.
Un esempio pratico
Il seguente programma visualizza sullo schermo i numeri da 1 a 10.
Nella prima riga viene dichiarata la variabile numerica n mentre nella seconda gli viene assegnato il valore 0.
int n;
n=0;
while ( n<11 ) {
printf(" %d ", n );
n++;
}
return 0;
Nella terza riga è presente la funzione While.
L'espressione di controllo dell'iterazione è (n<11).
Il primo ciclo
Alla prima esecuzione l'espressione (n<11) è vera perché alla variabile n è assegnato il valore 0.
Pertanto, l'istruzione While esegue il primo ciclo, ossia esegue per la prima volta il blocco delle istruzioni tra partentesi graffe.
L'istruzione PRINTF stampa a video il valore della variabile n.
0
Nella riga successiva la variabile n viene incrementata di una unità (N++).
Al termine del primo ciclo la variabile n è uguale a 1.
L'istruzione While torna all'inizio del ciclo e verifica se l'espressione di controllo è vera.
Il secondo ciclo
L'espressione di controllo è ancora vera ( n<11).
Pertanto, l'istruzione While esegue il secondo ciclo. E così via.
Quando si interrompe l'iterazione?
L'iterazione si interrompe al dodicesimo ciclo, quando la variabile n è uguale a 11 e l'espressione di controllo ( n<11 ) è falsa.
Quando l'espressione di controllo diventa il falsa, il programma esce dall'iterazione While ed esegue la prima istruzione successiva ed esterna al ciclo ( return 0 ).
L'output finale del programma è il seguente:
0 1 2 3 4 5 6 7 8 9 10