Sistema Di Categorie Di Contenuto Dei Costrutti Personali_La Versione in Italiano
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio –...
-
Upload
umberto-d-andrea -
Category
Documents
-
view
214 -
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 9 Agosto 2013
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
• Costrutti iterativi do.. while While for
2
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
3
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
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaIuScOli: codiceMaIuScOli: codice
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MaIuScOli: codice correttoMaIuScOli: codice corretto
6
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
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: diagramma di flussoMCD: diagramma di flusso
8
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
9
• 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
10
• 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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MCD: zoomMCD: zoom
12
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
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il maggioreIl maggiore: codice: codice
14
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
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
NuotoNuoto: codice - errori: codice - errori
16
Cosa succede a giudicead ogni iterazione?
NIENTE!!!!Ciclo infinito!!!
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
NuotoNuoto: codice: codice
17
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!
18
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il maggioreIl maggiore: zoom sul : zoom sul codicecodice
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
21
cont = 0;while (cont < N) {
…;…;cont++;
}for (cont = 0; cont < N; cont++) {
…;…;
}
Il ciclo Il ciclo forfor
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
22
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
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il maggiore – Il maggiore – while Vs forwhile Vs for
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Ora dovrebbe essere Ora dovrebbe essere chiara…chiara…
25
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,…
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Il fattoriale: codiceIl fattoriale: codice
27
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
28
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:
29
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
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Coefficiente binomiale: codiceCoefficiente binomiale: codice
31
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
32
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/