SlideShare une entreprise Scribd logo
1  sur  17
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

Contenu connexe

En vedette (14)

Corso Moodle: presentazione
Corso Moodle: presentazioneCorso Moodle: presentazione
Corso Moodle: presentazione
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Dhcp
DhcpDhcp
Dhcp
 
Eccezioni in java
Eccezioni in javaEccezioni in java
Eccezioni in java
 
L'avvento del programmatore sociale
L'avvento del programmatore socialeL'avvento del programmatore sociale
L'avvento del programmatore sociale
 
Investire nelle user story
Investire nelle user storyInvestire nelle user story
Investire nelle user story
 
Moodle: i compiti (homework)
Moodle: i compiti (homework)Moodle: i compiti (homework)
Moodle: i compiti (homework)
 
Routing dinamico
Routing dinamicoRouting dinamico
Routing dinamico
 
Espressioni regolari
Espressioni regolariEspressioni regolari
Espressioni regolari
 
The Sequel to sql
The Sequel to sqlThe Sequel to sql
The Sequel to sql
 
Controllo di versione e Git
Controllo di versione e GitControllo di versione e Git
Controllo di versione e Git
 
Introduzione al dns
Introduzione al dnsIntroduzione al dns
Introduzione al dns
 
Il sistema binario
Il sistema binarioIl sistema binario
Il sistema binario
 
Insegnare Agile
Insegnare AgileInsegnare Agile
Insegnare Agile
 

Plus de Marcello Missiroli (12)

Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 
Guida del perfetto Algoritmista I
Guida del perfetto Algoritmista IGuida del perfetto Algoritmista I
Guida del perfetto Algoritmista I
 
Workshop: Introduzione ad TDD
Workshop: Introduzione ad TDDWorkshop: Introduzione ad TDD
Workshop: Introduzione ad TDD
 
Dal c a Java (3/3)
Dal c a Java (3/3)Dal c a Java (3/3)
Dal c a Java (3/3)
 
Dal C a Java (2/3)
Dal C a Java (2/3)Dal C a Java (2/3)
Dal C a Java (2/3)
 
Dal C a Java (1/3)
Dal C a Java (1/3)Dal C a Java (1/3)
Dal C a Java (1/3)
 
Variabili
VariabiliVariabili
Variabili
 
Sviluppo degli algoritmi
Sviluppo degli algoritmiSviluppo degli algoritmi
Sviluppo degli algoritmi
 
5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo5 stadi dello sviluppo di un gruppo
5 stadi dello sviluppo di un gruppo
 
Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!Vogliamo programmatori stupidi e pigri!
Vogliamo programmatori stupidi e pigri!
 
Big O Notation
Big O NotationBig O Notation
Big O Notation
 
Introduzione a java doc
Introduzione a java docIntroduzione a java doc
Introduzione a java doc
 

Il ciclo for