Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Esercizi
Esercizio 1
Inizio
Leggi un valore e inseriscilo nella variabile cateto1
Leggi un secondo valore e inseriscilo nella variabile cateto2
Fine
2
Esercizio 2
Problema: dati i tre lati di un triangolo, stabilire se si tratta di un triangolo
equilatero, isoscele o scaleno, dopo aver verificato la proprietà di triangolarità,
ovvero che ogni lato è minore della somma degli altri due
Inizio
Leggi lato1, lato2, lato3
Se (lato1<lato2+lato3) AND (lato2<lato1+lato3) AND (lato3<lato1+lato2)
allora
Stampa "E' un triangolo"
Se (lato1=lato2) AND (lato2=lato3) allora Stampa "equilatero"
altrimenti
Se (lato1=lato2) OR (lato1=lato3) OR (lato2=lato3)
allora
Stampa "isoscele"
altrimenti
Stampa "scaleno"
altrimenti Stampa "Non è un triangolo"
Fine
inizio Provare esecuzione
con [8,8,12] e poi
lato1
con [7,7,7]
lato2
lato3
(lato1<lato2+lato3)
AND (lato2<lato1+lato3)
sì
AND (lato3<lato1+lato2)
" E ' un
"Non è un triangolo"
triangolo"
no (lato1=lato2) AND sì
(lato2=lato3)
no (lato1=lato2) OR sì "equilatero"
(lato2=lato3) OR
(lato1=lato3)
"scaleno" "isoscele"
fine
Esercizio 3
5
Algoritmo in linguaggio naturale
Assumiamo che l’input sia corretto (valori tutti strettamente maggiori di 0)
Inizio
n 0, media 0 x n media max min
Leggi un valore dall'esterno e inseriscilo nella variabile x 0 0
max x, min x
5 1 5 5 5
1 2 6
Finché x > 0 ripeti 1
Se x > max allora 2 3 8
max x … e il ramo 3 4 11
Se x < min allora "altrimenti" ? 6 5 17 6
min x
-5 3.4
media media + x 6
n n+1
Leggi un valore dall'esterno e inseriscilo nella variabile x
Fine ciclo
media media / n
Visualizza "Massimo, minimo, media = " seguita dai valori in max, min, media
Fine
Esercizio 3 - estensione
Scrivere l’algoritmo (in linguaggio naturale e con un diagramma di
flusso) per il seguente problema:
7
Algoritmo in linguaggio naturale
Inizio
Leggi un valore dall'esterno e inseriscilo nella variabile x
Se x > 0 allora
n 0, media 0
max x, min x
Finché x > 0 ripeti
Se x > max allora
max x
Se x < min allora
min x
media media + x
n n+1
Leggi un valore dall'esterno e inseriscilo nella variabile x
Fine ciclo
media media / n
Visualizza "Massimo, minimo, media = " seguita dai valori in max, min, media
altrimenti
Visualizza "La sequenza inserita è nulla"
Fine
8
Schema a inizio
blocchi
media 0 sì
n 0 x > max
no max x
x
x < min
sì
no sì min x
x>0
no
max x
media media + x
min x n n+1
" La sequenza
inserita è nulla"
no x>0
x
media media / n
sì
Corpo del ciclo
Visualizza
valori di Corpo del ciclo
max, min, media
fine 4
Esercizio 4
r
Sia y = 1i
i=q
1
Algoritmo in linguaggio naturale
r
y=
1
Inizio
Fine
10
r
y=
inizio
1
r
q i=q i
(r > 0) AND no
(q >0) AND
(r > q)
"Errore
sì nell' immissione
dei dati"
y0
i q Esercizio: Modificare la
condizione (esploderla) in
modo che si possa
i <= r
no visualizzare un messaggio
che metta in evidenza il
problema specifico
sì Visualizza y
y y + ( 1 /i)
i i+1 fine
12
MCD di due numeri naturali x e y
Descrizione
informale
della
procedura di
risoluzione
Individuazione della procedura di risoluzione:
(Basata sul metodo della scomposizione in fattori primi)
Ogni volta che un numero preso in considerazione risulta divisore sia di x che
di y memorizzalo come attuale MCD in una variabile (all’inizio posta a 1).
Inizio
Descrizione
Leggi un valore e inseriscilo nella variabile x
formale della
Leggi un valore e inseriscilo nella variabile y procedura di
risoluzione
Se x < y allora min x altrimenti min y
mcd 1
divisore 1
1
inizio
x
y
… e se x e y sì no
x<y
sono uguali?
min x min y
mcd 1
divisore 1
Ciclo a condizione iniziale
no sì
Divisore <= min
mcd 1
divisore min
flag = 1
mcd 1
divisore min
flag
Finché ( ! ( (x mod divisore) == 0 AND (y mod divisore) == 0 ) ) ripeti
divisore divisore -1
fine ciclo
mcd = divisore
Esempio
Quindi: MCD(18,48)
Se x > y allora MCD(x, y) = MCD(x-y, y)
Input 18 48
altrimenti
MCD(y, x) = MCD(y-x, x) Passo 1 30 18
Passo 2 12 18
Passo 3 12 6
Passo 4 6 6
MCD(18,48) = 6
Algoritmo di Euclide
Descrizione in linguaggio naturale
Leggi il valore x e y
Finché x != y ripeti
Se x > y
x=x–y
altrimenti
y=y–x
Fine ciclo
Visualizza ‘’MCD = valore in y’’
Fine
Alternativa
Divisioni successive invece di sottrazioni successive – può ridurre il numero di
iterazioni necessarie
Inizio
Leggi un valore dall’esterno e inseriscilo nella variabile x
Leggi un valore dall’esterno e inseriscilo nella variabile y
x
y
sì x<y
r x mod y
r≠0
sì
no x y
y r
'MCD =' , y
r x mod y
fine
22
Due proprietà degli algoritmi
k i
Sia y = (
1 2
)
i=1 j=1 i + j
24
Algoritmo k i
y =(
1 2
)
Descrizione dell’algoritmo in linguaggio naturale: i=1 j=1 i + j
Inizio Ciclo
Leggi un valore dall’esterno e inseriscilo nella variabile k
Se k <= 0 allora Visualizza "Errore nell’immissione dati"
Torna a Inizio Ciclo Finché k <= 0
y 0, i 1
Finché i <= k ripeti
s 0, j 1
Finché j <= i ripeti
s s + 1/(i + j)
j j+1
Fine ciclo
s s*s
y y+s
i i+1
Fine ciclo
Visualizza "Il risultato è", y
Fine
25
k i
y =(
inizio
1 2
)
k 'Errore
nell' immissione i=1 j=1 i + j
dei dati'
k <= 0 sì
no
y 0
i 1
i<=k no
s s * s sì
y y+s y
i i+1 s 0
j 1
fine
no j<=i
s s + 1/(i+j)
sì j j+1
26