Uma calculadora RPN é uma calculadora na qual entramos com as operações após os operandos, e temos um comando que vai guardando operandos em uma espécie de “pilha”. Nesse laboratório vamos construir o modelo de uma calculadora RPN, e usá-lo com a interface (visão+controlador) feita no laboratório 5.
Uma calculadora RPN tem as mesmas operações de uma calculadora padrão,
mas o funcionamento por trás é bem diferente. Ela funciona com uma pilha de operandos;
toda que vez o botão =
(chamada de store em uma calculadora RPN) é apertado
o valor do display é empilhado, e qualquer outro dígito após isso começa a entrada de
outro número. Por exemplo, se o display é 1234
e se faz =
o número 1234 é
empilhado e o display continua mostrando 1234
. Se depois pressiona-se o número
5
o valor do display passa a ser 5
, e pressionando o número 3
o valor do display
passa a ser 53
.
As operações aritméticas todas funcionam da mesma forma: o operando da esquerda é removido do topo da pilha (ou é 0 se a pilha estiver vazia), e o operando da direita é o valor do display. A operação é feita, e o resultado vira o novo valor do display. Qualquer outro dígito após isso começa a entrada de outro número, do mesmo modo que em uma operação de store.
Um exemplo de uso: 2
, =
, 3
, =
, 5
, *
, +
faz a operação 2+(3*5), deixando 17
no display e
a pilha vazia.
Chame a classe principal do modelo de ModeloCalcRPN
.
Podemos representar uma calculadora RPN com espaço para quatro números
usando quatro campos: P0
, P1
, P2
e P3
.
O campo P0
é o display, e os outros três campos são a pilha.
Os valores iniciais são todos 0
.
Como vamos usar esse modelo com a a interface gráfica feita no último laboratório, esse modelo também precisa implementar os mesmos métodos do modelo da calculadora que vocês usaram para o laboratório passado:
O que muda é o comportamento de cada operação acima:
1. A operação igual
move o valor que estava em P2
para P3
, o que estava em P1
para P2
,
o que estava em P0
para P1
, e zera P0
.
2. As operações soma
, sub
, mult
e div
respectivamente somam, subtraem, multiplicam e
dividem o valor de P0
pelo de P1
, armazenando o resultado em P0
, depois copiando o
valor de P2
para P1
, de P3
para P2
, zerando P3
.
3. A operação digito
corresponde à entrada de dígitos na calculadora,
multiplicando o valor atual de P0
por 10 e somando o dígito correspondente.
4. A operação reset
volta a calculadora a seu estado inicial, com todas as variáveis de seu estado
iguais a 0.
Depois de implementado o modelo da calculadora RPN, conecte ele com a interface gráfica feita no laboratório passado e teste o resultado.
Última Atualização: 2016-05-18 10:58