Ripetizioni con while

Il ciclo while ripete l’esecuzione del blocco di istruzioni finché una certa condizione (espressione logica) è vera

Osserva

  1. prima di entrare si controlla il valore di A
  2. si eseguono un certo numero di istruzioni (un blocco)
  3. alla fine il controllo torna su per ripetere eventualmente l’esecuzione del blocco
  4. se il controllo non viene superato il controllo passa all’istruzione immediatamente successiva al ciclo while 
  5. se il valore di A non viene modificato dalle istruzioni interne si ottiene un ciclo senza fine…
while(a > 0):
    istr_1
    istr_2

In alcuni casi è utile avere un ciclo senza fine: si scrive direttamente True come valore dell’espressione logica!

while(True):
    istr_1
    istr_2

L’interruzione del while si verificherà in corrispondenza di una certa condizione vera

while(True):
    istr_1
    istr_2
    if(a <= 0):
        break

Con indice

La situazione in cui il valore di una variabile controlla il ciclo è molto frequente

a=0             #  1. Inizializzazione 
while(a < 10):  #  2. Controllo 
    istr_1      #  3. Utilizzo di a
    istr_2      #     ... 
    ...         #     ... 
    a=a+1       #  4. Aggiornamento con passo 1

La variabile è gestita fino a 4 volte

  1. inizializzata prima che il ciclo inizi
  2. controllata prima di ogni entrata
  3. utilizzata all’interno del blocco di istruzioni
  4. aggiornata dopo aver svolto le operazioni del blocco

In questi casi è più semplice utilizzare for

for a in range(START, STOP, STEP):
    istr_1
    istr_2
    ...
a = START
while(a < STOP):
    istr_1
    istr_2
    ...      
    a += STEP

L’uso del while è necessario se

  • i valori dell’indice sono numeri decimali (la funzione range() di Python genera solo sequenze di numeri interi)
  • il numero di ripetizioni non è noto a priori.