Dopo molti anni mi sono ritrovato a insegnare Informatica in una terza. Questo è una breve slide che ho fatto per spiegare il ciclo for
C'è un errore nelle slides 7---9. ho scritto erroneamente una "," al posto del ";".
Size: 411.47 KB
Language: it
Added: Feb 22, 2014
Slides: 17 pages
Slide Content
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