Articolo originale: For Loops in C – Explained with Code Examples
Se hai bisogno di ripetere un blocco di codice più volte, puoi utilizzare dei loop.
Queste ripetizioni dello stesso blocco di codice, per un certo numero di volte, sono dette iterazioni e il numero delle iterazioni viene determinato dalla condizione del loop.
I loop for
e while
sono ampiamente utilizzati in quasi tutti i linguaggi di programmazione.
In questo tutorial, parleremo dei loop for
in C. In particolare, imparerai:
- la sintassi per usare i loop
for
- come funzionano i loop
for
in C - l'eventualità di creare loop
for
infiniti
Iniziamo!
Sintassi e funzionamento dei loop for
in C
In questa sezione, imparerai la sintassi di base dei loop for
in C.
La sintassi generale per usare un loop for
è mostrata di seguito:
for(initialize; check_condition; update)
{
//esegui questo
}
Nel blocco qui sopra:
initialize
è l'istruzione di inizializzazione – qui viene inizializzata la variabile di controllo del loop.check_condition
è la condizione che determina se il loop deve continuare.
Finché check_condition
risulta vera, il corpo del loop viene eseguito.
- L'istruzione
update
aggiorna la variabile di controllo del loop dopo l'esecuzione delle istruzioni nel corpo del loop.
Struttura di controllo dei loop for
in C
La struttura di controllo è la seguente:
- Inizializzazione del conteggio – l'istruzione
initialize
viene eseguita. Questo accade solo una volta, all'inizio del loop. - Verifica della condizione del loop – viene valutata l'espressione
check_condition
. Se la condizione è true, si passa allo step 3. Se è false, si esce dal loop. - Esecuzione delle istruzioni nel corpo del loop.
- Aggiornamento del conteggio – viene eseguita l'istruzione
update
. - Si torna allo step 2.
Tutto ciò è illustrato qui sotto:
![image-66](https://www.freecodecamp.org/news/content/images/2021/10/image-66.png)
Ora che hai un'idea di come funziona un loop for
, prendiamo un esempio semplice per vedere un loop for
in azione.
Esempio di loop for
in C
Scriviamo un semplice loop for
per contare fino a 10 e stampare il valore del conto durante ogni passaggio attraverso il loop.
#include <stdio.h>
int main()
{
for(int count = 0; count <= 10; count++)
{
printf("%d\n",count);
}
return 0;
}
Nel blocco di codice qui sopra:
count
è la variabile contatore ed è inizializzata a0
.- La condizione del loop è
count <= 10
. Dunque,count
può essere al massimo 10 affinché il loop continui. - Nel corpo del loop, viene stampato il valore di
count
. - E il valore di
count
viene aumentato di 1. - Il controllo poi raggiunge la condizione
count <= 10
e le iterazioni proseguono finché la condizione risulta verificata. - In quest'esempio, la condizione del loop
count < = 10
diventa false quando il valore dicount
è 11 – e il loop termina.
Ed ecco l'output:
//Output
0
1
2
3
4
5
6
7
8
9
10
Dovresti sempre fare attenzione che il tuo loop termini effettivamente ad un certo punto.
Sai che il loop continua finché la condizionecheck_condition
è true, mentre si ferma quandocheck_condition
diventa false. Ma cosa accade se la condizione del loop è sempre true?
Bene, questo è ciò che accade se ti imbatti in un loop infinito. Il loop prosegue per sempre, finché il programma non va in crash o il tuo sistema si spegne.😢
Imparerai di più sui loop infiniti nella prossima sezione.
Loop for
infiniti
Se il tuo loop non si ferma e continua ad oltranza, allora, hai un loop infinito. Facciamo qualche esempio per capire meglio.
▶ Nella costruzione del loop for
, se non specifichi la condizione del loop (check_condition
), viene assunta come true di default.
Come risultato, la condizione non diventa mai falsa e il loop continua a iterare indefinitamente fino a che non interrompi forzatamente il programma.
Ecco un loop infinito nello snippet di codice qui sotto:
#include <stdio.h>
int main()
{
for(int i = 0; ; i++) //la condizione di test non è indicata
{
printf("%d ",i);
}
return 0;
}
▶ Vediamo un altro esempio.
Inizializzi la variabile contatore i
a 10. Aumenti i
di 1 dopo ogni iterazione.
Nota che la condizione di test è i > 0
, ma il valore di i
sarà sempre maggiore di 0.
Quindi, otterrai un loop infinito:
#include <stdio.h>
int main()
{
for(int i = 10; i > 0 ; i++) //la condizione di test è sempre TRUE
{
printf("%d ",i);
}
return 0;
}
▶ In quest'esempio, la variabile contatore i
è inizializzata a 0
, ma decresce di 1 a ogni iterazione.
Di conseguenza, i
sarà sempre minore di 10, la condizione i < 10
risulterà sempre true e il loop sarà infinito.
#include <stdio.h>
int main()
{
for(int i = 0; i < 10 ; i--) //la condizione di test è sempre TRUE
{
printf("%d",i);
}
return 0;
}
Per evitare di eseguire loop infiniti, dovresti definire correttamente la condizione del loop.
Se sei un principiante, porti queste domande potrebbe aiutarti:
Cosa voglio che faccia questo loop?
Quante volte voglio che il loop venga eseguito?
Quando dovrebbe fermarsi?
Poi, puoi proseguire e costruire il tuo loop di conseguenza. 🙂
Conclusione
Spero che questo tutorial ti sia stato d'aiuto.
Per ricapitolare, abbiamo imparato la sintassi e il funzionamento dei loop for
. Abbiamo anche anticipato la possibilità di definire dei loop for
infiniti e parlato di come evitarli, definendo la condizione di loop con attenzione.
Ci vediamo presto per un altro tutorial. Fino ad allora, buona programmazione!