Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Algoritmos — FGV 2023

Algoritmos e Estrutura de DadosAlgoritmos
Código
fg065336
Banca
FGV
Órgão
PGM - Niterói
Ano
2023
Nível
Superior
Cargo
Analista de Tecnologia da Informação
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-EA expressão correta na referida notação é:
  1. AA*BC*/D/E-
  2. BA+BC*D/E-
  3. CABC+*D/E-
  4. DABC+D*/E-
  5. EABCD/*+E-
Revelar gabarito e comentário

GabaritoC — ABC+*D/E-

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Notação Polonesa Posfixa (Reverse Polish Notation)

Gabarito: letra C. A conversão da expressão infixa A*(B+C)/D-E para a notação posfixa (RPN) resulta em ABC+*D/E-. Aplicando o algoritmo de shunting-yard, garante-se a precedência dos operadores e o agrupamento dos parênteses, sendo a alternativa C a que representa corretamente essa transformação.

A banca testa o domínio da conversão de expressões aritméticas para a notação pós-fixada. O processo consiste em percorrer a expressão infixa, utilizando uma pilha para os operadores, e gerar a saída com operandos na ordem original e operadores pospostos conforme a precedência. Vejamos cada alternativa:

Alternativa A — ❌ Incorreta

A*BC*/D/E- — A sequência não respeita a prioridade dos parênteses. O operador * aparece antes de B e C, indicando que a multiplicação foi aplicada antes da soma, o que está errado.

Alternativa B — ❌ Incorreta

A+BC*D/E- — O operador + é colocado antes do *, como se a adição fosse a primeira operação, mas na expressão original a multiplicação tem precedência sobre a adição (a menos que os parênteses indiquem o contrário).

Alternativa C — ✅ Correta ⟵ GABARITO

ABC+*D/E- — Corresponde exatamente à conversão: operandos A, B, C; depois o operador + (soma de B e C), em seguida * (multiplicação do resultado por A), depois D, / (divisão do resultado anterior por D), e por fim E, - (subtração do resultado por E).

Alternativa D — ❌ Incorreta

ABC+D*/E- — A sequência coloca D* antes da divisão, o que corresponderia a (A*(B+C)*D)/E, desrespeitando a precedência original da divisão sobre a subtração e a posição do D.

Alternativa E — ❌ Incorreta

ABCD/*+E- — A ordem dos operandos e operadores não reflete a expressão infixa; ABCD/* indicaria uma divisão entre C e D precedida por B, o que não corresponde à estrutura original.

NÃO CAIA NESSA!

A banca explora a troca de ordem dos operadores, especialmente a colocação do + antes do * (como na alternativa B). Lembre-se de que, na ausência de parênteses, a multiplicação e divisão têm precedência sobre adição e subtração, mas os parênteses alteram essa ordem. A conversão correta sempre coloca o operador após seus operandos imediatos.

Gabarito: letra C

Link permanente: /questoes/fg065336