Defina um conjunto de instruções para fazer o Computador Simplificado (CS) ler um conjunto indeterminado de valores positivos em cartões, obter e imprimir o menor valor lido. O último cartão, que não deverá entrar nos cálculos tem o valor igual a -1. Assuma que os valores são sempre positivos.

Passo 1

Beleza, o problema é o seguinte: temos um “Computador Simplificado” (CS) que vai ler cartões com valores sempre positivos até encontrar um cartão com valor –1 (que é só pra dizer “acabou”, não entra no cálculo). A missão é imprimir o menor valor lido.
Conteúdo / teoria envolvida:
• Comandos de leitura (LEIT) e escrita (ESCR) no CS
• Uso de memória pra guardar variáveis (“menor” e um temporário)
• Comparações com salto condicional (SUB + JN/JPOS)
• Estrutura de repetição (loop) até a sentinela (–1)

Passo 2

Vamos primeiro desenhar o algoritmo em alto nível:
  1. Ler o primeiro cartão e guardar esse valor em “menor”.
  2. Repetir:
    a) Ler o próximo cartão.
    b) Se for –1, sai do loop.
    c) Senão, comparar com “menor”:
    – Se for menor, atualiza “menor” com esse novo valor.
  3. Depois que sair do loop, imprimir “menor” e parar.
Cada passo vira instrução do CS: leitura (LEIT), comparação (SUB), salto (JPOS/JN), gravação em memória (ARMM), etc.

Passo 3

Aqui está o código completo em linguagem do CS, com comentários pra facilitar:
            // 1) Leitura do primeiro valor e inicialização de “menor”
INICIO:     LEIT           // lê cartão → AC
            JN   FIM      // se AC < 0 (sentinela = -1), vai pro fim
            ARMM MENOR    // menor ← AC

LOOP:       LEIT           // lê próximo cartão → AC
            JN   FIM      // se AC < 0, acabou o loop
            ARMM TMP      // TMP ← AC  (guarda temporariamente)
            CARG MENOR    // AC ← menor
            SUB  TMP      // AC ← menor – TMP
            JPOS ATUALIZA // se AC > 0, então TMP < menor → atualiza
            JMP  LOOP     // senão, volta pro loop

ATUALIZA:   CARG TMP       // AC ← TMP
            ARMM MENOR    // menor ← AC
            JMP  LOOP     // continua o loop

FIM:        CARG MENOR     // AC ← menor
            ESCR           // imprime AC
            STOP           // para o programa

// Área de dados
MENOR:      0              // espaço pra guardar o menor valor
TMP:        0              // espaço temporário pra comparação

Resposta

O conjunto de instruções acima faz o CS ler valores até –1, comparar cada novo valor com o mínimo atual e, no fim, imprimir o menor valor lido.

Exercícios relacionados