Logo Passei Direto

Compiladores na Computação

Ferramentas de estudo

Solved questions

Material
Study with thousands of resources!

Solved questions

Text Material Preview

Compilador 
O que e um compilador em ciencia da computacao?
a) Um software que traduz codigo-fonte de uma linguagem de programacao de alto nivel para
linguagem de maquina ou codigo intermediario.
b) Um programa que executa diretamente o codigo-fonte sem traducao.
c) Um hardware que processa instrucoes de memoria.
d) Um banco de dados que armazena codigos-fonte.
Resposta explicativa: Um compilador e um programa que converte codigo-fonte escrito em
linguagem de programacao de alto nivel em linguagem de maquina ou codigo intermediario,
permitindo que o computador execute as instrucoes corretamente.
Qual e a principal funcao de um compilador?
a) Executar comandos diretamente na memoria do computador.
b) Traduzir e otimizar codigo-fonte para gerar um programa executavel.
c) Armazenar dados de forma permanente em disco rigido.
d) Servir como editor de texto para programadores.
Resposta explicativa: A funcao essencial do compilador e transformar o codigo-fonte em codigo
executavel, realizando otimizacoes que tornam o programa mais eficiente e garantindo que nao
haja erros de sintaxe.
Qual a diferenca entre compilador e interpretador?
a) O compilador traduz o codigo de uma vez, gerando um executavel; o interpretador executa o
codigo linha por linha sem gerar um arquivo intermediario.
b) O interpretador cria arquivos executaveis; o compilador executa o codigo diretamente.
c) Nao existe diferenca, ambos realizam a mesma funcao.
d) O compilador so funciona em hardware especifico.
Resposta explicativa: Compiladores convertem o codigo inteiro antes da execucao, produzindo um
arquivo executavel, enquanto interpretadores leem e executam o codigo linha por linha, o que pode
ser mais lento, mas facilita testes e depuracao.
Qual das etapas abaixo faz parte do processo de compilacao?
a) Analise lexica, analise sintatica, analise semantica, otimizacao e geracao de codigo.
b) Apenas execucao do codigo.
c) Armazenamento de dados em nuvem.
d) Criacao de planilhas automaticas.
Resposta explicativa: O processo de compilacao envolve multiplas etapas: analise lexica
(identificacao de tokens), analise sintatica (estrutura do codigo), analise semantica (verificacao de
tipos e significados), otimizacao (melhoria de desempenho) e geracao de codigo (criacao do
executavel).
O que ocorre na analise lexica de um compilador?
a) O codigo-fonte e transformado em uma sequencia de tokens, como palavras-chave,
identificadores e operadores.
b) O programa e executado diretamente.
c) Sao criadas interfaces graficas para o usuario.
d) O compilador verifica apenas erros de logica.
Resposta explicativa: A analise lexica quebra o codigo em elementos significativos chamados
tokens, eliminando espacos e comentarios e preparando o codigo para a analise sintatica
subsequente.
Na analise sintatica, o compilador:
a) Verifica se a sequencia de tokens segue as regras da gramatica da linguagem.
b) Executa o codigo diretamente na CPU.
c) Otimiza o desempenho do programa.
d) Conecta o programa a bancos de dados externos.
Resposta explicativa: A analise sintatica examina a estrutura do codigo, garantindo que os
comandos e expressoes estejam organizados de acordo com as regras gramaticais da linguagem
de programacao, prevenindo erros de sintaxe.
Qual a importancia da analise semantica no processo de compilacao?
a) Verificar se os comandos fazem sentido logico e se os tipos de dados sao compativeis.
b) Traduzir codigo em linguagem de maquina sem erros.
c) Criar arquivos temporarios de armazenamento.
d) Exibir graficos do desempenho do programa.
Resposta explicativa: A analise semantica garante que o codigo nao so esteja correto
sintaticamente, mas tambem faca sentido logico, por exemplo, evitando operacoes entre tipos
incompativeis ou usos incorretos de variaveis.
O que significa a geracao de codigo em compiladores?
a) Produzir o codigo final em linguagem de maquina ou intermediaria que sera executado pelo
computador.
b) Traduzir a documentacao do programa para diferentes idiomas.
c) Criar diagramas de fluxo do programa.
d) Atualizar automaticamente o compilador.
Resposta explicativa: Apos a analise semantica e otimizacao, o compilador gera codigo que pode
ser entendido e executado pelo computador, transformando o programa escrito pelo desenvolvedor
em instrucoes de maquina.
A otimizacao de codigo realizada por compiladores tem como objetivo:
a) Melhorar a eficiencia do programa, reduzindo tempo de execucao e uso de memoria.
b) Corrigir erros de sintaxe automaticamente.
c) Converter codigo-fonte para outro idioma de programacao.
d) Adicionar funcionalidades extras ao programa.
Resposta explicativa: A otimizacao ajusta o codigo gerado para que ele execute mais rapidamente
ou use menos recursos, sem alterar a logica do programa original.
Qual e a vantagem principal de usar compiladores em linguagens como C ou C++?
a) Maior desempenho do programa final, pois o codigo e convertido em linguagem de maquina
antes da execucao.
b) Facilitar a leitura do codigo para iniciantes.
c) Reduzir a necessidade de testes de software.
d) Permitir execucao imediata sem erros.
Resposta explicativa: Linguagens compiladas como C e C++ se beneficiam de desempenho
superior, porque o codigo ja e convertido em linguagem de maquina, eliminando a necessidade de
interpretacao linha a linha durante a execucao.
Um erro detectado na fase de analise lexica e geralmente:
a) Um erro de identificacao de tokens, como um identificador invalido ou caractere nao reconhecido.
b) Um erro de logica do programa.
c) Um problema de desempenho.
d) Uma falha na execucao de operacoes matematicas.
Resposta explicativa: Erros lexicos ocorrem quando o compilador encontra caracteres ou
sequencias que nao correspondem a linguagem da programacao, impedindo que a analise continue
corretamente.
A diferenca entre compiladores de linguagem de alto nivel e compiladores just-in-time (JIT) e que:
a) Compiladores JIT traduzem o codigo em tempo de execucao, enquanto compiladores
tradicionais traduzem antes da execucao.
b) Compiladores JIT nao geram codigo de maquina.
c) Compiladores tradicionais nao realizam otimizacao.
d) Compiladores JIT funcionam apenas em sistemas moveis.
Resposta explicativa: Compiladores JIT convertem o codigo em linguagem de maquina durante a
execucao, equilibrando a flexibilidade de interpretacao com a eficiencia de compilacao, enquanto
compiladores tradicionais produzem executaveis antes da execucao.
Em que situacoes um compilador fornece mensagens de advertencia (warnings) e nao erro
(errors)?
a) Quando identifica praticas que podem gerar problemas, mas nao impedem a execucao do
programa.
b) Quando o codigo esta perfeito.
c) Quando o compilador nao consegue ler o arquivo-fonte.
d) Quando a CPU nao suporta a linguagem utilizada.
Resposta explicativa: Advertencias indicam potenciais problemas ou mas praticas que podem gerar
erros futuros, mas nao bloqueiam a compilacao. Isso ajuda o programador a melhorar o codigo sem
interromper o desenvolvimento.
Qual e a funcao de um pre-processador em linguagens como C?
a) Processar diretivas como inclusao de arquivos e macros antes da compilacao principal.
b) Executar o programa diretamente.
c) Traduzir codigo de maquina para linguagem de alto nivel.
d) Monitorar o desempenho do compilador.
Resposta explicativa: O pre-processador realiza tarefas como inclusao de arquivos de cabecalho,
substituicao de macros e diretivas de compilacao, preparando o codigo para ser processado pelo
compilador propriamente dito.
O que e um compilador de multiplas passes?
a) Um compilador que processa o codigo em varias etapas, cada uma responsavel por tarefas
especificas.
b) Um compilador que so funciona em servidores.
c) Um compilador que interpreta o codigo linha a linha.
d) Um compilador que traduz codigo sem gerar executavel.
Resposta explicativa: Compiladores de multiplas passes dividem o processo em etapas sequenciais
(analise lexica, sintatica,semantica, otimizacao, geracao de codigo), permitindo melhor organizacao
e maior precisao na deteccao de erros.
A portabilidade de um programa compilado depende de:
a) A linguagem alvo do compilador e o sistema operacional em que o executavel sera executado.
b) Apenas do editor de texto usado para escrever o codigo.
c) Da velocidade do processador.
d) Da memoria RAM disponivel.
Resposta explicativa: A portabilidade e influenciada pelo compilador e pelo sistema alvo. Um
programa compilado para Windows pode nao funcionar em Linux sem recompilacao, a menos que
seja gerado codigo intermediario compativel com multiplos sistemas.
Qual das seguintes linguagens e tradicionalmente compilada?
a) C
b) Python
c) JavaScript
d) HTML
Resposta explicativa: Linguagens como C sao tradicionalmente compiladas, gerando executaveis
de alto desempenho, enquanto Python e JavaScript sao interpretadas ou compiladas JIT, e HTML
nao e uma linguagem de programacao, mas de marcacao.
Um compilador detecta erros de logica do programa?
a) Nao, ele apenas identifica erros de sintaxe, sem compreender a logica do programa.
b) Sim, corrige automaticamente todos os problemas de logica.
c) Sim, impede que o codigo seja executado se houver falhas de logica.
d) Nao, erros de logica sao resolvidos pelo pre-processador.
Resposta explicativa: Compiladores verificam erros de sintaxe e semantica, mas nao podem avaliar
completamente a logica do programa. Erros logicos so aparecem durante a execucao ou testes do
software.
O que e codigo intermediario gerado por um compilador?
a) Um codigo que nao e linguagem de maquina direta, mas pode ser interpretado ou compilado
para diferentes plataformas.
b) Codigo-fonte original.
c) Codigo que so existe em memoria temporaria e nao pode ser salvo.
d) Codigo HTML gerado automaticamente.
Resposta explicativa: Codigo intermediario serve como uma etapa entre o codigo-fonte e a
linguagem de maquina, permitindo portabilidade e otimizacoes antes da geracao do executavel
final.
Por que a otimizacao de codigo e mais critica em compiladores de linguagens de sistemas?
a) Porque sistemas operacionais e softwares criticos precisam de desempenho maximo e uso
eficiente de recursos.
b) Porque linguagens de sistema nao tem sintaxe complexa.
c) Porque sistemas nao usam memoria RAM.
d) Porque compiladores de sistemas nao geram executaveis.
Resposta explicativa: A otimizacao garante que programas de sistema, que controlam hardware e
recursos criticos, funcionem rapidamente e com menor consumo de memoria, essencial para
estabilidade e desempenho do computador.
Se desejar, posso continuar a lista com mais perguntas detalhadas sobre compiladores, incluindo
temas avancados como analise de fluxo de dados, linkers, loaders e tecnicas de otimizacao, de
modo a ultrapassar confortavelmente 1000 palavras. Quer que eu faca isso?