Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Process synchronization
Operating System Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 11 Marzo 2014 © 2005 William Fornaciari
2
Obiettivi Costrutti iterativi do.. while While for
3
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
Pseudocodice Dati Richiedere l’inserimento di un carattere
L’insieme dei caratteri ammissibili {a, b, c, …, z} Richiedere l’inserimento di un carattere Se carattere inserito corretto Allora stampa a video carattere-32 Altrimenti stampa a video un messaggio di errore ritorno ad 1
5
MaIuScOli: codice
6
MaIuScOli: codice corretto
7
MCD: pseudocodice Leggi A e B min= il minimo tra A e B
trovato = 0; MCD = min; Finche’ trovato != 1 Se MCD divide A e B Allora trovato = 1 Altrimenti MCD = MCD - 1 Stampa MCD
8
MCD: diagramma di flusso
Leggi A e B Inizio min=minimo{A,B} trovato = 0 MCD=min no trovato!=1? Stampa MCD si no Fine MCD divide A e B MCD=MCD -1 si trovato = 1
9
Come traduco il finché? WHILE
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); condizione di PERMANENZA nel ciclo
10
Il ciclo (loop) while Che cosa calcola?
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
11
Tornando al MCD… il codice
trovato = 0; Leggi A e B min= il minimo tra A e B MCD = min; Finche’ trovato != 1 Se MCD divide A e B Allora trovato = 1 Altrimenti MCD = MCD - 1 Stampa MCD
12
MCD: zoom
13
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
14
Il maggiore: codice
15
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
16
Nuoto: codice - errori Cosa succede a giudice ad ogni iterazione?
NIENTE!!!! Ciclo infinito!!!
17
Nuoto: codice
18
Osservazioni Problema 1 Problema 2
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
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
20
Il maggiore: zoom sul codice
21
Il maggiore tra N numeri: osservazione
Osservazione: Perchè usare un while se conosco il numero di iterazioni del cliclo?
22
Il ciclo for cont = 0; while (cont < N) { …; cont++; }
for (cont = 0; cont < N; cont++) { …; }
23
Il ciclo for ATTENZIONE exp.A; while ( cond ) { ist.1;
... ist.N; exp.I; } for ( exp.A; cond; exp.I ) { ist.1; ... ist.N; }
24
Il maggiore – for : codice
25
Il maggiore – while Vs for
26
Ora dovrebbe essere chiara…
27
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,…
28
Il fattoriale: codice
29
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
30
Coefficiente 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:
31
Coefficiente binomiale: flusso
Inserire K e N Verifico K e N Se corretti Calcolare il fattoriale di N (FatN) Calcolare il fattoriale di K (FatK) Calcolare il fattoriale di N-K (FatNK) CoefBin = FatN/(FatK)*FatNK Altrimenti torno a 1
32
Coefficiente binomiale: codice
33
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
34
Fonti per lo studio + Credits
Informatica arte e mestiere, S. Ceri, D. Mandrioli, L. Sbattella, McGrawHill Capitolo 6 Credits Daniele Braga -
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.