Você está na página 1de 2

Instituto Federal Fluminense – Campus Macaé Prof.

Marcelo Felix
Curso de Engenharia Elétrica
Disciplina: Algoritmos e Técnicas de Programação
________________________________________________________________________________

Lista de Atividades (2a Avaliação)

INSTRUÇÕES: Na 1a Lista de atividades que foi dada foram construídos módulos


(abreviaturas MH) que implementam operações simples que podem ser utilizadas
para construir outros programas. A última questão da lista pedia exatamente
isso. Que se construísse um programa usando algumas das abreviaturas
construídas na primeira questão. Chegou a hora de passarmos nosso
conhecimento introdutório de programas e da atividade de programação para um
ambiente realista como Code::Blocks, com uma “linguagem de verdade” como C.
Para isso faremos agora uma atividade de comparação das linguagens, a partir de
uma pequena apresentação da linguagem C. Observe com atenção o programa
MH abaixo:

// Fatoracao:Decomposicao em fatores primos end


// Calcula e exibe fatores de um numero A end
ret b
abbr MENORIGUAL A B
nat um zero abbr DIVISIVEL A B
um = 1 nat x um zero
zero = 0 um = 1
A -= B zero = 0
loop A x = A
ret zero x /= B
end x *= B
ret um A -= x
loop A
abbr AND x y ret zero
nat um zero end
um = 1 ret um
zero = 0
loop x
loop y main
ret um nat A X Fator T um
end in A
end um = 1
ret zero X = A
Fator = 2
abbr EQ x y loop A
nat t t1 t2 s: T = DIVISIVEL X Fator
t1 = MENORIGUAL x y loop T
t2 = MENORIGUAL y x X /= Fator
t = AND t1 t2 out Fator //exibe fator na tela
ret t T = EQ X um
loop T
abbr RESTO A B goto fim
nat b c end
b = A goto s
loop A end
c = MENORIGUAL B b Fator++
loop c end
b -= B
fim:
Esse programa exibe na tela os fatores primos que decompõem um certo número
dado pelo usuário. Este é um exemplo de programa construído a partir das
abreviaturas que você implementou na 1a lista de atividades. O objetivo desta
lista é construir um programa em C para fazer a mesma coisa, a partir dessa
implementação em MH, dada acima. Faremos uma simples tradução de MH para
C, de forma que se o programa MH, fornecido acima, funciona corretamente, e a
tradução para C foi feita também corretamente, então teremos um programa
correto para fatorar números naturais, escrito em C (mesmo que você, por
enquanto, ainda não domine C). Na tradução cada abreviatura MH deverá ser
convertida em uma função C com o protótipo correspondente conforme exemplo
abaixo.

abbr DIVISIVEL A B
nat x um zero int divisivel(int a, int b){
um = 1 int x;
zero = 0 x = a;
x = A x /= b;
x /= B x *= b;
x *= B a -= x;
A -= x if (a) return 0;
loop A return 1;
ret zero }
end
ret um

Obs.: Note que no lugar do “loop A” utilizamos o comando C de decisão if. Note
que diversos operadores de MH são idênticos em C. O tipo de dado nat de MH
não existe desta forma em C, por isso optamos por int. Poderíamos ter utilizado o
tipo “unsigned int”, mas isso é uma opção sua. E não esqueça, cada comando C
termina com “;”.

As orientações vistas em sala e/ou vídeo-aula, deverão ser suficientes para você
concluir esta atividade. Seu código C, juntamente com um print da tela da
execução no Code::Blocks, deverão ser entregues em um só arquivo, em formato
PDF, no email m.felix@gsuite.iff.edu.br até o dia 1 de março.

ENUNCIADO DA QUESTÃO ÚNICA: Converta o programa acima em um programa


C que resolva o mesmo problema que esse programa MH dado acima resolve. Seu
programa deverá ser acompanhado de comentários que esclareçam o que você
julgar necessário para o bom entendimento do leitor.

Você também pode gostar