Il ciclo while ripete l’esecuzione del blocco di istruzioni finché una certa condizione (espressione logica) è vera
Osserva
- prima di entrare si controlla il valore di A
- si eseguono un certo numero di istruzioni (un blocco)
- alla fine il controllo torna su per ripetere eventualmente l’esecuzione del blocco
- se il controllo non viene superato il controllo passa all’istruzione immediatamente successiva al ciclo while
- se il valore di A non viene modificato dalle istruzioni interne si ottiene un ciclo senza fine…
1 2 3 |
while(a > 0): istr_1 istr_2 |
Se si desidera un ciclo senza fine si può scrivere direttamente True come valore dell’espressione logica
1 2 3 |
while(True): istr_1 istr_2 |
La situazione in cui il valore di una variabile controlla il ciclo è molto frequente.
La variabile è gestita fino a 4 volte
- inizializzata prima che il ciclo inizi
- controllata prima di ogni entrata
- utilizzata all’interno del blocco di istruzioni
- aggiornata dopo aver svolto le operazioni del blocco
1 2 3 4 5 6 |
a=0 # 1. Inizializzazione while(a < 10): # 2. Controllo istr_1 # 3. Utilizzo istr_2 # ... ... # ... a=a+1 # 4. Aggiornamento (passo 1) |
Se la variabile assume valori numerici progressivi diventa un indice.
Il valore utilizzato per aggiornare l’indice è il passo (step), la ragione della progressione.
Esempi
L’uso più tradizionale dei cicli è per la generazione di sequenze di numeri in esercizi di tipo matematico
- Da 0 a 9
1234i=0while(i <= 9): # Valore 9 compresoprint(i) # 0 1 2 3 4 5 6 7 8 9i=i+1 - Da 0 a 10 (escluso)
1234i=0while(i < 10): # Valore 10 esclusoprint(i) # 0 1 2 3 4 5 6 7 8 9i=i+1 - Da 0 a 8, pari
1234i=0while(i <= 8): # Ultimo valore notoprint(i) # 0 2 4 6 8i=i+2 - Da 1 a 100 (escluso), passo 3
1234i=0while(i < 100): # Ultimo valore non noto...print(i) # 1 4 7 10 ... 94 97i=i+3 - Da 5.0 a 10.0, con i mezzi
1234i=5.0while(i <= 10.0):print(i) # 5.0 5.5 6.0 6.5 7.0 7.5 8.0 8.5 9.0 9.5 10.0i=i+0.5 # Incremento reale - Da 5.0 a 10.0 (escluso), con i quarti
1234i=5.0while(i < 10.0):print(i) # 5.0 5.25 5.5 5.75 ... 9.5 9.75i=i+0.25 - Da 9 a 0
1234i=9while(i >= 0):print(i) # 9 8 7 6 5 4 3 2 1 0i=i-1 # Decremento di 1, passo -1 - Da 90 a 0 (escluso), passo -21
1234i=90while(i > 0): # Ultimo valore?print(i) # 90 69 48 27 6i=i-21 # Passo -21 - Da 2 a 1000 (escluso), potenze di 2
1234p=2while(p < 1000): # Ultimo valore?print(i) # 2 4 8 16 32 64 128 256 512i=2*i - …
1...