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.