In questa guida parleremo del ciclo while in C++, un’istruzione iterativa pre-condizionale, utilizzabile per eseguire tante volte un insieme di istruzioni.
Per capire meglio cos’è un’iterazione facciamo un esempio pratico.
Immaginiamo di voler prendere un libro in una biblioteca, ma che non sappiamo dove sia collocato. Allora ci toccherà fare una ricerca scaffale per scaffale. Iniziamo dal primo scaffale e lo scorriamo tutto finchè non troviamo il libro che stavamo cercando, se non lo troviamo passiamo al secondo scaffale e così via finchè non troviamo il libro o finchè gli scaffali non sono esauriti.
Ecco, possiamo immaginare di risolvere questo esempio utilizzando le iterazioni.
Sintassi del ciclo while in C++
La sintassi è piuttosto semplice:
while (condizione) {
istruzioni;
}
Dove la condizione è espressa in modo tale che il ciclo termina se non si trova il libro, facendo riferimento all’esempio precedente, o si esauriscono gli scaffali.
Le istruzioni invece sono le operazioni da eseguire.
Ciclo while in C++, iterazione pre-condizionale
L’istruzione while prevede che prima venga valutata la condizione e poi, se è vera, verranno eseguite le operazioni all’interno del ciclo. Ecco perchè si definisce pre-condizionale.
Quando la condizione diventa falsa il ciclo si interrompe e si passa all’istruzione successiva.
Il ciclo potrebbe non essere mai eseguito se la condizione non fosse vera in partenza.
Il ciclo potrebbe essere infinito se la condizione risultasse sempre vera. In questo caso si genera un loop.
In quest’ultimo caso quindi si deve stare attenti a modificare lo stato della condizione se non si vuole generare un ciclo infinito.
Esempio 1
Generiamo i numeri da 5 a 100, a step di 5, utilizzando il ciclo while in C++.
Innanzitutto utilizziamo una variabile intera n che inizializziamo a 0 e che a mano a mano incrementeremo di 5 fino ad arrivare a 100.
Quindi all’interno del ciclo while le istruzioni che verranno eseguite sono solo incremento e visualizza.
Appena la condizione diventa falsa si esce fuori dal ciclo.
Ecco il listato completo dell’esempio che utilizza il while in C++.
#include <iostream>
using namespace std;
int main(){
int n = 0;
while(n < 100){
n += 5;
cout << n << endl;
}
return 0;
}
Esempio 2
Utilizzando il ciclo while, inserire n numeri e sommarli.
Inizialmente il programma chiede quanti numeri si vogliono inserire e memorizza il valore, inserito da tastiera, in una variabile che chiamo n.
Dopo utilizzo una variabile contatore di nome i che inizializzo a zero.
Quindi con un ciclo while che continua finchè il contatore i è minore di n, sommo tutti gli elementi utilizzando una variabile somma precedentemente inizializzata a zero.
Facciamo una dimostrazione pratica di utilizzo del ciclo while in C++
Ipotizziamo di voler inserire 3 numeri, quindi alla domanda quanti numeri vuoi inserire? Inserisco da tastiera il numero 3. Dunque n diventa 3.
Dopo inseriamo ad esempio questi numeri: -8, 9 e 2.
Il contatore e la somma sono inizializzati a zero, quindi la situazione iniziale è la seguente: i=0 e somma=0.
La condizione i<n nel primo caso sarà 0<3, dunque è vera e allora entriamo all’interno al ciclo per eseguire le istruzioni che sono contenute all’interno delle parentesi graffe,
Prima iterazione: inserisco il primo numero quindi numero=-8, somma=0-8=-8, i=0+1=1
Si ritorna a valutare la condizione che è ancora vera in quanto 1<3.
Seconda iterazione: inserisco il secondo numero numero=9, somma=-8+9=1, i=1+1=2
Dunque si ritorna nuovamente a valutare la condizione che è ancora vera in quanto 2<3.
Terza iterazione: inserisco il terzo numero numero=2, somma=1+2=3, i=2+1=3
Infine si ritorna alla condizione che è falsa 3<3 e quindi si esce dal ciclo e si stampa la somma finale che in questo esempio vale 3.
Ecco il listato completo che rappresenta l’esempio di utilizzo del ciclo while in C++.
#include <iostream>
using namespace std;
int main() {
int n, numero, somma = 0, i = 0;
cout << "Quanti numeri vuoi inserire?: " << endl;
cin >> n;
while(i < n){
cout << "Numero:" << endl;
cin >> numero;
somma += numero;
i++;
}
cout << "La somma e': " << somma << endl;
return 0;
}
Abbiamo inserito i++ che è equivalente a i=i+1.
Ovvimente da adesso utilizzate questa notazione per indicare gli incrementi di 1 o i decrementi, come spiego nel prossimo paragrafo.
Incremento e decremento
++ incremento unitario
Ad esempio i++; equivale a fare i=i+1;
— decremento unitario
Ad esempio i–; equivale a fare i=i-1;
N.B. Se ad esempio, negli esempi precedenti, dovessimo dimenticare di incrementare il contatore il ciclo diventerebbe infinito.
Alcuni link utili
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
3- Operatori di assegnazione in C++
Successione di Fibonacci in C++