90 likes | 217 Views
Problema : come dividere due numeri interi se si è capaci di fare solo somme e sottrazioni ?. L’informatica è una disciplina che vive nello spazio che intercorre tra i problemi e le risorse tecnologiche.
E N D
Problema: come dividere due numeri interi se si è capaci di fare solo somme e sottrazioni ?
L’informatica è una disciplina che vive nello spazio che intercorre tra i problemi e le risorse tecnologiche L’informatico: successivamente decide COME l’esecutore deve operare inizialmente analizza il problema per precisare CHE COSA deve essere fatto
147 : 38 divisore quoziente dividendo 147 – 38 = 109 1 109 – 38 = 71 2 71 – 38 = 33 3 33 < 38 … il calcolo è terminato 147 : 38 = 3 con il resto di 33
dividendo 147 33 71 109 acquisisci dividendo acquisisci divisore divisore 38 quoziente 0 quoziente 1 dividendo dividendo-divisore quoziente quoziente +1 3 2 0 dividendo >= divisore schermo dividendo < divisore 3 33 scrivi quoziente scrivi dividendo
PROGRAM dividi; acquisisci dividendo acquisisci divisore Utilizzando i diagrammi sintattici VAR dividendo,divisore, quoziente: INTEGER; BEGIN quoziente 0 READLN(dividendo); READLN(divisore); quoziente := 0; REPEAT dividendo := dividendo – divisore; quoziente := quoziente + 1 UNTIL dividendo < divisore; L’esecutore predispone tre locazioni di memoria in cui registrerà dei numeri interi dividendo dividendo-divisore quoziente quoziente +1 dividendo >= divisore dividendo < divisore WRITELN(quoziente,dividendo) END. scrivi quoziente scrivi dividendo
La struttura iterativa falso Si ripete l’istruzione eseguita fino a che la condizione indicata si verifica Vero Analogo effetto si potrebbe ottenere utilizzando una forma linguistica differente falso Vero • In questo caso • la ripetizione avviene solo se la condizione si verifica • l’istruzione potrebbe non essere eseguita
dividendo 147 33 71 109 acquisisci dividendo acquisisci divisore divisore 38 quoziente 0 dividendo < divisore quoziente dividendo >= divisore 1 dividendo dividendo-divisore quoziente quoziente +1 3 2 0 schermo 3 33 scrivi quoziente scrivi dividendo
dividendo < divisore dividendo >= divisore dividendo dividendo-divisore quoziente quoziente +1 WHILE espressione DO istruzione WHILE dividendo >= divisore DO BEGIN dividendo := dividendo – divisore; quoziente := quoziente + 1 END; Dividendo, dopo l’operazione, conterrà il valore della differenza tra dividendo e divisore := simbolo di assegnazione := uguale dinamico
PROGRAM dividi; acquisisci dividendo acquisisci divisore VAR dividendo,divisore, quoziente: INTEGER; BEGIN READLN(dividendo); quoziente 0 READLN(divisore); dividendo < divisore quoziente := 0; dividendo >= divisore WHILE dividendo >= divisore DO BEGIN dividendo := dividendo – divisore; quoziente := quoziente + 1 END; dividendo dividendo-divisore quoziente quoziente +1 WRITELN(quoziente,dividendo) scrivi quoziente scrivi dividendo END.