Ci

Cicli in C++

12 esercizi

Informazioni su Cicli

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.

Sintassi generale

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 componente init è del codice che viene eseguito una sola volta, prima che il ciclo inizi.
  • Il componente condizione deve essere un'espressione che dà come risultato un valore booleano e che stabilisce quando il ciclo deve fermarsi. Il codice dentro il ciclo viene eseguito finché questa condizione è vera. Non appena l'espressione diventa falsa, il ciclo non esegue più nessuna iterazione.
  • Il componente espressione è del codice che viene eseguito alla fine di ogni iterazione.

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

Interludio: incrementi e decrementi

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

I cicli for: un esempio

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).

Break e continue

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 break e continue è ridotto al minimo o evitato del tutto.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Cicli

La pratica è bloccata

Sblocca 4 altri esercizi per esercitarti su Cicli