Il ciclo FOR
L'istruzione FOR nel linguaggio C crea un ciclo iterativo predefinito compiendo N cicli.
La sintassi dell'istruzione FOR
FOR( inizio; controllo; incremento ) {
// blocco istruzioni
}
Nella componente inizio è indicato il valore iniziale della variabile mentre nella componente controllo è indicata la condizione di esecuzione del ciclo. Nell'elemento incremento, infine, si indica l'incremento o il decremento della variabile al termine di ogni ciclo.
Come funziona il ciclo FOR
Se l'espressione di controllo è vera, la funzione FOR esegue il blocco delle istruzioni.
Al termine dell'iterazione la variabile di controllo viene incrementata ( o decrementata ) e comincia il ciclo successivo.
L'iterazione FOR si interrompe quando l'espressione di controllo è falsa.
Un esempio pratico
Il seguente programma visualizza sullo schermo i numeri da uno a dieci.
La funzione FOR utilizza come variabile di controllo la variabile i.
for ( i=0; i<11; i++) {
printf(" %d ", i );
}
Al primo ciclo la variabile i viene assegnata al valore zero.
Il blocco delle istruzioni da eseguire è composto soltanto dall'istruzione PRINTF che stampa a video il valore della variabile i.
Al termine di ogni ciclo, la variabile i viene incrementata di una unità ( i++ ).
Il ciclo si interrompe quando l'espressione di controllo ( i<11 ) non è più soddisfatta.
Il risultato in output sullo schermo è il seguente:
1 2 3 4 5 6 7 8 9 10
L'elaborazione si conclude dopo 10 iterazioni.
Qual è la differenza tra WHILE, DO e FOR? A differenza delle altre istruzioni iterative WHILE e DO del linguaggio C, nell'istruzione FOR il numero delle iterazioni è noto fin dall'inizio.
Un altro esempio pratico
Il seguente programma in C stampa a video i numero da 10 a 1.
Al primo ciclo la variabile i viene inizializzata e assegnata al valore dieci ( i=10 ).
for ( i=10; i>0; i--) {
printf(" %d ", i );
}
Se l'espressione di controllo ( i>0 ) è vera, la funzione FOR esegue il blocco di istruzioni visualizzando sullo schermo il valore della variabile i.
Al termine dell'iterazione la variabile i viene decrementata di un'unità ( i-- ) e comincia il ciclo successivo.
L'iterazione si conclude dopo dieci cicli, quando la variabile assume il valore zero e l'espressione di controllo ( i>0 ) diventa falsa.
L'output del programma è il seguente.
10 9 8 7 6 5 4 3 2 1
In questo caso l'istruzione FOR ha operato un conteggio inverso.
Secondo esempio
Si può usare l'istruzione FOR anche con più variabili.
E' sufficiente aggiungere la seconda variabile separandola dall'altra tramite una virgola.
for ( i=10, t=0; i>0; i--, t++) {
printf(" %d %d", i, t );
}
Nel precedente codice è presente una seconda variabile denominata t.
Nel primo parametro viene assegnato alla variabile t il valore zero (t=0).
Nel terzo parametro, invece, si definisce l'incremento unitario di t in ogni iterazione (t++).
L'output del programma è il seguente.
10 0 9 1 8 2 7 3 6 4 5 5 4 6 3 7 2 8 1 9
In questo caso l'istruzione FOR ha eseguito contemporaneamente sia l'incremento di t (t++) che il decremento di i (i--).

- I parametri dell'istruzione FOR sono tutti opzionali. Se non si documenta un parametro è comunque necessario inserire il punto e virgola come separatore, per far capire al processore qual è l'inizializzazione, la condizione di controllo e l'incremento.
Esempio. Nella seguente IF contiene il primo e il terzo parametro sono mancanti. Essendo documentato il secondo parametro, il compilatore capisce che si tratta dell'espressione di controllo.
Quando l'inizializzazione non è documentata, il compilatore assume per default l'inizializzazione a zero (i=0). Quando non è documentato l'incremento, invece, assume per default l'incremento unitario positivo (i++). L'esecuzione del programma dà il seguente risultato.
- Inizializzazione e incremento multiplo. Nei parametri di inizializzazione e di incremento è possibile documentare più variabili, separate tra loro dalla virgola.
Esempio. Nella seguente IF sono inizializzate due variabili ( a=0 , b=10 ) separate dalla virgola. Anche l'incremento è composto da due operazioni ( a++ , b-- ) separate tra loro da una virgola.
Durante ogni ciclo il programma incrementa la variabile a e riduce la variabile b. L'esecuzione a video del programma è il seguente: