Questão de Arquitetura de Software — Software — ACAFE 2024
Arquitetura de Software›Software
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.
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.
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.
CAnálise sintática: Verifica se a estrutura do código-fonte está de acordo com as regras gramaticais da linguagem de programação.
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.
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)
1Análise léxica
2Análise sintática
3Análise semântica
4Geração de código
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.