Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGianna Tedesco Modificato 9 anni fa
1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 27 Marzo 2015
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEUmh… Per farvi aggiungere al gruppo su Facebook… …usate un nome significativo! 2
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEUmh… Per farvi aggiungere al gruppo su Facebook… …usate un nome significativo! 3
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEUmh… Per farvi aggiungere al gruppo su Facebook… …usate un nome significativo! 4 nome !significativo
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma prima… 5
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: errori sull’input 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
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEPseudocodice Dati L’insieme dei caratteri ammissibili {a, b, c, …, z} 1. Richiedere l’inserimento di un carattere 2. Se carattere inserito corretto 3. Allora stampa a video carattere-32 4. Altrimenti stampa a video un messaggio di errore 7
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione da verificare Dati L’insieme dei caratteri ammissibili {a, b, c, …, z} Il carattere inserito deve essere =>a <= z 8
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Maiuscolo: solo if 9
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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 0 0 1 0 1 0 0 11 1
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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 0 0 1 0 1 0 0 11 1 Vi ricorda qualche cosa?
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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 0 0 1 0 1 0 0 11 1 Vi ricorda qualche cosa? AND!!!
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Condizione 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 Y 0 0 0 0 1 0 1 0 0 11 1 (prodotto logico)
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Maiuscolo: AND 20
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tornando ad oggi… 21
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Costrutti iterativi do.. while While for 22
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Problema: caratteri MaIuScOli 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
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEPseudocodice Dati L’insieme dei caratteri ammissibili {a, b, c, …, z} 1.Richiedere l’inserimento di un carattere 2.Se carattere inserito corretto A.Allora stampa a video carattere-32 3.Altrimenti A.stampa a video un messaggio di errore B.ritorno ad 1 24
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice 25
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice 26
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: ‘z’ <= carattere Come si comporta il nostro modello rispetto a X e Y? NOTA: quando VERA, continua! 27
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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 Y 0 0 0 0 1 0 1 0 0 11 1
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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 Y 0 0 0 0 1 0 1 0 0 11 1 Continua quando X e Y sono VERE!
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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 Y 0 0 0 0 1 0 1 0 0 11 1 È quello che vogliamo? Continua quando X e Y sono VERE!
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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 Y 0 0 0 0 1 0 1 0 0 11 1 È quello che vogliamo? Continua quando X e Y sono VERE! NO!
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: ‘z’ <= carattere Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? 32
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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
35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: ‘z’ <= carattere Come vorremmo che si comportasse il nostro modello rispetto a X e Y? 37 X Y USCITA 0 0 1 0 1 1 1 0 1 11 0
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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 USCITA 0 0 1 0 1 1 1 0 1 11 0
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: ‘z’ <= carattere Come vorremmo che si comportasse il nostro modello rispetto a X e Y? 39 X Y USCITA 0 0 1 0 1 1 1 0 1 11 0 X Y X AND Y 0 0 0 0 1 0 1 0 0 11 1
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è 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 1 0 1 1 0 0 1 11 1 0 X Y USCITA 0 0 1 0 1 1 1 0 1 11 0 X Y X AND Y 0 0 0 0 1 0 1 0 0 11 1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice corretto 41
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice corretto 42
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: pseudocodice 1.Leggi A e B 2.min= il minimo tra A e B 3.trovato = 0; MCD = min; 4.Finche’ trovato != 1 1.Se MCD divide A e B 1.Allora trovato = 1 2.Altrimenti MCD = MCD - 1 5.Stampa MCD 43
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: diagramma di flusso 44 Inizio Leggi A e B min=minimo{A,B} trovato = 0 MCD=min trovato!=1? MCD divide A e B MCD divide A e B trovato = 1 Stampa MCD Fine no si MCD=MCD -1
45
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 finché? WHILE condizione di PERMANENZA nel ciclo
46
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*2 b se b>0 a se b≤0 Il ciclo (loop) while
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Tornando al MCD… il codice 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 B 1.Allora trovato = 1 2.Altrimenti MCD = MCD - 1 4.Stampa MCD 47
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: zoom 48
49
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il 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
50
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore: codice 50
51
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE La 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
52
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice - errori 52
53
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice - errori 53 Cosa succede a giudice ad ogni iterazione?
54
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice - errori 54 Cosa succede a giudice ad ogni iterazione? NIENTE!!!! Ciclo infinito!!!
55
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice 55
56
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEOsservazioni 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
57
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEOsservazioni 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
58
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il 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
59
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore: zoom sul codice 59
60
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore tra N numeri: osservazione Osservazione: Perchè usare un while se conosco il numero di iterazioni del cliclo? 60
61
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 61 cont = 0; while (cont < N) { …; cont++; } for (cont = 0; cont < N; cont++) { …; } Il ciclo for
62
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 62 ATTENZIONE Il ciclo for for ( exp.A; cond; exp.I ) { ist.1;... ist.N; } exp.A; while ( cond ) { ist.1;... ist.N; exp.I; }
63
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore – for : codice 63
64
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore – while Vs for 64
65
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ora dovrebbe essere chiara… 65
66
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il 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
67
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: codice 67
68
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nota sul fattoriale: permutazioni Vi sono n! diverse sequenze formate da n oggetti distinti Vi sono n! permutazioni di n oggetti iI fattoriali enumerano le permutazioni 68
69
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 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
70
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Fonti per lo studio + Credits 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/
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.