Ciclo while in C++

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 e lo scorriamo tutto finchè non troviamo il libro che stavamo cercando, se non lo troviamo passiamo al secondo scaffale e coì via finchè non troviamo il libro o finchè gli scaffali non sono esauriti.

Ecco, questo esempio possiamo immaginare di risolverlo con le iterazioni.

ripeti finchè (condizione) {

istruzioni;

}

Dove la condizione è espressa in modo tale che il ciclo termini se non si trova il libro o si esauriscono gli scaffali.

Le istruzioni sono le operazioni da eseguire.


Ciclo while in C++, iterazione pre-condizionale

L’istruzione while prevede che prima venga valutata la condizione per ripetere il ciclo e poi, se la condizione è 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 semplicemente con un ciclo.

Il ciclo continua finchè n, inizializzato a zero, non raggiunge il valore di 100.

Le istruzioni che farà al suo interno sono molto semplici: per ogni iterazione aggiunge 5 ad n.

Ecco il listato completo dell’esempio utilizzando 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

Inserire n numeri e sommarli.

Inizialmente il programma chiede quanti numeri si vogliono inserire e memorizza il valore in una variabile che ho chiamato 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? metto 3. Dunque n=3.

Ipotizziamo di inserire questi numeri: -8, 9 e 2.

Il contatore parte da zero, quindi i=0 e anche la somma.

Quindi la situazione iniziale è la seguente: i=0 e somma=0.

La condizione i<n nel primo caso sarà 0<3 e dunque è vera, allora entriamo all’interno al ciclo.

Prima iterazione: numero=-8, somma=0-8=-8, i=0+1=1

Si ritorna a valutare la condizione che è ancora vera in quanto 1<3 è vera.

Seconda iterazione: 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 è vera.

Terza iterazione: 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;
}

N.B. Se ad esempio dovessimo dimenticare di incrementare il contatore il ciclo diventerebbe infinito.

Alcuni link utili

Esercizi con switch case in C++

Switch case in C++

If else in C++

Casting in C++

Variabili in C++

Tutorial C++

Successione di Fibonacci in C++

Autore dell'articolo: cristina

Avatar per Coding Creativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *