DCC003: Algoritmos e Estruturas de Dados I
2013/1

Exercícios 1: Computador simplificado

Lista de instruções do computador simplificado:

LER Ei                  # LER CARTÃO E COLOCAR EM Ei
COP Ei, Ej              # COPIAR Ei EM Ej
VÁ  Ei                  # COLOCA Ei NA FOLHA DA PRÓXIMA INSTRUÇÃO
IMP Ei                  # IMPRIME O VALOR EM Ei
SOM Ei, Ej, Ek          # FAZ Ek = Ei + Ej
SUB Ei, Ej, Ek          # FAZ Ek = Ei - Ej
MUL Ei, Ej, Ek          # FAZ Ek = Ei x Ej
DIV Ei, Ej, Ek          # FAZ Ek = Ei / Ej
RES Ei, Ej, Ek          # FAZ Ek IGUAL O RESTO DA DIVISÃO DO VALOR EM Ei PELO VALOR EM Ej
PAR                     # PARA O COMPUTADOR
SE  Ei, OPER, Ej, Ek    # SE CONDIÇÃO (Ei OPERador Ej) FOR VERDADEIRA, VÁ Ek
                        #   OPERador pode ser:
                        #       menor que (<)
                        #       menor ou igual (<=)
                        #       igual (=)
                        #       diferente (!=)
                        #       maior que (>)
                        #       maior ou igual (>=)

1. Modifique o programa abaixo para imprimir o maior de dois números para ter apenas 6 instruções (de E0 a E5).

E0: LER E15
E1: LER E14
E2: SE E15 > E14 VÁ E5
E3: IMP E14
E4: VÁ E6
E5: IMP E15
E6: PARE

2. Faça um programa que leia três números de cartões e imprima o resultado da multiplicação dos três números.

3. Faça um programa que lê um número de um cartão e imprime "1" (um) se o número for par ou "0" (zero) se o número for ímpar.

4. Faça um programa que lê um número de um cartão. Esse primeiro número é chamado sentinela. Depois de ler o sentinela, o programa lê números de cartões até encontrar um número igual ao sentinela. Quando o programa ler um número igual ao sentinela, ele deve imprimir o número total de cartões lidos e terminar. Documentente as limitações e casos de borda do seu programa.

5. Faça um programa que lê um número de um cartão e imprime o fatorial deste número. Assuma que escaninhos do computador simplificado podem armazenar números de qualquer magnitude. Documente as limitações e casos de borda do seu programa. (Definição. O fatorial de x, denotado "x!", é o produtório de todos os números inteiros menores e igual a x: x! = x * (x-1) * (x-2) * ... * 2 * 1; definimos também 0! = 1.)

Desafio. Faça um programa que lê dois números e imprime o maior divisor comum entre os dois números.