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

Post on 01-May-2015

215 views 0 download

transcript

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Costrutti iterativiCostrutti iterativi

Marco D. Santambrogio – marco.santambrogio@polimi.itVer. aggiornata al 10 Ottobre 2013

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Installation PartyInstallation Party

• Dove: L.06 • Quando:

Sabato 12 Ottobre 9.00am - 12.00pm

2

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

Pseudocodice V1Pseudocodice V1

• 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.ritorna ad 1

5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Pseudocodice V2Pseudocodice V2

• Dati L’insieme dei caratteri ammissibili

{a, b, c, …, z}

1.Richiedere l’inserimento di un carattere

2.Finchè carattere inserito !corretto torna ad 1

3.Stampa a video carattere-32

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codiceMaIuScOli: codice

7

ATTENZIONE!!!2. Finchè carattere inserito !corretto

Identifica il carattere CORRETTO!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MaIuScOli: codice correttoMaIuScOli: codice corretto

8

1.Richiedere l’inserimento di un carattere2.Finchè carattere inserito !corretto torna ad 1

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

9

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: diagramma di flussoMCD: diagramma di flusso

10

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

11

• 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

12

• 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

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

MCD: zoomMCD: zoom

14

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

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: codice: codice

16

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?

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggioreIl maggiore: zoom sul : zoom sul codicecodice

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

19

cont = 0;while (cont < N) {

…;…;cont++;

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

…;…;

}

Il ciclo Il ciclo forfor

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

20

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

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Il maggiore – Il maggiore – while Vs forwhile Vs for

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Ora dovrebbe essere Ora dovrebbe essere chiara…chiara…

23

Seguono un paio di esercizi…

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

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice - errori: codice - errori

25

Cosa succede a giudicead ogni iterazione?

NIENTE!!!!Ciclo infinito!!!

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

NuotoNuoto: codice: codice

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

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

29

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/