L’istruzione while
¶
- Come l’istruzione
if
, ilwhile
usa un’espressione booleana per controllare il flusso di esecuzione. - Il corpo del while sarà ripetuto finché l’espressione è valutata
True
.
La figura seguente mostra il flusso di esecuzione.
- Possiamo usare il ciclo
while
per creare qualsiasi iterazione desideriamo, includendo anche ciò che abbiamo fatto in precedenza con il ciclofor
. - I programmi che abbiamo fatto con il
for
possono essere riscritti usando ilwhile
. - Nel programma che fa la somma dei primi n numeri interi, anziché usare la funzione
range
dobbiamo produrre tali valori da noi. Per esempio possiamo creare una variabileaNumber
inizializzata a 1, il primo numero della somma. - Ogni iterazione somma
aNumber
alla somma corrente, finché non tutti i valori sono stati considerati. - Per controllare l’iterazione, dobbiamo creare una espressione booleana che viene valutata
True
finché vogliamo continuare ad aggiungere valori al totale. In questo caso, finchéaNumber
è minore o uguale al limite dobbiamo continuare a fare le somme.
Qui di seguito troviamo una nuova versione del programma che segue lo schema appena illustrato.
Note
I nomi delle variabili sono stati scelti per aiutare la leggibilità.
Più formalmente, questo che segue è il flusso di esecuzione dell’istruzione while
:
- Valuta la condizione, ottenendo
False
oppureTrue
. - Se la condizione è
False
, esce dall’istruzionewhile
e continua l’esecuzione all’istruzione successiva fuori dalwhile
. - Se la condizione è
True
, esegue ogni istruzione nel corpo e poi ritorna al passo di valutazione della condizione.
- Il corpo consiste di tutte le istruzioni indentate sotto l’intestazione.
- Questo flusso di esecuzione è chiamato ciclo.
- Se la condizione iniziale vale
False
la prima volta, le istruzioni nel corpo non vengono mai eseguite. - Il corpo del ciclo dovrebbe cambiare il valore di una o più variabili per far diventare la condizione
False
e far terminare il ciclo. - Altrimenti il ciclo si ripeterà per sempre. Questo è chiamato ciclo infinito.
Nel caso mostrato sotto, possiamo dimostrare che il ciclo termina perché il valore di aBound
è finito, e possiamo vedere che il valore di aNumber
viene incrementato ogni volta attraverso il loop, in modo che a un certo punto superi aBound
. Negli altri casi, non è facile dimostrarlo.