L'istruzione While in Javascript
Nel linguaggio Javascript l'istruzione While mi consente di realizzare un ciclo condizionato.
La sintassi dell'istruzione While è la seguente:
while ( condizione ) {
// blocco di istruzioni
}
Tra le parentesi tonde è posta la condizione del ciclo.
Fin quando la condizione è soddisfatta lo script esegue la sequenza delle istruzioni poste tra le parentesi graffe ( blocco di istruzioni ).
Quando la condizione non è più soddisfatta ( evento ) lo script conclude il ciclo.
Se la condizione è falsa fin dall'inizio, la struttura while non esegue nemmeno un'iterazione.
Cos'è un ciclo condizionato? Si tratta di un blocco di istruzioni che viene eseguito più volte ( ciclo ) finché non si verifica un particolare evento ( condizione ). Quando l'evento di verifica, il ciclo si conclude e lo script passa all'istruzione successiva. Questa struttura ciclica è detta loop. Non è possibile conoscere in anticipo il numero dei cicli, ossia il numero di volte che il blocco di istruzioni è eseguito, poiché è vincolato al presentarsi di un evento.
Un esempio pratico
Nella prima riga assegno alla variabile var il valore zero.
Nella seconda riga inizia il ciclo condizionato.
var=0;
while (var<10)
{
var=var+1;
document.write(" var ");
}
document.write(" fine ");
In questo script la condizione di reiterazione è l'espressione ( var<10 ). Fin quando è vera, il ciclo continua a girare.
- Se la variabile var è minore di 10 il ciclo continua a girare. Una volta concluso un'iterazione, ne comincia subito un'altra. A ogni iterazione la variabile var viene incrementata di uno e viene stampato a video il suo valore attuale.
- Quando la variabile var assume il valore 10 si verifica l'evento di chiusura del ciclo. La condizione ( var<10 ) non è più soddisfatta, lo script esce dal ciclo ed esegue l'istruzione successiva.
Il risultato finale sullo schermo del browser è il seguente:
0 1 2 3 4 5 6 7 8 9 Fine
Nota. L'ultima istruzione visualizza sullo schermo la parola "Fine". Essendo un'istruzione al di fuori della struttura ciclica, viene eseguita una sola volta.
Esempio 2
Posso usare la struttura iterativa while anche come iteratore per leggere tutti gli elementi di un array
var i=0;
var nomearray = new Array(1, 2, 3);
while(i<nomearray.length) {
document.write(nomearray[i]);
i++;
}
In questo caso l'array è composto solo da tre elementi.
Quindi l'output dello script è semplicemente
123
Il caso del loop infinito e l'uscita forzata. Una struttura ciclica potrebbe restare aperta all'infinito se l'evento non si presenta. Diventa un loop infinito. E' una situazione da evitare perché blocca lo script in eterno e consuma inutilmente un'enorme quantità di risorse del computer. Per questa ragione è utile programmare anche un'uscita forzata dopo N cicli che conclude il loop anche se l'evento di chiusura non si è ancora verificato.
L'istruzione BREAK
L'istruzione break interrompe l'esecuzione del ciclo e passa il controllo alla prima istruzione dopo la struttura ciclica.
var i = 0;
while (i<7) {
i++;
if (i==5) break;
document.write(i);
}
document.write("fine")
L'esecuzione dello script non viene interrotta.
Quando lo script incontra l'istruzione break esce dal ciclo.
1234fine
La prima istruzione dopo il ciclo è l'istruzione di stampa document.write("fine").
L'istruzione CONTINUE
L'istruzione continue termina l'esecuzione dell'iterazione del ciclo per iniziare l'iterazione successiva.
var i = 0;
while (i<7) {
i++;
if (i==5) continue;
document.write(i);
}
document.write("fine");
In questo caso il ciclo non viene interrotto ma solo l'iterazione corrente.
Il risultato sullo schermo è il seguente:
123467fine
Il numero 5 non viene stampato perché la quinta iterazione viene interrotta prima dell'istruzione di stampa document.write(i).