Articolo originale: https://www.freecodecamp.org/news/for-loops-in-c/
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:
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!