L’istruzione while

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.

Articoli simili