3. Il costrutto di iterazione
Il linguaggio C/C++ dispone di tre tipi diversi di istruzioni iterative:
while, do…while e for.
L’istruzione while
L’istruzione while prevede il controllo in testa: si tratta quindi di un
costrutto pre-condizionale. Il ciclo viene eseguito finché la condizione è vera e
termina non appena la condizione diventa falsa.
| Pseudocodice | Diagramma a blocchi | C/C++ |
|---|---|---|
| MENTRE (<Condizione>) ESEGUI <Istruzioni> FINEMENTRE |
![]() |
while(<Condizione>) { <Istruzioni>; } |
Esempio 1 – Somma dei numeri da 1 a N
int num, k, sommaNumeri;
k = 1;
sommaNumeri = 0;
cout << "Inserire un numero positivo: "; cin >> num;
while(k <= num){
sommaNumeri += k;
k++;
}
cout << "La somma dei numeri da 1 a " << num
<< " è " << sommaNumeri << endl;
Il ciclo viene eseguito finché la condizione k <= num è vera.
Appena k supera num, la condizione diventa falsa e
il ciclo termina.
Esempio 2 – Calcolo della media di numeri positivi inseriti
int a, i = 0, t = 0;
float r;
cout << "Inserisci un numero: "; cin >> a;
while(a >= 0){
i++;
t += a;
r = (float)t / i;
cout << "Media attuale: " << r << endl;
cout << "Inserisci un numero: "; cin >> a;
}
cout << "Media finale: " << r << endl;
Esempio 3 – Somma di numeri positivi inseriti
int a, t = 0;
cout << "Inserisci un numero: "; cin >> a;
while(a >= 0){
t += a;
cout << "Somma attuale = " << t << endl;
cout << "Inserisci un numero: "; cin >> a;
}
cout << "Somma finale = " << t << endl;
Approfondimento: ciclo while
Un ciclo con ripetizione precondizionale prevede il controllo iniziale della condizione;
esso si rappresenta con l’istruzione while.
while(condizione){
istruzioni;
}
È interessante osservare i due esempi seguenti:
// Stampa i numeri da 10 a 20
int x = 9;
while(x < 20){
x++;
cout << " " << x;
}
// Output: 10 11 12 ... 20
// Stampa solo 50? No! Il ciclo non parte
int x = 50;
while(x < 20){
x++;
cout << " " << x;
}
// Il ciclo non viene eseguito nemmeno una volta
Nel secondo caso la condizione del while è falsa sin da subito, quindi
il corpo del ciclo non viene mai eseguito.
