DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio –...

70
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Costrutti iterativi Marco D. Santambrogio – [email protected] Ver. aggiornata al 27 Marzo 2015

Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio –...

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Costrutti iterativiCostrutti iterativi

Marco D. Santambrogio – [email protected]. aggiornata al 27 Marzo 2015

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Umh…Umh…

Per farvi aggiungere al gruppo su Facebook…

…usate un nome significativo!

2

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Umh…Umh…

Per farvi aggiungere al gruppo su Facebook…

…usate un nome significativo!

3

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Umh…Umh…

Per farvi aggiungere al gruppo su Facebook…

…usate un nome significativo!

4

nome !significativo

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma prima…Ma prima…

5

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problema: errori sullProblema: errori sull’’inputinput

• Problema Preso un dato inserito da tastiera Per potervi applicare la trasformazione

di nostro interesse Dobbiamo prima verificare che il dato sia

coerente con quanto ci aspettiamo

• Soluzione Definire l’insieme dei caratteri validi Verificare l’appartenenza del carattere

inserito, all’insieme dei caratterei validi

6

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

PseudocodicePseudocodice

• Dati L’insieme dei caratteri ammissibili

{a, b, c, …, z}

1. Richiedere l’inserimento di un carattere

2. Se carattere inserito corretto3. Allora stampa a video carattere-324. Altrimenti stampa a video un

messaggio di errore

7

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Dati L’insieme dei caratteri ammissibili

{a, b, c, …, z}

• Il carattere inserito deve essere =>a <= z

8

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Maiuscolo: Maiuscolo: solo ifsolo if

9

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y?

10

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y? Se X = 0?

11

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita FALSA

12

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita FALSA Se Y = 0?

13

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita FALSA Se Y = 0? Vogliamo una uscita FALSA

14

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita FALSA Se Y = 0? Vogliamo una uscita FALSA Se X = 1 e Y = 1? Uscita VERA!

15

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y?

16

X Y USCITA

0 0 00 1 01 0 01 1 1

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y?

17

X Y USCITA

0 0 00 1 01 0 01 1 1

Vi ricorda

qualche cosa?

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y?

18

X Y USCITA

0 0 00 1 01 0 01 1 1

Vi ricorda

qualche cosa?

AND!!!

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Condizione da verificareCondizione da verificare

• Il carattere inserito deve essere X: =>a Y: <= z

• Come vogliamo che si comporti il nostro modello rispetto a X e Y?

19

Vi ricorda

qualche cosa?

AND!!!

X Y X AND Y0 0 00 1 01 0 01 1 1(prodotto logico)

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Maiuscolo: Maiuscolo: ANDAND

20

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tornando ad oggi…Tornando ad oggi…

21

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

ObiettiviObiettivi

• Costrutti iterativi do.. while While for

22

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problema: caratteri Problema: caratteri MaIuScOliMaIuScOli

• Si scriva un programma che, preso un carattere minuscolo da tastiera, ne riporta a video l’equivalente maiuscolo Si continui a chiedere l’inserimento

del carattere, fino a quando questo non è corretto

23

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

PseudocodicePseudocodice

• Dati L’insieme dei caratteri ammissibili

{a, b, c, …, z}

1.Richiedere l’inserimento di un carattere

2.Se carattere inserito correttoA.Allora stampa a video carattere-32

3.AltrimentiA.stampa a video un messaggio di erroreB.ritorno ad 1

24

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codiceMaIuScOli: codice

25

Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codiceMaIuScOli: codice

26

Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come si comporta il nostro modello rispetto a X e Y?

NOTA: quando VERA, continua!

27

Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come si comporta il nostro modello rispetto a X e Y?

NOTA: quando VERA, continua!

28

X Y X AND Y0 0 00 1 01 0 01 1 1

Page 29: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come si comporta il nostro modello rispetto a X e Y?

NOTA: quando VERA, continua!

29

X Y X AND Y0 0 00 1 01 0 01 1 1

Continua quando

X e Y sono VERE!

Page 30: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come si comporta il nostro modello rispetto a X e Y?

NOTA: quando VERA, continua!

30

X Y X AND Y0 0 00 1 01 0 01 1 1

È quello che

vogliamo?Continua quando

X e Y sono VERE!

Page 31: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come si comporta il nostro modello rispetto a X e Y?

NOTA: quando VERA, continua!

31

X Y X AND Y0 0 00 1 01 0 01 1 1

È quello che

vogliamo?Continua quando

X e Y sono VERE!

NO!

Page 32: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0?

32

Page 33: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita VERA

33

Page 34: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita VERA Se Y = 0?

34

Page 35: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita VERA Se Y = 0? Vogliamo una uscita VERA

35

Page 36: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita VERA Se Y = 0? Vogliamo una uscita VERA Se X = 1 e Y = 1? Uscita FALSA!

36

Page 37: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y?

37

X Y USCITA0 0 10 1 11 0 11 1 0

Page 38: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y?

38

Vi ricorda

qualche cosa?X Y USCITA0 0 10 1 11 0 11 1 0

Page 39: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y?

39

X Y USCITA0 0 10 1 11 0 11 1 0

X Y X AND Y0 0 00 1 01 0 01 1 1

Page 40: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ma il Ma il modellomodello è corretto? è corretto?

• X: ‘a’ <= carattere• Y: ‘z’ <= carattere

• Come vorremmo che si comportasse il nostro modello rispetto a X e Y?

40

X Y Z: X AND Y !Z

0 0 0 10 1 0 11 0 0 11 1 1 0

X Y USCITA0 0 10 1 11 0 11 1 0

X Y X AND Y0 0 00 1 01 0 01 1 1

Page 41: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codice correttoMaIuScOli: codice corretto

41

Page 42: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codice correttoMaIuScOli: codice corretto

42

Page 43: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: pseudocodiceMCD: pseudocodice

1. Leggi A e B2. min= il minimo tra A e B3. trovato = 0; MCD = min;4. Finche’ trovato != 1

1. Se MCD divide A e B1. Allora trovato = 1 2. Altrimenti MCD = MCD - 1

5. Stampa MCD

43

Page 44: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: diagramma di flussoMCD: diagramma di flusso

44

Inizio Leggi A e B

min=minimo{A,B}trovato = 0MCD=min

trovato!=1?

trovato!=1?

MCD divide A e B

MCD divide A e B

trovato = 1

Stampa MCD

Fine

no

nosi

si

MCD=MCD -1

Page 45: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

45

• Itera l’esecuzione di una istruzione finché una certa condizione è vera

int a, b;scanf("%d%d", &a, &b);while ( b > 0 ) {

a = a + a;--b;

}printf ("Il valore di a ora è %d", a);

Come traduco il Come traduco il finchéfinché? ? WHILEWHILE

condizione di PERMANENZA nel ciclo

Page 46: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

46

• Itera l’esecuzione di una istruzione fintantoché una certa condizione è vera

int a, b;scanf("%d%d", &a, &b);while ( b > 0 ) {

a = a + a;--b;

}printf ("Il valore di a ora è %d", a);

Che cosa calcola?

la funzione f(a,b) =a*2b se b>0

a se b≤0

Il ciclo (loop) whileIl ciclo (loop) while

Page 47: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tornando al MCD… il Tornando al MCD… il codicecodice

1. trovato = 0;

1. Leggi A e B

1. min= il minimo tra A e B

2. MCD = min;3. Finche’ trovato != 1

1. Se MCD divide A e B1. Allora trovato = 1 2. Altrimenti MCD = MCD -

1

4. Stampa MCD

47

Page 48: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: zoomMCD: zoom

48

Page 49: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore tra N numeriIl maggiore tra N numeri

• Problema Trovare il maggiore tra N numeri positivi

inseriti da tastiera

• Soluzione Conoscere N Richiedere l’inserimento degli N valori Ricerca del maggiore tra gli N valori

49

Page 50: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: codice: codice

50

Page 51: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

La gara di nuotoLa gara di nuoto

• Problema Si hanno10 giudici

• 1 giudice = 1 voto Ogni voto è nell’itervallo 0-10 Dato un tuffo, calcolare

• La media dei voti• Il voto massimo ed il voto minimo

51

Page 52: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice - errori: codice - errori

52

Page 53: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice - errori: codice - errori

53

Cosa succede a giudicead ogni iterazione?

Page 54: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice - errori: codice - errori

54

Cosa succede a giudicead ogni iterazione?

NIENTE!!!!Ciclo infinito!!!

Page 55: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice: codice

55

Page 56: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

OsservazioniOsservazioni

• Problema 1 Si continui a chiedere l’inserimento

del carattere, fino a quando questo non è corretto

• Problema 2 Trovare il maggiore tra N numeri

inseriti da tastiera

56

Page 57: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

OsservazioniOsservazioni

• Problema 1 Si continui a chiedere l’inserimento

del carattere, fino a quando questo non è corretto

• Problema 2 Trovare il maggiore tra N numeri

inseriti da tastiera

Del problema 2 conosco il numero di iterazioni!

57

Page 58: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore tra N numeriIl maggiore tra N numeri

• Problema Trovare il maggiore tra N numeri inseriti

da tastiera

• Soluzione Conoscere N Richiedere l’inserimento degli N valori Ricerca del maggiore tra gli N valori

58

Page 59: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: zoom sul : zoom sul codicecodice

59

Page 60: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore tra N numeri: Il maggiore tra N numeri: osservazioneosservazione

Osservazione: Perchè usare un while se conosco il numero di iterazioni del cliclo?

60

Page 61: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

61

cont = 0;while (cont < N) {

…;…;cont++;

}for (cont = 0; cont < N; cont++) {

…;…;

}

Il ciclo Il ciclo forfor

Page 62: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

62

ATTENZIONE

Il ciclo forIl ciclo for

for ( exp.A; cond; exp.I ) {ist.1;...ist.N;

}

exp.A;while ( cond )

{ist.1;...ist.N;exp.I;

}

Page 63: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore – for Il maggiore – for : codice: codice

63

Page 64: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore – Il maggiore – while Vs forwhile Vs for

64

Page 65: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ora dovrebbe essere Ora dovrebbe essere chiara…chiara…

65

Page 66: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il fattorialeIl fattoriale

• Dato n, intero positivo, si definisce n fattoriale e si indica con n! il prodotto dei primi n numeri interi positivi minori o uguali di quel numero. In formule

• Nota: 0! = 1 1! = 1 2! = 2, 3! = 6,…

66

Page 67: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il fattoriale: codiceIl fattoriale: codice

67

Page 68: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sul fattoriale: Nota sul fattoriale: permutazionipermutazioni

Vi sono n! diverse sequenze formate da n oggetti distinti

Vi sono n! permutazioni di n oggetti iI fattoriali enumerano le

permutazioni

68

Page 69: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Problemi di fine giornata…Problemi di fine giornata…

• Modificare gli esercizi di oggi, andando, dove necessario, ad inserire il controllo sugli ingressi

• Trovare il maggiore tra N numeri positivi inseriti da tastiera (richiedendo il numero se negativo)

• Dati N numeri, dire se questi sono tutti positivi

• Dati N numeri, riportarne a video il modulo

69

Page 70: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Fonti per lo studio + CreditsCredits• Fonti per lo studio

Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill• Capitolo 6

• Credits

Daniele Braga - http://home.dei.polimi.it/braga/