Luigi Arlotta
a- a+

Ciclo While

Un ciclo while è leggermente meno sofisticatodi un ciclo for, ma sostanzialmente assolve allestesse funzioni. E' composto da una condizione dicontrollo (o uscita) e da un corpo delciclo. All'ingresso del ciclo e ogni volta chevengono eseguite tutte le istruzioni contenute nel corpoviene verificata la validità della condizione dicontrollo. Il ciclo termina quando la condizione, costituitada un'espressione booleana, restituisce il valorefalse.
La sintassi di un ciclo while è la seguente:

while (condizione){CorpoDelCiclo; }

dove condizione è la condizione di controllodel ciclo. Il primo controllo sulla condizione vieneeffettuato all'ingresso del ciclo, prima della primaiterazione. Anche in questo caso può accadere che leistruzioni appartenenti alcorpo del ciclo non vengano mai eseguite se la condizionerisulta immediatamente falsa (false). Analogamente aquanto succede per i cicli for, anche nel caso deicicli while sussiste il pericolo di mandare ilprocesso in loop. Questo avviene quando, al ripetersidelle iterazioni, non si verifica mai la condizioned'uscita, ovvero quando la condizione di controllo nonrestituisce mai valore false.

Il primo esempio che riportiamo fornisce lo stesso output delprimo 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 diprovvedere all'incremento della variabile di controllok, ponendo un'ulteriore istruzione all'internodel 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 capitoloprecedente, utilizzeremo il metodo print() invece diprintln() 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 conwhile è possibile generare cicli nulli ocicli 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 quellafornita nel capitolo precedente.
Anche le istruzioni break e continuefunzionano con i cicli while in modo del tutto analogoa quello già visto per i cicli for.
Cicli while annidati sono meno frequenti ma comunquerealizzabili.

Di seguito è riportata una tabella in cui èconfrontata la sintassi di coppie di cicli for ewhile 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