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

34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Costrutti iterativi Marco D. Santambrogio – [email protected] Ver. aggiornata al 20 Marzo 2013

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 20 Marzo 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Costrutti iterativiCostrutti iterativi

Marco D. Santambrogio – [email protected]. aggiornata al 20 Marzo 2013

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

WAT?WAT?

• Il bello dei feedbackIl bello dei feedback

l'ingegnere Nacci è stato molto chiaro l'ingegnere Nacci è stato molto chiaro nelle spiegazioninelle spiegazioni

L'esercitatore ha spiegato la sua L'esercitatore ha spiegato la sua parte troppo velocemente, senza parte troppo velocemente, senza troppa chiarezza, parlando di una troppa chiarezza, parlando di una roba e di un'altra come se stesse roba e di un'altra come se stesse parlando della stessa cosaparlando della stessa cosa

2

WATWAT

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

ObiettiviObiettivi

• Costrutti iterativi do.. while While for

3

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

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

4

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

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

5

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codiceMaIuScOli: codice

6

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codice correttoMaIuScOli: codice corretto

7

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

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

8

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: diagramma di flussoMCD: diagramma di flusso

9

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 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Marzo 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

10

• 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 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Marzo 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

11

• 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 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Marzo 2013.

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

12

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: zoomMCD: zoom

13

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

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

14

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: codice: codice

15

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

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

16

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice - errori: codice - errori

17

Cosa succede a giudicead ogni iterazione?

NIENTE!!!!Ciclo infinito!!!

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice: codice

18

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

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!

19

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

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

20

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: zoom sul : zoom sul codicecodice

21

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

22

cont = 0;while (cont < N) {

…;…;cont++;

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

…;…;

}

Il ciclo Il ciclo forfor

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

23

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 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 20 Marzo 2013.

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

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

24

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore – Il maggiore – while Vs forwhile Vs for

25

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ora dovrebbe essere Ora dovrebbe essere chiara…chiara…

26

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

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,…

27

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il fattoriale: codiceIl fattoriale: codice

28

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

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

29

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Coefficiente binomialeCoefficiente binomiale

• Il numero di scelte di k oggetti fra quelli che costituiscono un insieme di n elementi

• Quindi il numero dei sottoinsiemi di k elementi di un dato insieme di n oggetti, è dato dal cosiddetto coefficiente binomiale:

30

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Coefficiente binomiale: Coefficiente binomiale: flussoflusso

1. Inserire K e N2. Verifico K e N3. Se corretti

A. Calcolare il fattoriale di N (FatN)B. Calcolare il fattoriale di K (FatK)C. Calcolare il fattoriale di N-K (FatNK)D. CoefBin = FatN/(FatK)*FatNK

4. Altrimenti torno a 1

31

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Coefficiente binomiale: codiceCoefficiente binomiale: codice

32

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

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

33

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

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/