DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio –...
-
Upload
gianna-tedesco -
Category
Documents
-
view
218 -
download
0
Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio –...
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Costrutti iterativiCostrutti iterativi
Marco D. Santambrogio – [email protected]. aggiornata al 27 Marzo 2015
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Umh…Umh…
Per farvi aggiungere al gruppo su Facebook…
…usate un nome significativo!
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Umh…Umh…
Per farvi aggiungere al gruppo su Facebook…
…usate un nome significativo!
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Umh…Umh…
Per farvi aggiungere al gruppo su Facebook…
…usate un nome significativo!
4
nome !significativo
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ma prima…Ma prima…
5
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
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
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Maiuscolo: Maiuscolo: solo ifsolo if
9
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
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
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
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
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
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
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
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?
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!!!
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)
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Maiuscolo: Maiuscolo: ANDAND
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tornando ad oggi…Tornando ad oggi…
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
• Costrutti iterativi do.. while While for
22
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
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaIuScOli: codiceMaIuScOli: codice
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaIuScOli: codiceMaIuScOli: codice
26
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
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
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!
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!
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!
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
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
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
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
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
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
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
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
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaIuScOli: codice correttoMaIuScOli: codice corretto
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaIuScOli: codice correttoMaIuScOli: codice corretto
42
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
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
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
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
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: zoomMCD: zoom
48
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il maggioreIl maggiore: codice: codice
50
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
NuotoNuoto: codice - errori: codice - errori
52
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
NuotoNuoto: codice - errori: codice - errori
53
Cosa succede a giudicead ogni iterazione?
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
NuotoNuoto: codice - errori: codice - errori
54
Cosa succede a giudicead ogni iterazione?
NIENTE!!!!Ciclo infinito!!!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
NuotoNuoto: codice: codice
55
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
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
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il maggioreIl maggiore: zoom sul : zoom sul codicecodice
59
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
61
cont = 0;while (cont < N) {
…;…;cont++;
}for (cont = 0; cont < N; cont++) {
…;…;
}
Il ciclo Il ciclo forfor
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;
}
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il maggiore – for Il maggiore – for : codice: codice
63
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il maggiore – Il maggiore – while Vs forwhile Vs for
64
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ora dovrebbe essere Ora dovrebbe essere chiara…chiara…
65
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
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il fattoriale: codiceIl fattoriale: codice
67
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
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
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/