No contexto da construção de compiladores para linguagens de programação, o uso da notação polonesa posfixa é comum quando é necessário representar expressões aritméticas, como a que segue. A*(B+C)/D-E A expressão correta na referida notação é:
- A)A*BC*/D/E-
Errada, porque mistura operadores e operandos de forma inconsistente e não respeita a conversão correta de A*(B+C)/D-E para posfixa.
- B)A+BC*D/E-
Errada, porque coloca operadores em posições inadequadas e não representa a ordem real das operações da expressão.
- C)ABC+*D/E-
Certa, pois a expressão em posfixa fica ABC+*D/E-, com cada operador surgindo depois dos dois operandos correspondentes.
- D)ABC+D*/E-
Errada, porque a sequência dos operadores não corresponde à árvore da expressão original e quebra a regra da notação posfixa.
- E)ABCD/*+E-
Errada, porque desloca a multiplicacao e a soma de modo incompatível com a estrutura de A*(B+C)/D-E.
Gabarito: C
A notação polonesa posfixa coloca a operação depois dos operandos. Em vez de escrever primeiro o sinal, você escreve os valores e só depois o operador correspondente. Isso é muito útil em compiladores e interpretadores porque elimina ambiguidades de precedência e parenteses, deixando a leitura da expressão por uma máquina bem mais direta. Na expressão A*(B+C)/D-E, a primeira operação dentro dos parenteses é B+C, que vira BC+. Depois, esse resultado é multiplicado por A, formando ABC+*. Em seguida, divide-se por D, ficando ABC+*D/, e por fim subtrai-se E, chegando a ABC+*D/E-. Perceba a lógica: cada operador aparece somente depois de seus dois operandos. Isso é exatamente a marca da notação posfixa. Se você tentar manter a ordem “tradicional” da expressão no meio do caminho, quase sempre cai em alternativa com operador adiantado ou com a sequência dos operandos bagunçada. Por isso, o gabarito é a letra C. Ela respeita a estrutura da expressão original e traduz corretamente cada etapa da prioridade operacional: parenteses, multiplicacao/divisao e, por ultimo, subtracao.