Um professor quer utilizar o Computador Simplificado (CS) para calcular a média de seus alunos e verificar se eles foram aprovados. Elabore um conjunto de instruções para calcular a média de 4 provas e mostrar a média final. Além de mostrar a média final o CS deve retornar para o professor a situação do aluno: aprovado se a média for maior igual a sete ou reprovado se for menor que sete. O conjunto de instruções calcula a média de um aluno por vez, ou seja, para cada aluno é preciso recarregar o conjunto de instruções.
Passo 1
Beleza, o exercício pede para a gente escrever um programa para o Computador Simplificado (CS) que:
- Leia quatro notas (p1, p2, p3, p4) de um aluno, uma de cada vez;
- Calcule a média aritmética dessas quatro notas:
- Mostre a média;
- Se essa média for maior ou igual a 7, mostre “APROVADO”, senão mostre “REPROVADO”.
Conteúdo envolvido:
- Entrada e saída de dados (INP, OUT)
- Operações aritméticas (ADD, SUB, DIV)
- Armazenamento em memória (STA, DAT)
- Desvios condicionais (BRP, BRA)
- Conhecer o formato de instruções do CS.
O que vamos precisar:
- Quatro posições de memória para guardar as notas (G1…G4)
- Uma posição para a soma (SUM)
- Uma posição para a média (MED)
- Constantes 4 (C4) e 7 (C7)
- Rotinas de desvio para “APROVADO” e “REPROVADO”
A partir do próximo passo começamos a codar de verdade.
Passo 2
Vamos ler as quatro notas e guardar em G1…G4. Cada leitura usa INP (input) e STA (store accumulator).
INP ; lê nota p1
STA G1 ; armazena em G1
INP ; lê nota p2
STA G2 ; armazena em G2
INP ; lê nota p3
STA G3
INP ; lê nota p4
STA G4
Passo 3
Agora somamos as quatro notas em uma variável SUM:
LDA G1 ; carrega p1 no acumulador
ADD G2 ; acumulador = p1 + p2
ADD G3 ; acumulador = p1 + p2 + p3
ADD G4 ; acumulador = p1 + p2 + p3 + p4
STA SUM ; guarda em SUM
Passo 4
Com a soma em SUM, calculamos a média dividindo por 4. Assumimos que o CS tem DIV (divisão inteira):
LDA SUM ; carrega soma no acumulador
DIV C4 ; divide acumulador por 4 → média
STA MED ; guarda média em MED
Passo 5
Vamos mostrar a média na tela:
LDA MED ; carrega média
OUT ; exibe no visor
Passo 6
O próximo passo é decidir se o aluno foi aprovado (média ≥ 7) ou reprovado (média < 7). Como não há instrução “BRGE” direta, usamos SUB e BRP (branch if positive ou zero):
LDA MED ; carrega média
SUB C7 ; faz (média – 7)
BRP APROV ; se ≥ 0, pula para APROV
BRA REPROV; senão, vai para REPROV
Passo 7
Rotina de “APROVADO”:
APROV LDA M_AP ; carrega primeira letra de “APROVADO”
OUT ; exibe
LDA M_AP+1; próxima letra
OUT
… ; repetir até “APROVADO”
HLT ; termina o programa
Passo 8
Rotina de “REPROVADO”:
REPROV LDA M_RE ; carrega primeira letra de “REPROVADO”
OUT
LDA M_RE+1
OUT
… ; repetir até “REPROVADO”
HLT
Passo 9
Definição das variáveis e constantes no final da memória:
G1 DAT 0
G2 DAT 0
G3 DAT 0
G4 DAT 0
SUM DAT 0
MED DAT 0
C4 DAT 4
C7 DAT 7
; Dados ASCII para “APROVADO”
M_AP DAT 'A'
DAT 'P'
DAT 'R'
DAT 'O'
DAT 'V'
DAT 'A'
DAT 'D'
DAT 'O'
; Dados ASCII para “REPROVADO”
M_RE DAT 'R'
DAT 'E'
DAT 'P'
DAT 'R'
DAT 'O'
DAT 'V'
DAT 'A'
DAT 'D'
DAT 'O'
Resposta
Programa completo em CS (comentado) que lê 4 notas, calcula a média, exibe o valor e escreve “APROVADO” se média ≥ 7, ou “REPROVADO” caso contrário.