Date post: | 01-May-2015 |
Category: |
Documents |
Upload: | desi-rizzi |
View: | 213 times |
Download: | 0 times |
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Costrutti iterativiCostrutti iterativi
Marco D. Santambrogio – [email protected]. 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/