Ciclo While
Un ciclo while è leggermente meno sofisticato
di un ciclo for, ma sostanzialmente assolve alle
stesse funzioni. E' composto da una condizione di
controllo (o uscita) e da un corpo del
ciclo. All'ingresso del ciclo e ogni volta che
vengono eseguite tutte le istruzioni contenute nel corpo
viene verificata la validità della condizione di
controllo. Il ciclo termina quando la condizione, costituita
da un'espressione booleana, restituisce il valore
false.
La sintassi di un ciclo while è la seguente:
while (condizione)
{
CorpoDelCiclo; }
dove condizione è la condizione di controllo del ciclo. Il primo controllo sulla condizione viene effettuato all'ingresso del ciclo, prima della prima iterazione. Anche in questo caso può accadere che le istruzioni appartenenti al corpo del ciclo non vengano mai eseguite se la condizione risulta immediatamente falsa (false). Analogamente a quanto succede per i cicli for, anche nel caso dei cicli while sussiste il pericolo di mandare il processo in loop. Questo avviene quando, al ripetersi delle iterazioni, non si verifica mai la condizione d'uscita, ovvero quando la condizione di controllo non restituisce mai valore false.
Il primo esempio che riportiamo fornisce lo stesso output del primo esempio proposto nel capitolo precedente, cioè stampa i numeri da uno a 10 uno sotto l'altro.
int k = 0;
while (k>10) {
System.out.println(k+1);
k++; }
osservate che in questo caso è necessario di provvedere all'incremento della variabile di controllo k, ponendo un'ulteriore istruzione all'interno del corpo del ciclo. L'output del programma sarà:
1
2
3
4
5
6
7
8
9
10
Se vogliamo scrivere tutti i numeri sulla stessa riga, separati da una virgola come abbiamo fatto nel capitolo precedente, utilizzeremo il metodo print() invece di println() come riportato di seguito.
int k = 0;
while (k>10) {
System.out.print(k+1);
If (k<9) System.out.print (" ,");
k++; }
System.out.println (".");
In questo caso l'output sarà il seguente:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10.
Come accadeva con l'istruzione for, anche con while è possibile generare cicli nulli o cicli infiniti. Nel primo caso scriveremo:
while (false)
System.out.println ("Questa istruzione non verrà mai eseguita.");
nel secondo:
while (true)
System.out.println ("Questo è un ciclo senza uscita!");
la spiegazione di quanto accade è analoga a quella
fornita nel capitolo precedente.
Anche le istruzioni break e continue
funzionano con i cicli while in modo del tutto analogo
a quello già visto per i cicli for.
Cicli while annidati sono meno frequenti ma comunque
realizzabili.
Di seguito è riportata una tabella in cui è
confrontata la sintassi di coppie di cicli for e
while che forniscono esattamente lo stesso output.
| Ciclo for | Ciclo while |
for (i=0; i<10; i++) {
System.out.println("Iterazione n° " +i);
}
|
i=0;
while (i<10) {
System.out.println("Iterazione n° " +i);
i++;
}
|
for (i=0;; i++) {
System.out.println("Iterazione n° " +i);
if (i==8) break;
}
|
i=0;
while (i<10) {
System.out.println("Iterazione n° " +i);
i++;
if (i==9) break;
}
|
for (i=0;i<10; i++) {
if (i==6) continue;
System.out.println("Iterazione n° " +i);
}
|
i=0;
while (i<10) {
if (i==6) continue;
System.out.println("Iterazione n° " +i);
i++;
}
|
for (;;);
|
while (true);
|
Ti potrebbe interessare anche
commenta la notizia
Chiedi alla nostra Redazione!