Luigi Arlotta
a- a+

Ciclo While

Un ciclo while è leggermente meno sofisticato di unciclo for, ma svolge approssimativamente la stessa funzione.E' composto da un blocco di istruzioni e da unacondizione di uscita. All'ingresso del ciclo e ogni voltache viene eseguito tutto il blocco di istruzioni si effettuail controllo sulla condizione di uscita. Il ciclo terminaquando la condizione d'uscita restituisce il valorefalse.
La sintassi di un ciclo while è la seguente:

 

1.while (condizione){bloccoDiIstrizioni;}

 

dove condizione è la condizione di uscita del ciclo.Il ciclo termina quando condizione restituisce il valorefalse (cioè quando la condizione risulta falsa). Ilprimo controllo sulla condizione viene effettuatoall'ingresso nel ciclo, prima della prima iterazione,è quindi possibile che le istruzioni appartenenti abloccoDiIstruzioni non vengano mai eseguite nel casocondizione risulti immediatamente false. Anche nel caso dicicli while, come per i cicli for, sussiste il pericolo dimandare il processo in loop. Questo avviene quando, alripetersi delle iterazioni, non si verifica mai la condizioned'uscita.

La stessa applicazione vista nel capitolo precedente, checostruisce una tabella è stata realizzata sostituendoil ciclo for con un ciclo while.
Di seguito è riportato il codice. In fig.8.1 èriportato l'output del programma che risultaperfettamente uguale a quello del capitolo precedente.

1.<!--file: helloworld.html --><HTML><HEAD><TITLE>Example 7.01</TITLE></HEAD><BODY><?$j=1;echo ("<TABLE ALIGN=CENTER BORDER=1 CELLSPACING=5>");while ($j<=5) {echo ("<TR>");$k=1;while ($k<=3) {echo ("<TD> Line $j, Cell $k </TD>");$k++;}echo("</TR>");$j++;}echo ("</TABLE>");?></BODY></HTML>

l'output sarà ancora:

Line 1, Cell 1 Line 1, Cell 2 Line 1, Cell 3
Line 2, Cell 1 Line 2, Cell 2 Line 2, Cell 3
Line 3, Cell 1 Line 3, Cell 2 Line 3, Cell 3
Line 4, Cell 1 Line 4, Cell 2 Line 4, Cell 3
Line 5, Cell 1 Line 5, Cell 2 Line 5, Cell 3

PHP propone una sintassi alternativa anche perl'istruzione while. E' possibile evitare l'usodelle parentesi graffe e delimitare il blocco di istruzioniche costituisce il corpo del ciclo con il comando endwhile.Di seguito è riportata la sintassi diun'espressione while che fa uso della parola chiaveendwhile.

 

1.while (condizione)bloccoDiIstrizioni;endwhile;

 

In analogia a quanto mostrato nella descrizione del costruttoif...then...else..., è possibile impostare il ciclowhile in modo che il corpo del ciclo sia costituito daistruzioni HTML. La sintassi è la seguente:

1.<?while (condizione) : ?>istruzione1 in HTML<? endwhile ?>

Infine, in tabella 8.2 è riportato un parallelo tracicli for e while. Le due versioni portano esattamente allostesso risultato.

Ciclo for Ciclo while
1.for ($i=0; $i<10; $i++) {echo("Iterazione n° $i"); }
1.$i=0;while ($i<10) {echo ("Iterazione n° $i");$i++; }
Tab.8.2: Confronto tra cicli for e cicli while