Il ciclo for
Lazy?
●

Tutti gli informatici sono pigri

●

Vogliono scrivere il meno possibile

●

●

Per questo trovano sempre delle scorciatoie
per evitare compiti ripetitivi
Il for è un esempio tipico, primo di una lunga
serie.
Cicli indicizzati
●

●

Frequentemente, a un ciclo è associato un
indice, o contatore, che si incrementa ad ogni
iterazione
Esempio tipico “stampare tutti i numeri da 1 a
10 ”,
Algoritmo →
●
●

●

4 istruzioni separate.
Non sarebbe meglio usare
qualcosa di più compatto?
Il for serve a questo!
Ecco il for
for(valore_iniziale, 
condizione, incremento)
{ 
[istruzione]
[istruzione]
…
}
Ecco il for
for(i=1, condizione, 
incremento)
{ 
[istruzione]
[istruzione]
…
}
Ecco il for
for(i=1, i<10, 
incremento)
{ 
[istruzione]
[istruzione]
…
}
Ecco il for
for(i=1, i<10, i=i+1)
{ 
[istruzione]
[istruzione]
…
}
Ecco il for
for(i=1, i<10, i=i++)
{ 
[istruzione]
[istruzione]
…
}
Ecco il for
for(i=1, i<10, i=i++)
{ 
printf(“%d ”,i);
}
Più in dettaglio
for(valore_iniziale, condizione, 
incremento)
●

●

●

Con l’espressione valore_iniziale indichiamo quale
sarà l'indice (o variabile contatore) del ciclo e ne
impostiamo il valore iniziale;
Con l'espressione condizione effettuiamo un
confronto: se il risultato è “falso”, l'esecuzione del
ciclo termina. In altre parole, è la condizione per
restare dentro al ciclo.
L’espressione incremento descrive come
modificare, incrementare o decrementare il contatore
ad ogni esecuzione.
Più in dettaglio
●

Di fatto, il for è un ciclo precondizionato

●

Come tale, si corrono tutti i rischi tipici dei cicli

●

In particolare, i cicli infiniti, come questo.
for(i=7; i=1; i=i+1)
Più in dettaglio

●

●

●

Come l'if, il for si riferisce alla sola istruzione che
lo segue
Per includere più istruzioni nel ciclo, si usano le
parentesi graffe
Attenti ad errori banali come questo
for(i=0, i<7, i=i+1);
 printf(“%d ”,i); 
Perversioni del for (1)
●

Posso avere più condizioni iniziali, separati da
virgola
for (i=0, j=0; i<10; i++) 

●

O anche nessuna
for (; i<10; i++)
Perversioni del for (2)
●

Lo stesso vale per l'incremento
for (i=0, j=0; i<10; i++, j++) 

●

O anche nessuno
for (; i<10; )

●

(così è equivalente a un while!)
Perversioni del for (3)

●

La condizione è opzionale
for (i=0, j=0; ; i++, j++) 

●

La sua forma più perversa è questa
for (;;)

●

Genera volutamente un ciclo infinito

●

Usare CON CAUTELA
End
●
●

●

Grazie per l'attenzione!
Prof. Missiroli@gmail.com per la 3A Info 201314!
Escludendo i primi due disegni, il resto è ©
Marcello Missiroli, rilasciata sotto CC BY-SA
3.0

Il ciclo for