Affronteremo in questo articolo il ciclo do-while in C++, che viene utilizzato quando il corpo dell'iterazione deve essere eseguito almeno una volta.
Il ciclo do-while è dunque un'istruzione post-condizionale dove, prima sono eseguite le istruzioni che formano il blocco dell'iterazione e dopo è eseguita la condizione per stabilire se ripetere il ciclo oppure no.
Se la condizione è vera allora si ripete il ciclo, altrimenti si passa all'istruzione successiva.
Ciclo do-while in C++, iterazione post-condizionale
Vediamo dunque la sintassi dell'istruzione do-while in C++.
do {
istruzioni;
} while (condizione);
Con istruzioni intendiamo o una singola operazione o un blocco di istruzioni.
La semantica del costrutto do-while è dunque la seguente:
1. Si esegue l'istruzione (o più di una);
2. Si valuta la condizione, la quale può essere vera o falsa.
3. Se la condizione è vera si ritorna al punto 1; altrimenti si passa all'istruzione successiva.
Esempio 1 - do-while in C++
Generiamo i numeri da 5 a 100, a step di 5, utilizzando il ciclo do-while.
Riprendiamo dunque l'esercizio svolto con il while nel precedente articolo sui cicli e lo modifichiamo utilizzando il do-while, al fine di paragonare i due metodi.
Il procedimento è molto semplice.
Inizializzo dapprima n a zero, poi lo incremento di 5 e lo visualizzo. Quando n non è più minore di 100 esco dal ciclo ed eseguo l'istruzione successiva.
Ecco dunque il listato dell'esempio proposto con il ciclo do-while in C++.
#include <iostream>
using namespace std;
int main() {
for (int n = 5; n <= 100; n += 5) {
cout << n << endl;
}
return 0;
}
Esempio 2
Inserire n numeri e sommarli finchè non si inserisce il numero zero.
Dapprima inizializziamo a zero la variabile per la somma: somma=0;

50 Algoritmi per imparare C++
Struttura dati, puntatori e algoritmi classici in C++, passo passo.
Poi eseguiamo le istruzioni all'interno del ciclo: inseriamo dunque un numero, se il numero è uguale a zero allora non eseguiamo più il ciclo, altrimenti continuiamo le iterazioni finchè non immettiamo lo zero.
La condizione impostata è dunque: while (numero!=0);
Ecco quindi il listato dell'esempio proposto con il ciclo do-while in C++.
#include <iostream>
using namespace std;
int main() {
int numero, somma = 0;
do {
cout << "Inserisci un numero (0 per terminare): ";
cin >> numero;
somma += numero;
} while (numero != 0);
cout << "La somma totale è: " << somma << endl;
return 0;
}
Si può anche evitare di stampare lo 0.
#include <iostream>
using namespace std;
int main() {
int numero, somma = 0;
do {
cout << "Inserisci un numero (0 per terminare): ";
cin >> numero;
if (numero != 0)
somma += numero;
} while (numero != 0);
cout << "La somma totale è: " << somma << endl;
return 0;
}
Esempio 3
Inserire un numero in input e se è negativo richiederlo nuovamente.
Controlliamo numero < 0 → se è vero, stampa un messaggio di errore e ripete la richiesta.
Usiamo il ciclo do-while → in questo modo il blocco viene eseguito almeno una volta. È utile perché l’utente deve inserire un numero almeno una volta.
Quando l’utente inserisce un numero non negativo, il ciclo termina e viene stampato il numero valido.
Allego dunque il listato dell'esempio proposto con il ciclo do-while in C++.
#include <iostream>
using namespace std;
int main() {
int numero;
// Continua a chiedere finché il numero è negativo
do {
cout << "Inserisci un numero (non negativo): ";
cin >> numero;
if (numero < 0) {
cout << "Errore: il numero non può essere negativo. Riprova.\n";
}
} while (numero < 0);
cout << "Hai inserito: " << numero << endl;
return 0;
}
In questo modo si effettua dunque un controllo dell'input.
Questi sono solo alcuni semplici esempio sul ciclo do-while in C++.
Alcuni link utili
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
3- Operatori di assegnazione in C++
Successione di Fibonacci in C++
