I cicli for (chiamati anche “for loops”) sono un concetto di base della maggior parte dei linguaggi di pro­gram­ma­zio­ne. Servono per eseguire ri­pe­tu­ta­men­te blocchi di codice. Esistono diverse varianti di cicli for in C++, ma fun­zio­na­no tutte in modo analogo.

Come fun­zio­na­no i cicli for in C++?

I cicli for sono una delle strutture di controllo più im­por­tan­ti nella pro­gram­ma­zio­ne. Per­met­to­no di ripetere più volte de­ter­mi­na­ti blocchi di codice. Sono costrutti es­sen­zia­li nei linguaggi di pro­gram­ma­zio­ne iterativi, pertanto trovate ad esempio cicli for in Java e cicli for in Python. Altri linguaggi, so­prat­tut­to quelli fun­zio­na­li, lavorano secondo il concetto della ri­cor­si­vi­tà anziché con i cicli.

Cicli for in C++

I più comuni cicli for in C++ sono co­sti­tui­ti dai tre elementi es­sen­zia­li seguenti:

  • Ini­zia­liz­za­zio­ne: la variabile del ciclo viene avviata, ovvero le viene assegnato un valore di inizio.
  • Con­di­zio­ne: si esegue il controllo di una con­di­zio­ne. Se è sod­di­sfat­ta, il corpo del ciclo viene eseguito.
  • Istru­zio­ne: qui potete formulare un’istru­zio­ne a piacere. Nor­mal­men­te la variabile del ciclo viene in­cre­men­ta­ta o de­cre­men­ta­ta.

Tutti questi elementi sono indicati separati da punto e virgola nell’in­te­sta­zio­ne del ciclo, quindi sono eseguiti prima del corpo effettivo. I cicli for in C++ possono anche essere definiti “con­trol­la­ti dall’in­te­sta­zio­ne”.

Un semplice esempio di ciclo for in C++ che re­sti­tui­sce sullo schermo i numeri da 0 a 5 potrebbe pre­sen­tar­si come segue:

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

La prima riga dell’esempio di codice sopra contiene l’in­te­sta­zio­ne del ciclo. Qui emerge di nuovo chia­ra­men­te da quali elementi è co­sti­tui­to un ciclo for in C++:

  • Ini­zia­liz­za­zio­ne: con l’istru­zio­ne “int i = 0” viene creata una variabile chiamata “i” a cui è assegnato il valore 0.
  • Con­di­zio­ne: inserendo la con­di­zio­ne “i <= 5” si indica che il corpo del ciclo deve essere eseguito finché il valore di “i” non supera il numero 5.
  • Istru­zio­ne: ogni volta che viene eseguito il ciclo (“ite­ra­zio­ne”), il valore di “i” viene in­cre­men­ta­to di 1.

La parte della con­di­zio­ne del ciclo for può essere tra­la­scia­ta. In questi casi la con­di­zio­ne è con­si­de­ra­ta sempre sod­di­sfat­ta, generando un ciclo infinito. Talvolta, se uti­liz­za­ti in modo mirato, i cicli infiniti possono essere utili. A chi sta imparando C++ capita però spesso di generarli per sbaglio, con con­se­guen­ti com­por­ta­men­ti errati del programma.

Cicli foreach in C++

Oltre ai cicli for di cui abbiamo parlato sopra, dalla versione C++11 è di­spo­ni­bi­le un’altra forma di ciclo, in­tro­dot­ta anch’essa dalla parola chiave “for”. In altri linguaggi di pro­gram­ma­zio­ne come PHP, C# e C++++, i costrutti di questo tipo sono anche chiamati “cicli foreach”. Questi cicli vi per­met­to­no di accedere co­mo­da­men­te a ciascun elemento di una struttura di dati senza dover uti­liz­za­re l’in­di­ciz­za­zio­ne. Di seguito un esempio pratico che re­sti­tui­sce i numeri da 0 a 5:

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

Come potete vedere, la struttura dell’in­te­sta­zio­ne del ciclo è cambiata rispetto al primo esempio di codice. Anziché ini­zia­liz­za­zio­ne, con­di­zio­ne e istru­zio­ne, ci sono solo due parti:

  • Elemento: qui di­chia­ra­te il tipo di dati e il nome di una variabile.
  • Con­te­ni­to­re: qui indicate su quale con­te­ni­to­re deve essere eseguita l’ite­ra­zio­ne.

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 ana­liz­za­to e re­sti­tui­to sullo schermo nel corpo del ciclo con la variabile de­no­mi­na­ta “elemento”.

Consiglio

Uti­liz­za­te lo spazio web di IONOS per mettere online tutti i vostri programmi in C++. Le ampie pos­si­bi­li­tà di backup as­si­cu­ra­no inoltre che i vostri programmi siano sempre protetti dalla perdita di dati.

Per cosa sono uti­liz­za­ti i cicli for in C++?

So­li­ta­men­te i cicli for sono usati ogni volta che si conosce in anticipo il numero di ese­cu­zio­ni del ciclo. Ad esempio, per re­sti­tui­re tutti i multipli dei numeri da 2 a 100, il ciclo for in C++ potrebbe avere l’aspetto seguente:

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

Anche molti noti algoritmi di or­di­na­men­to lavorano con i cicli for. Il vantaggio prin­ci­pa­le rispetto ai cicli while è la maggiore com­pat­tez­za. Fon­da­men­tal­men­te potete comunque sempre so­sti­tui­re i cicli for con quelli while.

L’istru­zio­ne break per in­ter­rom­pe­re i cicli

Può succedere che vogliate terminare an­ti­ci­pa­ta­men­te il ciclo for in C++. Ad esempio, per creare un ciclo infinito che re­sti­tui­sce sullo schermo numeri interi finché non viene raggiunto un numero inserito dall’utente. L’esempio di codice seguente chiarisce la si­tua­zio­ne:

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;
}
}
C++

La parola chiave che nell’esempio di codice sopra in­ter­rom­pe il ciclo è break. Con questa istru­zio­ne, ogni ciclo for in C++ viene terminato im­me­dia­ta­men­te. Dopodiché continua l’ese­cu­zio­ne del programma.

L’istru­zio­ne continue per saltare le ese­cu­zio­ni di un ciclo

Na­tu­ral­men­te può anche succedere che non vogliate in­ter­rom­pe­re l’intero ciclo, ma soltanto saltarne singole ese­cu­zio­ni. Ad esempio, per re­sti­tui­re tutti i numeri pari fino a 100, potete ricorrere al costrutto seguente:

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;
}
C++

Avrete si­cu­ra­men­te notato la parola “continue” nell’esempio di codice. Questa parola chiave fa in modo che ’ese­cu­zio­ne corrente del ciclo sia in­ter­rot­ta, saltando a quella suc­ces­si­va. Il prin­ci­pa­le vantaggio di questa istru­zio­ne è che permette di evitare calcoli inutili, mi­glio­ran­do l’ef­fi­cien­za dei vostri programmi.

Vai al menu prin­ci­pa­le