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