Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoGiorgiana Lupi Modificato 8 anni fa
1
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 22 Marzo 2016
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEProgetti Meeting Quando: 23 Marzo @12pm Dove: CE1, Ed. 7, primo piano 2
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEObiettivi Costrutti iterativi do.. while While for 3
4
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 4
5
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 5
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice 6
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice 7
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come si comporta il nostro modello rispetto a X e Y? NOTA: quando VERA, continua! 8
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come si comporta il nostro modello rispetto a X e Y? NOTA: quando VERA, continua! 9 X Y X AND Y 0 0 0 0 1 0 1 0 0 11 1
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come si comporta il nostro modello rispetto a X e Y? NOTA: quando VERA, continua! 10 X Y X AND Y 0 0 0 0 1 0 1 0 0 11 1 Continua quando X e Y sono VERE!
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come si comporta il nostro modello rispetto a X e Y? NOTA: quando VERA, continua! 11 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!
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come si comporta il nostro modello rispetto a X e Y? NOTA: quando VERA, continua! 12 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!
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? 13
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita VERA 14
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come vorremmo che si comportasse il nostro modello rispetto a X e Y? Se X = 0? Vogliamo una uscita VERA Se Y = 0? 15
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ 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 16
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ 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! 17
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come vorremmo che si comportasse il nostro modello rispetto a X e Y? 18 X Y USCITA 0 0 1 0 1 1 1 0 1 11 0
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come vorremmo che si comportasse il nostro modello rispetto a X e Y? 19 Vi ricorda qualche cosa? X Y USCITA 0 0 1 0 1 1 1 0 1 11 0
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come vorremmo che si comportasse il nostro modello rispetto a X e Y? 20 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
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ma il modello è corretto? X: ‘a’ <= carattere Y: carattere <= ‘z’ Come vorremmo che si comportasse il nostro modello rispetto a X e Y? 21 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
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice corretto 22
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MaIuScOli: codice corretto 23
24
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 24
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: diagramma di flusso 25 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
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 26 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
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 27 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
28
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 28
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE MCD: zoom 29
30
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 30
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore: codice 31
32
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 32
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice - errori 33
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice - errori 34 Cosa succede a giudice ad ogni iterazione?
35
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice - errori 35 Cosa succede a giudice ad ogni iterazione? NIENTE!!!! Ciclo infinito!!!
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Nuoto: codice 36
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEOsservazioni Problema 1 (e.g., MaIuScOli) Si continui a chiedere l’inserimento del carattere, fino a quando questo non è corretto Problema 2 (e.g., gara di nuoto, max tra N numeri) Trovare il maggiore tra N numeri inseriti da tastiera 37
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONEOsservazioni Problema 1 (e.g., MaIuScOli) Si continui a chiedere l’inserimento del carattere, fino a quando questo non è corretto Problema 2 (e.g., gara di nuoto, max tra N numeri) Trovare il maggiore tra N numeri inseriti da tastiera Del problema 2 conosco il numero di iterazioni! 38
39
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 39
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore: zoom sul codice 40
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore tra N numeri: osservazione Osservazione: Perchè usare un while se conosco il numero di iterazioni del cliclo? 41
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 42 cont = 0; while (cont < N) { …; cont++; } for (cont = 0; cont < N; cont++) { …; } Il ciclo for
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 43 ATTENZIONE Il ciclo for for ( exp.A; cond; exp.I ) { ist.1;... ist.N; } exp.A; while ( cond ) { ist.1;... ist.N; exp.I; }
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore – for : codice 44
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il maggiore – while Vs for 45
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Ora dovrebbe essere chiara… 46
47
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,… 47
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Il fattoriale: codice 48
49
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 49
50
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.