Notação polonesa

A notação Polonesa (reversa) ou posfixa foi proposta pelo matemático polonês Jan Lukasiewicz, como uma forma de escrever expressões aritméticas e lógicas sem a necessidade de utilizar parênteses. Posteriormente, ela se mostrou apropriada para a representação dessas expressões em linguagens de programação. Essa notação foi, também, popularizada por ter sido adotada em diversas calculadoras científicas, notadamente as calculadoras da marca HP.

Detalhes a respeito da notação polonesa podem ser encontrados na web, por exemplo na página Polish Notation da Wikipedia e também na página do Prof. Feofiloff sobre pilhas (código na linguagem C).

Na notação usual de expressões aritméticas como em (2+3)/4 os operadores são escritos entre os operandos; por isso, a notação é chamada de infixa. Na notação polonesa, ou posfixa, os operadores são escritos depois dos operandos. Eis alguns exemplos de expressões infixas e correspondentes expressões posfixas (retirados da página do Prof. Feofiloff sobre pilhas:

infixa posfixa
A+B*C ABC*+
A*(B+C)/D-E ABC+*D/E-
A+B*(C-D*(E-F)-G*H)-I*3 ABCDEF-*-GH*-*+I3*-
A+B*C/D*E-F ABC*D/E*+F-
A+(B-(C+(D-(E+F)))) ABCDEF+-+-+
A*(B+(C*(D+(E*(F+G))))) ABCDEFG+*+*+*

Nesse exercício-programa, vamos implementar uma calculadora para expressões na notação posfixa. Cada expressão pode conter números, variáveis e os seguintes símbolos (caracteres) correspondentes a um operador de atribuição e 7 operadores aritméticos:

operação símbolo
atribuição =
exponenciação ^
resto de divisão %
multiplicação *
divisão /
adição +
subtração -
menos unário !

O operador de atribuição '=', atribui um valor a uma variável. Assim, ele requer dois operandos. O primeiro deve ser uma variável e o segundo pode ser um número ou uma variável com valor e retorna esse valor.

O menos unário, é representado pelo símbolo '!'. Assim, para representarmos -4 na nossa notação posfixa devemos escrever 4 !. Portanto, o menos unário requer apenas um operando, que pode ser um número ou uma variável, e retorna o valor desse operando com o sinal trocado.

This Page