# I cicli for C++: una spiegazione in parole semplici

I cicli for (chiamati anche “for loops”) sono un **concetto di base della maggior parte dei linguaggi di programmazione**. Servono per eseguire ripetutamente blocchi di codice. Esistono diverse varianti di cicli for in C++, ma funzionano tutte in modo analogo.

## Come funzionano i cicli for in C++?

I cicli for sono una delle strutture di controllo più importanti nella programmazione. Permettono di ripetere più volte determinati blocchi di codice. **Sono costrutti essenziali nei linguaggi di programmazione iterativi**, pertanto trovate ad esempio [cicli for in Java](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/ciclo-for-in-java/ "Ciclo for in Java") e [cicli for in Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/ciclo-for-su-python/ "Ciclo for su Python"). Altri linguaggi, soprattutto quelli funzionali, lavorano secondo il concetto della ricorsività anziché con i cicli.

### Cicli for in C++

I più comuni cicli for in C++ sono costituiti dai **tre elementi essenziali** seguenti:

- **Inizializzazione**: la variabile del ciclo viene avviata, ovvero le viene assegnato un valore di inizio.
- **Condizione**: si esegue il controllo di una condizione. Se è soddisfatta, il corpo del ciclo viene eseguito.
- **Istruzione**: qui potete formulare un’istruzione a piacere. Normalmente la variabile del ciclo viene incrementata o decrementata.

Tutti questi elementi sono indicati **separati da punto e virgola nell’intestazione del ciclo**, quindi sono eseguiti prima del corpo effettivo. I cicli for in C++ possono anche essere definiti “controllati dall’intestazione”.

Un semplice esempio di ciclo for in C++ che restituisce sullo schermo i numeri da 0 a 5 potrebbe presentarsi come segue:

```C++
for (int i = 0; i <= 5; i++) {
	std:cout << i << std:endl;
}
```

La prima riga dell’esempio di codice sopra contiene l’intestazione del ciclo. Qui emerge di nuovo chiaramente da quali elementi è costituito un ciclo for in C++:

- Inizializzazione: con l’istruzione “int i = 0” viene creata una variabile chiamata “i” a cui è assegnato il valore 0.
- Condizione: inserendo la condizione “i &lt;= 5” si indica che il corpo del ciclo deve essere eseguito finché il valore di “i” non supera il numero 5.
- Istruzione: ogni volta che viene eseguito il ciclo (“iterazione”), il valore di “i” viene incrementato di 1.

La **parte della condizione del ciclo for può essere tralasciata**. In questi casi la condizione è considerata sempre soddisfatta, generando un **ciclo infinito**. Talvolta, se utilizzati in modo mirato, i cicli infiniti possono essere utili. A chi sta imparando C++ capita però spesso di generarli per sbaglio, con conseguenti comportamenti errati del programma.

### Cicli foreach in C++

Oltre ai cicli for di cui abbiamo parlato sopra, dalla versione C++11 è disponibile un’altra forma di ciclo, introdotta anch’essa dalla parola chiave “for”. In altri linguaggi di programmazione come PHP, C# e [C++++](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/c/ "C++++"), i costrutti di questo tipo sono anche chiamati “cicli foreach”. Questi cicli vi permettono di **accedere comodamente a ciascun elemento di una struttura di dati** senza dover utilizzare l’indicizzazione. Di seguito un esempio pratico che restituisce i numeri da 0 a 5:

```C++
int intArr[] = {0, 1, 2, 3, 4, 5};
for (int element: intArr) {
	std:cout << element << std:endl;
}
```

Come potete vedere, la **struttura dell’intestazione del ciclo** è cambiata rispetto al primo esempio di codice. Anziché inizializzazione, condizione e istruzione, ci sono solo due parti:

- **Elemento**: qui dichiarate il tipo di dati e il nome di una variabile.
- **Contenitore**: qui indicate su quale contenitore deve essere eseguita l’iterazione.

Nel nostro caso è stata prima creata una matrice che contiene i numeri da 0 a 5. All’interno del ciclo for in C++, ciascun elemento della matrice è stato poi analizzato e restituito sullo schermo nel corpo del ciclo con la variabile denominata “elemento”.

Consiglio Utilizzate lo [spazio web](https://www.ionos.it/hosting/spazio-web "Spazio web di IONOS") di IONOS per mettere online tutti i vostri programmi in C++. Le ampie possibilità di backup assicurano inoltre che i vostri programmi siano sempre protetti dalla perdita di dati.

## Per cosa sono utilizzati i cicli for in C++?

Solitamente i cicli for sono usati ogni volta che si **conosce in anticipo il numero di esecuzioni del ciclo.** Ad esempio, per restituire tutti i multipli dei numeri da 2 a 100, il ciclo for in C++ potrebbe avere l’aspetto seguente:

```C++
for (int i = 2; i <= 100; i+=2) {
	std:cout << i << std:endl;
}
```

Anche molti noti **algoritmi di ordinamento** lavorano con i cicli for. Il vantaggio principale rispetto ai cicli while è la **maggiore compattezza**. Fondamentalmente potete comunque sempre sostituire i cicli for con quelli while.

## L’istruzione break per interrompere i cicli

Può succedere che vogliate terminare anticipatamente il ciclo for in C++. Ad esempio, per creare un ciclo infinito che restituisce sullo schermo numeri interi finché non viene raggiunto un numero inserito dall’utente. L’esempio di codice seguente chiarisce la situazione:

```C++
int i = 0;
int inpututente = 0;
// L’utente indica un numero che viene assegnato alla variabile denominata inpututente
std::cin >> inpututente
for (;;) {
	std:cout << i << std:endl;
	++i;
	// Quando la variabile del ciclo è superiore al numero inserito dall’utente, interruzione
	if (i > inpututente) {
		break;
}
}
```

La parola chiave che nell’esempio di codice sopra interrompe il ciclo è **break**. Con questa istruzione, ogni ciclo for in C++ **viene terminato immediatamente**. Dopodiché continua l’esecuzione del programma.

## L’istruzione continue per saltare le esecuzioni di un ciclo

Naturalmente può anche succedere che non vogliate interrompere l’intero ciclo, ma soltanto saltarne singole esecuzioni. Ad esempio, per restituire tutti i numeri pari fino a 100, potete ricorrere al costrutto seguente:

```C++
for (int i = 0; i <= 100; i++) {
// Se il numero è dispari, salta all’iterazione successiva
if (i % 2 == 1) {
		continue;
}
std:cout << i << std:endl;
}
```

Avrete sicuramente notato la parola “**continue**” nell’esempio di codice. Questa parola chiave fa in modo che **’esecuzione corrente del ciclo sia interrotta, saltando a quella successiva**. Il principale vantaggio di questa istruzione è che permette di evitare calcoli inutili, migliorando l’efficienza dei vostri programmi.


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/ciclo-for-in-c/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/ciclo-for-in-c/) for AI/LLM consumption.