Pular para o conteúdo principal

Questão de Arquitetura de Software — Software — ACAFE 2024

Arquitetura de SoftwareSoftware
Código
qg053046
Banca
ACAFE
Órgão
CELESC
Ano
2024
Nível
Superior
Cargo
Analista de Sistemas - Desenvolvimento e Transformação Digital
Um desenvolvedor de software está trabalhando em um novo projeto que precisa ser executado em diferentes plataformas. Para garantir que o código funcione corretamente em cada plataforma, o desenvolvedor precisa utilizar um compilador. Assinale qual das seguintes etapas NÃO faz parte do processo de compilação de um programa.
  1. AAnálise léxica: Divide o código-fonte em tokens, que são as unidades básicas da linguagem, como palavras-chave, identificadores, operadores e literais.
  2. BOtimização de código: Aplica técnicas para melhorar o desempenho do código gerado, como eliminação de instruções redundantes, reordenação de instruções e simplificação de expressões.
  3. CAnálise sintática: Verifica se a estrutura do código-fonte está de acordo com as regras gramaticais da linguagem de programação.
  4. DAnálise semântica: Verifica se o código-fonte está semanticamente correto, ou seja, se o significado das expressões e instruções está de acordo com as regras da linguagem.
  5. EGeração de código intermediário: Gera uma representação intermediária do código-fonte, que pode ser facilmente traduzida para a linguagem de máquina da plataforma de destino.
Revelar gabarito e comentário

GabaritoB — Otimização de código: Aplica técnicas para melhorar o desempenho do código gerado, como eliminação de instruções redundantes, reordenação de instruções e simplificação de expressões.

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”.

Compilação de Programas

Gabarito: letra B. A otimização de código não é uma etapa obrigatória do processo de compilação; ela é uma fase opcional que visa melhorar o desempenho do código gerado, mas não faz parte do núcleo essencial da compilação, que compreende análise léxica, sintática, semântica e geração de código.

A questão cobra o conhecimento das fases clássicas de um compilador. A maioria dos compiladores inclui as seguintes etapas fundamentais:

  • Análise léxica (tokenização)

  • Análise sintática (construção da árvore sintática)

  • Análise semântica (verificação de tipos e regras de escopo)

  • Geração de código (intermediário e/ou final)

A otimização, embora comum, é uma fase opcional e não integra o conjunto mínimo de etapas que todo compilador deve realizar.

Etapa

Obrigatória?

Descrição

Análise léxica

Sim

Divide o código-fonte em tokens (palavras-chave, identificadores, operadores, literais)

Análise sintática

Sim

Verifica se a estrutura do código obedece à gramática da linguagem

Análise semântica

Sim

Verifica a correção lógica (tipos, escopos, declarações)

Geração de código intermediário

Sim

Produz representação independente de máquina (ex.: código de três endereços)

Otimização de código

Não (opcional)

Aplica técnicas para melhorar desempenho (eliminação de redundâncias, reordenação)

  1. 1Análise léxica
  2. 2Análise sintática
  3. 3Análise semântica
  4. 4Geração de código
  5. 5Otimização (opcional)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta (é parte da compilação)

A análise léxica é a primeira fase, responsável por converter a sequência de caracteres do código-fonte em tokens, que são as unidades básicas da linguagem (palavras-chave, identificadores, operadores etc.). Sem ela, o compilador não consegue prosseguir.

Alternativa B — ✅ Correta ⟵ GABARITO

A otimização de código é uma fase opcional, não obrigatória no processo de compilação. Muitos compiladores podem não implementar otimizações, especialmente em contextos educacionais ou quando a simplicidade é priorizada. Além disso, a otimização frequentemente ocorre após a geração do código intermediário ou do código objeto, sendo um refinamento e não uma etapa necessária para a compilação básica.

Alternativa C — ❌ Incorreta (é parte da compilação)

A análise sintática verifica se a sequência de tokens obedece à gramática da linguagem, construindo uma árvore sintática. É uma fase indispensável em qualquer compilador.

Alternativa D — ❌ Incorreta (é parte da compilação)

A análise semântica confere a consistência lógica do programa (tipos, declarações, escopos), assegurando que as construções fazem sentido dentro das regras da linguagem.

Alternativa E — ❌ Incorreta (é parte da compilação)

A geração de código intermediário produz uma representação independente de máquina (por exemplo, código de três endereços), que facilita a posterior tradução para o código alvo. É uma fase padrão no pipeline de compilação.

Gabarito: letra B

Link permanente: /questoes/qg053046