JavaScript
Lezione 7
Strutture di controllo
Il ciclo while
Ripetere le istruzioni
(senza sapere quante volte)
• In molte situazioni l’algoritmo richiede di ripetere
delle istruzione senza sapere a priori quante
volte queste debbono essere ripetute.
• Esempio: nel gioco dell’impiccato non sappiamo
quante volte il giocatore dovrà inserire la lettera
da indovinare, perché non sappiamo quante
volte sbaglierà lettera e se indovinerà prima di
essere impiccato
Ciclo while
• while è l'istruzione che consente a JavaScript di
eseguire un numero non prestabilito di istruzioni
ripetute con il controllo all'inizio del ciclo.
• La sintassi di un ciclo while è la seguente
while (espressione booleana) {
istruzioni da ripetere;
}
Le istruzioni vengono ripetute fintantoché l’espressione
booleana è vera; quando diventa falsa, si esce dal
ciclo.
Lo schema del while
• JavaScript controlla
se la condizione
booleana è vera.
• Se è vera esegue le
istruzioni del ciclo e
poi torna a
controllare tale
condizione.
• Se è falsa, esce dal
ciclo (o non ci entra
neppure)
true
Cicli infiniti o cicli mai eseguiti
• Se la condizione booleana del while è sempre vera, il ciclo
diventa infinito e dopo un po’ viene mostrato l’avviso:
Esempio
k=2;
while (k > 0) k++;
• Se la condizione booleana del while è falsa già la prima
volta che viene calcolata, l’istruzione del ciclo non viene
mai eseguita
k=2;
while (k < 0) k++;
alert(k); // mostra 2, k non è cambiato
Primi esempi
1) Trova il più piccolo divisore diverso da 1
di un numero x (esempio: se x = 15 deve trovare 3)
x= prompt('inserisci un numero intero maggiore di 1');
k=2;
while (x % k != 0) k++;
alert(k);
Il ciclo deve essere interpretato in questo modo: “fintantoché x non è
multiplo di k aumenta k”
Quando il resto è zero, la condizione diventa falsa ed esce dal ciclo.
Ovviamente, quando k vale x sicuramente il resto è zero e quindi
siamo sicuri che il ciclo non è infinito.
Primi esempi
2) Numero casuale da indovinare
y= parseInt(Math.random()*6)+1; // numero casuale
x= prompt('inserisci un numero intero da 1 a 6','');
while (x != y) {
x= prompt('errato: inserisci un altro numero da 1 a 6','');
}
alert('indovinato!');
L’istruzione interna al ciclo (prompt) viene ripetuta fintantoché il
numero introdotto con il prompt è diverso da quello estratto
a caso. Quindi, quando i numeri coincidono, esce dal ciclo e
comunica con l’alert.