Esercizio: cosa fa questo algoritmo?

Esercizio: cosa fa questo algoritmo?
start
start
P := 0
P := 0
read A,B
read A,B
falso
A <> 0
while (A <> 0)
write P
if (A è dispari) then
vero
P := P + B
end
vero
A è dispari
end if
falso
A := A / 2
P := P + B
B := B * 2
end while
A := A / 2
write P
B := B * 2
end
Informatica di Base -- R.Gaeta
88
Esercizio: cosa fa questo algoritmo?
P
0
3
9
21
A
7
3
1
0
B
3
6
12
24
Informatica di Base -- R.Gaeta
89
Esercizio: cosa fa questo algoritmo?
P
0
0
0
12
36
A
12
6
3
1
0
B
3
6
12
24
48
Informatica di Base -- R.Gaeta
90
Esercizio: dispari-pari
Dato un numero, verificare se è pari o dispari e stampare il relativo
messaggio
start
start
read N
while (N > 1)
read N
N := N – 2
N := N - 2
vero
end while
N>1
falso
vero
N=0
write "pari"
if (N = 0) then
write “pari”
falso
write "dispari"
else
write “dispari”
end if
end
end
Informatica di Base -- R.Gaeta
91
Esercizio: dispari-pari (controllo input)
Dato un numero stampare se è pari o dispari
start
start
read N
N<0
vero
N := -N
falso
N := N - 2
vero
N>1
falso
vero
N=0
write "pari"
falso
write "dispari"
read N
if (N < 0) then
N := -N
end if
while (N > 1)
N := N – 2
end while
if (N = 0) then
write “pari”
else
write “dispari”
end if
end
end
Informatica di Base -- R.Gaeta
92
Esercizio: massimo di una sequenza di K numeri
• Si supponga di fornire in input ad un programma un
numero K e K interi positivi. Il programma deve restituire
il valore minimo tra quelli introdotti.
Informatica di Base -- R.Gaeta
93
Esercizio: massimo di una sequenza di K numeri
start
start
read K
K
read numero
read numero
min := numero
min := numero
inseriti := 1
while (inseriti < K)
inseriti := 1
inseriti < K
falso
read numero
write min
if (numero < min) then
vero
read numero
vero
min := numero
min := numero
end
end if
numero < min
inseriti := inseriti + 1
end while
falso
write min
inseriti := inseriti + 1
end
Informatica di Base -- R.Gaeta
94
Esercizio: massimo di una sequenza di K numeri
(controllo input)
start
start
K
K <= 0
vero
write "K deve
essere positivo!"
falso
read numero
min := numero
inseriti := 1
inseriti < K
falso
write min
vero
read numero
vero
min := numero
end
numero < min
falso
inseriti := inseriti + 1
end
read K
if ( K <= 0) then
write “K deve essere positivo!”
else
read numero
min := numero
inseriti := 1
while (inseriti < K)
read numero
if (numero < min) then
min := numero
end if
inseriti := inseriti + 1
end while
write min
end if
Informatica di Base -- R.Gaeta
95
Esercizio: elevamento a potenza
Data la base e l’esponente calcolare l’elevamento a potenza
start
start
potenza:= 1
potenza := 1
read B,E
read B,E
while (E > 0)
falso
E>0
potenza := potenza * B
write potenza
E := E - 1
vero
potenza:= potenza * B
end while
end
write potenza
end
E := E -1
Informatica di Base -- R.Gaeta
96
Esercizio: elevamento a potenza (controllo input)
Data la base e l’esponente calcolare l’elevamento a potenza
start
start
read B,E
read B,E
E >= 0
vero
if (E >= 0) then
potenza := 1
falso write"esponente
negativo!"
while (E > 0)
potenza := potenza * B
potenza := 1
E := E - 1
falso
E>0
end while
write potenza
write potenza
vero
potenza:= potenza * B
E := E -1
else
end
write “esponente negativo!”
end if
end
Informatica di Base -- R.Gaeta
97
Esercizio: fattoriale
Dato un numero calcolare il suo fattoriale
start
start
fattoriale:= 1
fattoriale := 1
read N
read N
while (N > 0)
falso
N>0
fattoriale := fattoriale * N
write fattoriale
N := N - 1
vero
fattoriale:= fattoriale * N
N:= N -1
end while
end
write fattoriale
end
Informatica di Base -- R.Gaeta
98
Esercizio: fattoriale (controllo input)
Dato un numero calcolare il suo fattoriale
start
start
read N
read N
N >= 0
vero
if (N >= 0) then
fattoriale := 1
falso write"numero
negativo!"
while (N > 0)
fattoriale := fattoriale * N
fattoriale:= 1
N := N - 1
falso
N>0
end while
write fattoriale
write fattoriale
vero
fattoriale:= fattoriale * N
else
end
write “numero negativo!”
end if
N := N -1
end
Informatica di Base -- R.Gaeta
99