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.