I cicli servono a eseguire ripetutamente una certa logica.
I due tipi più comuni sono il while loop (ciclo indefinito) e il for loop (ciclo definito, o contato).
Esiste anche il ciclo for each, che vedremo in un concetto successivo.
Il for loop è formato da un'intestazione e da un blocco di codice che contiene il corpo del ciclo racchiuso tra parentesi graffe.
L'intestazione è composta da 3 componenti separati da punti e virgola ;: init-statement, condizione e un'altra espressione.
Ognuno di questi componenti può essere vuoto.
for (init-statement; condition; expression) {
some_statement;
}
Il while loop esegue il suo corpo finché la sua condizione è vera.
Lo snippet di codice qui sotto mostra come trasformare un ciclo for in un ciclo while.
init-statement;
while(condition) {
some_statement;
expression;
}
Quando si lavora con i cicli, spesso serve aggiungere 1 o sottrarre 1 a una variabile contatore.
L'operazione è così comune che esistono degli operatori appositi: ++ e --.
Esistono in una forma prefissa e una postfissa. La forma prefissa modifica la variabile prima che venga usata nell'istruzione, quella postfissa dopo. Nella maggior parte dei casi probabilmente ti serve la forma prefissa.
int a{3};
int b{--a};
// b is 2, a is now 2
int c{a++};
// c is 2, a is now 3
Di solito il componente init inizializza una variabile contatore, la condizione controlla se il ciclo deve continuare o fermarsi e il componente post incrementa il contatore alla fine di ogni ripetizione.
int sum{0};
for (int i{1}; i < 10; ++i) {
sum += i;
}
Questo ciclo somma i numeri da 1 a 9 (incluso 9).
All'interno del corpo di un ciclo, puoi usare la parola chiave break per interrompere del tutto l'esecuzione del ciclo:
int sum{2};
while(true) {
sum *= 2;
if (sum > 1000)
break;
}
// sum is now 1024
Al contrario, la parola chiave continue interrompe solo l'esecuzione dell'iterazione corrente e passa a quella successiva:
int equal_sum{0};
for (int i{1}; i < 7; ++i) {
if (n%2 == 1) {
continue;
}
equal_sum += i;
}
// equal_sum is now 12
Nota: di solito è più facile capire la logica del ciclo quando l'uso di
breakecontinueè ridotto al minimo o evitato del tutto.