Perchè introdurlo? è un'istruzione iterativa molto più espressiva di while e do ... while, perchè riunisce in un unico posto la condizione, l'inizializzazione dell'indice e la sua modifica.
Infatti, ai costrutti while e do ... while manca un punto espliciti in cui inizializzare le variabili e un punto esplicito in cui inserire l'istruzione di modifica (all'interno dell'intestazione è presente solo la condizione).
::= for(; ; <istr_dopo_iter>) // Intestazione del ciclo for <istruzione_corpo>
Dato che il linguaggio C++ permette la definizione di variabili in qualsiasi punto del main, può essere inserita un'istruzione di definizione come istruzione iniziale del costrutto for. L'ambito di visibilità della variabile si riduce al solo corpo del ciclo (insieme all'intestazione). Il tempo di vita della variabile coincide con la durata del ciclo.
Richiedono l'utilizzo dell'espressione virgola (,
)
Date le espressioni , , ..., si può ottenere una espressione composta concatenandole con l'operatore virgola: <e1>, <e2>, ..., <eN>
. Le espressioni verranno valutate in maniera sequenziale e il valore dell'espressione composta sarà uguale a quello dell'ultima espressione valutata.
TODO: add esercizio della somma dei primi N numeri naturali
Tutte le istruzioni presenti nell'intestazione del costrutto for possono essere omesse. Se manca la condizione, la si assume sempre vera.
=> ciclo contenuto in un altro ciclo. Funziona con while, do ... while e for
TODO: link esercizi cicli annidati (da quadrato pieno)
Il break permette di uscire immediatamente da un ciclo. Il break fornisce un exit point dal ciclo (oltre alla valutazione della condizione); la maggiore flessibilità del programma potrebbe aumentarne la difficoltà, oltre a "violare" lo schema della programmazione strutturata (verso la logica spaghetti).
Il continue è utilizzabile solo in un ciclo e permette di saltare all'iterazione successiva.