Luigi Arlotta
a- a+

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);
Tab.5.2: Confronto tra cicli for e cicli while

 



Ti potrebbe interessare anche

commenta la notizia

Ci sono 2 commenti