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

Post on 01-May-2015

213 views 0 download

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Costrutti iterativiCostrutti iterativi

Marco D. Santambrogio – marco.santambrogio@polimi.itVer. 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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

ObiettiviObiettivi

• Costrutti iterativi do.. while While for

3

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

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codiceMaIuScOli: codice

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codice correttoMaIuScOli: codice corretto

7

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

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

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

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

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: zoomMCD: zoom

13

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: codice: codice

15

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice - errori: codice - errori

17

Cosa succede a giudicead ogni iterazione?

NIENTE!!!!Ciclo infinito!!!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice: codice

18

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

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: zoom sul : zoom sul codicecodice

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

22

cont = 0;while (cont < N) {

…;…;cont++;

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

…;…;

}

Il ciclo Il ciclo forfor

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;

}

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

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

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore – Il maggiore – while Vs forwhile Vs for

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ora dovrebbe essere Ora dovrebbe essere chiara…chiara…

26

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il fattoriale: codiceIl fattoriale: codice

28

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

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

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

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Coefficiente binomiale: codiceCoefficiente binomiale: codice

32

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

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/