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:

  1. Inizializzazione del conteggio – l'istruzione initialize viene eseguita. Questo accade solo una volta, all'inizio del loop.
  2. 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.
  3. Esecuzione delle istruzioni nel corpo del loop.
  4. Aggiornamento del conteggio – viene eseguita l'istruzione update.
  5. Si torna allo step 2.

Tutto ciò è illustrato qui sotto:

image-66
Loop for in C

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 a 0.
  • 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 di count è 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 condizione check_condition è true, mentre si ferma quando check_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!