|
|
Dati tre interi a, b e c decidere se a2+b2=c2. Analisi con esempi: è nota la terna pitagorica (3, 4, 5), infatti 32+42=52, 9+16=25, ... Algoritmo (da descrivere a parole e con un diagramma di flusso): dopo una prima fase di input calcola l'espressione a2+b2-c2, se il risultato è zero va alla visualizzazione della risposta "1" (sì), già contenuta nel dato RISP, altrimenti continua settando la risposta a "0" (no) e dopo la visualizza. Programma: PROG RUN '
INP a '
INP b '
INP c '
LDA a '
MUL a '
STA qa ' qa <-- a*a
LDA b '
MUL b '
STA qb ' qb <-- b*b
LDA c '
MUL c '
STA qc ' qc <-- c*c
LDA qa '
ADD qb '
SUB qc ' ACC <-- qa+qb-qc
JEQ OUTPUT' SE(ACC = 0): PC <-- OUTPUT
LDA #0 '
STA RISP '
OUTPUT OUT RISP '
ALT '
a DAT 0 '
b DAT 0 '
c DAT 0 '
qa DAT 0 '
qb DAT 0 '
qc DAT 0 '
RISP DAT 1 '
END '
Commento: le risorse qa, qb e qc sono superflue, perché non modificare direttamente i valori in a, b e c? |
|