Prévia do material em texto
1a Questão Os compiladores são responsáveis por abstrair a complexidade da programação e proporcionar uma vida mais tranquila para os desenvolvedores. Sobre a análise léxica e sintática executadas pelos compiladores, assinale a opção correta. Os analisadores léxico e sintático somente se comunicam via tabela de simbolos. Um analisador léxico gera a entrada para o analisador sintático. O analisador sintático processa diretamente o programa fonte a procura de erros. Técnicas para análise léxica são mais complexas do que as necessárias para a análise sintática. Um analisador léxico serve como o passo final de um analisador sintático. Explicação: O analisador léxico realiza o primeiro passo da etapa de análise da compilação. Uma de suas responsabilidades é gerar a entrada para o analisador sintático. 2a Questão O tradutor que gera um código objeto a partir de uma linguagem de baixo nível é o : Carregador Ligador Compilador Montador Interpretador Explicação: A resposta correta é: Montador. 3a Questão Durante o processo de Análise o scanner lê os caracteres um por um e tenta associa-los ao padrão correspondente a algum token. Neste processo ele eventualmente pode encontrar algum padrão que não corresponda ao tokens. Nesse caso, ele deve: Passar o erro para o analisador sintático para que este o trate. Tentar corrigir o erro reescrevendo a parte onde foi encontrado. Abortar a análise e reportar imediamente o erro. Ignorar totalmente o erro e prosseguir a análise como se nada tivesse acontecido. Continuar a análise após realizar a recuperação do erro e anotá-lo para informação posterior. Explicação: A resposta correta é: Continuar a análise após realizar a recuperação do erro e anotá-lo para informação posterior. 4a Questão Considere a seguinte especificação de tokens com sua descrição informal: SE fosse submetida ao Analisador a seguinte expressão: Soma = 0; Soma = A + B; O sétimo token reconhecido e seu lexema seriam respectivamente: TermCom e ; OpArit e + NumInt e 0 Id e Soma Id e A Explicação: A resposta correta é: Id e A 5a Questão (Marinha/2011) Uma gramática livre de contexto possui quatro componentes: símbolos terminais, símbolos não terminais, símbolo inicial e um conjunto de: artigos. volumes. produções. parágrafos. tabelas. Explicação: Uma gramática livre de contexto possui quatro componentes: Símbolos terminais, Símbolos não terminais, Símbolo inicial e um conjunto de regras de produção. 6a Questão (Marinha/2019 - Adaptada) O processo de compilação é o processo pelo qual o código-fonte de uma linguagem de programação é traduzido em um código objeto executável por uma máquina. Sobre análise léxica e sintática executadas pelos compiladores, assinale a opção correta. Um analisador léxico serve como o passo final de um analisador sintático. O analisador sintático não é o coração de um compilador, ao contrário do processo de parser, que tem papel fundamental no referido processo. Técnicas para análise léxica são mais complexas do que as necessárias para a análise sintática. Um analisador léxico serve como o passo inicial de um analisador sintático. Praticamente, todos os compiladores unem a tarefa de analisar a sintaxe em uma única parte distinta. Explicação: O analisador sintático é o componente do compilador responsável por, a partir dos tokens gerados pela Análise Léxica, verificar se as expressões de entrada são sentenças válidas na gramática da linguagem-fonte, gerando uma árvore sintática que é repassada para o analisador semântico visando à continuidade da compilação. 7a Questão (IDIB/2020 - Adaptada) As linguagens de programação que utilizamos para construção de aplicações são de fácil entendimento para um programador, pois são conhecidas como linguagens com alto nível de abstração. No entanto, este código não pode ser executado diretamente pelo computador, pois o mesmo reconhece apenas a linguagem de máquina. Assinale a alternativa que indica corretamente o nome do programa que, durante sua execução, realiza operações de análise léxica, análise sintática, análise semântica e síntese. compilador tradutor montador interpretador ligador Explicação: Um compilador é um software que realiza as etapas de análise léxica, análise sintática, análise semântica e síntese para produzir código de máquina a partir de código fonte escrito em uma linguagem de programação de alto nível. O compilador traduz o código fonte escrito em uma linguagem de programação para uma linguagem de baixo nível (geralmente código de máquina), tornando-o executável pelo computador. 8a Questão (PEFOCE/2012 - Adaptada) Levando em consideração o processo de compilação, avalie as assertivas a seguir: I. A tabela de símbolos utilizada no processo de compilação contém informações sobre tipos e atributos de cada nome definido pelo usuário no programa. II. Essas informações são colocadas na tabela de símbolos pelos analisadores léxico e sintático e usadas pelo analisador semântico e pelo gerador de código. III. Compiladores são ferramentas de software que convertem código fonte escrito em uma linguagem de programação para código de máquina, que pode ser executado pelo computador. Marque a alternativa correta. II, apenas. III, apenas. I e II, apenas. I, apenas. I, II e III. Explicação: Compiladores são ferramentas de software que convertem código fonte escrito em uma linguagem de programação para código de máquina, que pode ser executado pelo computador. O processo de compilação inclui verificação de erros sintáticos e semânticos no código fonte e geração de um arquivo executável que contém instruções que o processador do computador entende. 9a Questão Um sistema operacional (SO) é um software que gerencia os recursos de um computador e fornece serviços aos programas que estão sendo executados. Sobre o Sistema Operacional, analise as afirmativas a seguir. I. Sistemas monotarefa permitem que todos os recursos do sistema fiquem dedicados a uma única tarefa. II. Um sistema multitarefa é um tipo de sistema operacional que permite que vários programas ou processos sejam executados ao mesmo tempo. III. Todos os sistemas atuais são monotarefa, uma vez que utilizam todo seu poder computacional para execução do programa em memória. Marque a alternativa correta. I e II, apenas. III e II, apenas. I e III, apenas. I, apenas. II, apenas. Explicação: A afirmação de que todos os sistemas atuais são monotarefa é incorreta, uma vez que a grande maioria dos sistemas operacionais modernos são multitarefa. A ideia de que um sistema utiliza todo o seu poder computacional para execução de um único programa em memória é uma característica de sistemas mais antigos, que não são mais comuns atualmente. 10a Questão Variáveis são espaços de memória que são usados para armazenar dados ou informações em um programa de computador. Elas têm um nome (ou identificador) que é usado para acessá-las e podem ter diferentes tipos de dados associados a elas, como números, strings de texto, booleanos, entre outros. Avalie o código abaixo escrito em linguagem C Onde as variáveis float nota1, nota2 seriam alocadas? No código-objeto. Na área de dados estáticos. Na memória secundária. No heap. Na fila. Explicação: As variáveis float nota1 e nota2 são variáveis globais e estão declaradas fora da função principal. Sendo assim, elas serão alocadasna área de dados estáticos.