Entrega: até dia 06/04
Atividade 1: Implementar um tradutor de expressões aritméticas simples da notação infixa para pós-fixa, incluindo identificadores.
Exemplos de entrada/saída:
9-5+2 --> 9 5 - 2 +
9-5*2 --> 9 5 2 * -
(9-5)*2 --> 9 5 - 2 *
(12 + 34) / 2 --> 12 34 + 2 /
(n1 + n2 + n3 + n4) / 4 --> n1 n2 + n3 + n4 + 4 /
Atividade 2: Implementar um avaliador de expressões aritméticas e booleanas, incluindo a definição e uso de identificadores. Se em uma expressão for usado um identificador não definido uma mensagem de erro deve ser apresentada.
Os operadores relacionais: >, >=, <, <=, == e != e os lógicos: and, or e not pedem ser usados nas expressões, da mesma maneira que se utiliza em linguagens de programação. Nas expressões, serão permitidos também valores reais e os identificadores podem ser redefinidos normalmente.
Por fim, observar que a tabela de símbolos deve armazenar os valores reais de cada identificador.
Exemplos de entrada/saída:
print 9-5+2 --> 6
print 9-5*2 --> -1
print (9-5)*2 --> 8
print (12 + 34) / 2 --> 23
print 7.5 + 6 / 2 --> 10.5
n1=7.3
n2=8.5
n3=7
n4=10
print (n1 + n2 + n3 + n4) / 4 --> 8.2
a = 6
b = 3
print a*c --> Erro: n3 não definido
print a * b > 0 --> true
mes = 4
mes >= 1 and mes <= 12 --> true
mes = 14
mes >= 1 and mes <= 12 --> false