Sei sulla pagina 1di 46

Strutture di controllo

Programmazione in
Python

Strutture controllo: while

Dario Pescini - Mirko Cesarini


Università degli Studi di Milano-Bicocca

Dipartimento di Statistica e Metodi Quantitativi

dario.pescini@unimib.it 1 / 24
Strutture di controllo

Outline

1 Strutture di controllo

2 / 24
Strutture di controllo

Strutture di controllo

Sequenza

if
Selezione if ... else
if ... elif ... else

Iterazione while
for

3 / 24
Strutture di controllo

Strutture di controllo

Sequenza

if
Selezione if ... else
if ... elif ... else

Iterazione while
for

!! in Python i blocchi di istruzioni si isolano tramite indentazione


· · · · (4 spazi) !!

3 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

while condizione :
· · · ·lista comandi

4 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

y=0.0
x=0.0

print ”y = ”, y, ”\tx = ”, x

while y <= 10 :
y = 0.5 * x + 2

print ”y = ”, y, ”\tx = ”, x
x = x + 1.65

5 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

preverifica
Nel ciclo while la condizione viene verificata sempre prima di
eseguire il blocco di istruzioni.

controllare che la condizione sia soddisfatta prima della prima iterazione

6 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y

y=0.0
x=0.0

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
y=0.0
x=0.0

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

7 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

8 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)
9 1.65 2.825
while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

8 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)
9 1.65 2.825
while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

8 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)
9 1.65 2.825
while y <= 10 : 11 3.3 2.825
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

8 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)
9 1.65 2.825
while y <= 10 : 11 3.3 2.825
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

9 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)
9 1.65 2.825
while y <= 10 : 11 3.3 2.825
y = 0.5 * x + 2 …
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65 45 16.5 10.25

9 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)
9 1.65 2.825
while y <= 10 : 11 3.3 2.825
y = 0.5 * x + 2 …
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65 45 16.5 10.25

9 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
2 0 0
y=0.0
x=0.0 5 0 2
7 1.65 2
print(”y = ”, y, ”\tx = ”, x)
9 1.65 2.825
while y <= 10 : 11 3.3 2.825
y = 0.5 * x + 2 …
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65 45 16.5 10.25
47 18.25 10.25

9 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
y=0.0 2 0 0
x=0.0 5 0 2
print(”y = ”, y, ”\tx = ”, x)
7 1.65 2
9 1.65 2.825
while y <= 10 : 11 3.3 2.825
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x) …
x = x + 1.65 45 16.5 10.25
47 18.25 10.25

10 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

passo x y
1 – 0
y=0.0 2 0 0
x=0.0 5 0 2
print(”y = ”, y, ”\tx = ”, x)
7 1.65 2
9 1.65 2.825
while y <= 10 : 11 3.3 2.825
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x) …
x = x + 1.65 45 16.5 10.25
47 18.25 10.25

10 / 24
Strutture di controllo

Strutture Controllo - Iterazione: WHILE

y=0.0
x=0.0

print(”y = ”, y, ”\tx = ”, x)

while y <= 10 :
y = 0.5 * x + 2
print(”y = ”, y, ”\tx = ”, x)
x = x + 1.65

11 / 24
Strutture di controllo

Trace table

É una tabella che viene costruita per tenere traccia della


dinamica delle variabili del programma.

Per costruirla:
1 si identificano tutte le variabili dichiarate
2 si aggiunge una colonna per ogni variabile identificata
3 si aggiunge una riga ad ogni variazione del contenuto di
una delle variabili
4 si modifica il valore nella cella della tabella associato alla
variabile modificata
5 si riporta il valore delle altre variabili non modificate

12 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3
print(”a = ”,a, ”b = ”, b)

temp = a;
a = b;
b = temp;

print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3 1 1 – –
print(”a = ”,a, ”b = ”, b)

temp = a;
a = b;
b = temp;

print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3 1 1 – –
print(”a = ”,a, ”b = ”, b)
2 1 3 –
temp = a;
a = b;
b = temp;

print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3 1 1 – –
print(”a = ”,a, ”b = ”, b)
2 1 3 –
temp = a;
a = b;
b = temp;

print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3 1 1 – –
print(”a = ”,a, ”b = ”, b)
2 1 3 –
temp = a; 4 1 3 1
a = b;
b = temp;

print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3 1 1 – –
print(”a = ”,a, ”b = ”, b)
2 1 3 –
temp = a; 4 1 3 1
a = b;
b = temp; 5 3 3 1

print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3 1 1 – –
print(”a = ”,a, ”b = ”, b)
2 1 3 –
temp = a; 4 1 3 1
a = b;
b = temp; 5 3 3 1
6 3 1 1
print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

Esempio

a=1 passo a b temp


b=3 1 1 – –
print(”a = ”,a, ”b = ”, b)
2 1 3 –
temp = a; 4 1 3 1
a = b;
b = temp; 5 3 3 1
6 3 1 1
print(”a = ”,a, ”b = ”, b)

13 / 24
Strutture di controllo

WHILE: ciclo infinito

Nel ciclo while è fondamentale che la variabile coinvolta


nella condizione di verifica venga aggiornata durante
l’iterazione altrimenti il ciclo non termina.

Esempio:
x = True

while x == True:
print(’iterazione’)

per interrompere un programma in esecuzione: ctrl + c

14 / 24
Strutture di controllo

Esercizio

Sfruttando il costrutto while si chieda all’utente di inserire un


intero positivo. Il programma terminerà all’inserimento del
primo numero negativo.

inserire un numero positivo:


1
inserire un numero positivo:
14
inserire un numero positivo:
-1

15 / 24
Strutture di controllo

Esercizio

numero = 0
while numero >= 0 :
numero = eval(input(”inserire un numero positivo: ”))

16 / 24
Strutture di controllo

WHILE: contatori

É possibile utilizzare una variabile per contare il numero di iterazioni


svolte:

stringa = ’si’
contatore = 0

while stringa == ’si’:


stringa = input(”vuoi continuare l’iterazione? si/no”)
contatore = contatore + 1
print(’Hai eseguito ’, contatore, ’ iterazioni’)

La variabile che ’conta’ il numero di iterazioni si dice


contatore

17 / 24
Strutture di controllo

WHILE: contatori

É possibile sfruttare un contatore per eseguire un numero


prefissato di iterazioni:

numIterazioni = eval(input(’inserisci il numero di iterazioni


da eseguire ’))

contatore = 0
while contatore < numIterazioni:
print(’Hai eseguito ’, contatore, ’ iterazioni’)
contatore = contatore + 1

print(’il contatore vale: ’, contatore)

18 / 24
Strutture di controllo

operatori di incremento

operatore sintassi funzione


+= var += val incrementa la var di val
-= var -= val decrementa la var di val
*= var *= val moltiplica la var val volte
/= var /= val divide la var per val
assegna a var il
%= var %= val resto della sua di-
visione per val

19 / 24
Strutture di controllo

variabili di accumulo: media

Spesso si utilizzano i cicli per “accumulare” quantità variabili


in una variabile detta d’accumulo o accumulatore.

numIterazioni = 5
media = 0
contatore = 0
while contatore < numIterazioni:
valore = float(input(’inserisci un numero ’))
media += valore
contatore += 1

media /= numIterazioni
print(’il valor medio è ’, media)

20 / 24
Strutture di controllo

WHILE: valore sentinella

Sono valori dello stesso tipo dell’input richiesto all’utente ma


sicuramente non parte dell’input atteso che vengono usati per
interrompere il ciclo.

media = 0
valore = 0
iterazione = −1
while valore >= 0:
media += valore
iterazione +=1
valore = float(input(’inserisci un numero positivo (<0
termina esecuzione)’))

media /= iterazione
print(’il valor medio è ’, media)

21 / 24
Strutture di controllo

Strutture Controllo - Iterazione: FOR

for( espressione1; condizione; espressione2 ) :


lista comandi

22 / 24
Strutture di controllo

Strutture Controllo - Iterazione: FOR

Ne vedremo sintassi ed applicazione dopo le liste.

23 / 24
Strutture di controllo

Algoritmo

Combinando i diagrammi di flusso ....

24 / 24

Potrebbero piacerti anche