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