Baixe o app para aproveitar ainda mais
Prévia do material em texto
Teste de Conhecimento avalie sua aprendizagem (PC-DF/2012) Com relação aos softwares básicos envolvidos no processo de transformação de um programa escrito em linguagem de alto nível para um código executável ou interpretado, assinale a alternativa correta. (IBGE/2010) Ao realizar testes durante a elaboração de um compilador, um analista descobriu que havia, no compilador, um erro na checagem de tipos de variáveis em expressões, permitindo, por exemplo, a multiplicação entre tipos de dados que não poderiam ocorrer. Em compiladores, a checagem de tipos de variáveis em expressões é uma função do: COMPILADORES Lupa CCT0838_202008191076_TEMAS Aluno: YURI CID DA SILVA LIMA Matr.: 202008191076 Disc.: COMPILADORES 2023.1 EAD (G) / EX Prezado (a) Aluno(a), Você fará agora seu TESTE DE CONHECIMENTO! Lembre-se que este exercício é opcional, mas não valerá ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha. Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua AV e AVS. ANÁLISE SEMÂNTICA 1. No processo de análise semântica da compilação, é verificada a consistência dos tipos de variáveis envolvidas em operações aritméticas. Os montadores buscam referências externas em rotinas de bibliotecas e inserem-nas no código-objeto. Os link-editores são usados para resolver as referências aos símbolos internos de um programa, produzindo um código-objeto simplificado. No processo de compilação, o analisador léxico e o sintático estão preocupados com a semântica e os significados dos programas como um todo. Compilação e montagem são processos semelhantes; contudo, o processo de montagem é bem mais complexo. Data Resp.: 24/02/2023 07:18:14 Explicação: A análise semântica é uma das etapas do processo de compilação. Ela tem como objetivo verificar a correção semântica do código-fonte, incluindo a consistência dos tipos de variáveis envolvidos em operações aritméticas. Esse processo verifica se o código está sendo usado corretamente de acordo com as regras da linguagem. 2. analisador léxico. otimizador de código. linker. scanner. analisador semântico. Data Resp.: 24/02/2023 07:18:21 javascript:voltar(); javascript:voltar(); javascript:diminui(); javascript:aumenta(); (INSTITUTO AOCP/2019) A estrutura típica de um compilador possui 3 elementos. Assinale a alternativa que apresenta corretamente esses elementos. (CESPE/CEBRASPE/2022 - Adaptada) Autômatos são estruturas matemáticas que representam uma máquina de estados finitos. Eles são usados para modelar processos computacionais, como a validação de entradas de linguagens formais (por exemplo, verificar se uma string é uma sentença válida em uma dada linguagem), e para implementar algoritmos em processamento de linguagem natural e inteligência artificial. Nesse sentido, o autômato finito determinístico. (CESGRANRIO/2012) Um compilador é um programa que executa vários passos, dentre os quais, o de analisar uma sequência de entrada para determinar sua estrutura gramatical segundo uma determinada gramática formal. O resultado típico dessa análise é uma estrutura conhecida como: Explicação: A análise semântica é responsável por verificar a validade da semântica do programa, incluindo a checagem de tipos de variáveis em expressões. Ela tem como objetivo identificar erros de semântica, tais como operações inválidas com tipos de variáveis diferentes, declarações duplicadas de variáveis, etc. Por isso, é o analisador semântico que está responsável por detectar o erro mencionado na questão. ANÁLISE LÉXICA 3. Front end, interpretador, base de dados. Front end, interpretador, back end. Front end, compilador, base de dados. Front end, analisador, back end. Front end, otimizador, back end. Data Resp.: 24/02/2023 07:18:25 Explicação: A Compilação abrange duas grandes etapas: A Análise (front-end) e a Síntese (back-end). A etapa de Análise implica em três passos internos: Análise Léxica, Análise Sintática e Análise Semântica. Já a etapa de Síntese é composta pela Geração de Código Intermediário, Otimização e Geração de Código de Montagem. 4. pode, para cada entrada, transitar a partir do seu estado atual em um e somente um estado. permite zero, uma ou n transições para os estados de entrada. corresponde à função de transição que recebe um estado ou um símbolo de entrada que sempre retorna um conjunto de estados como resultado. consegue estar em vários estados ao mesmo tempo. tem a capacidade de adivinhar algo sobre sua entrada ao testar valores. Data Resp.: 24/02/2023 07:18:28 Explicação: Um Autômato Finito Determinístico é um autômato no qual para cada estado e para cada entrada só há zero ou uma transição possível. Existem vários tipos de autômatos, como autômatos finitos determinísticos (DFA), autômatos finitos não-determinísticos (NFA), autômatos de Pilha, autômatos de Estados Múltiplos (Mealy) e autômatos de Estados Moore. Cada tipo de autômato é adequado para uma tarefa específica e é projetado para atender a determinadas restrições computacionais e de tempo de execução. ANÁLISE SINTÁTICA 5. (FCM/2018 - Adaptada) A Hierarquia de Chomsky é uma classificação das gramáticas formais, proposta pelo linguista Noam Chomsky, que divide as gramáticas em 4 classes. Nesse sentido, Linguagens livres de contexto são exatamente as linguagens que podem ser reconhecidas por: O que faz a análise léxica? O tradutor que gera um código objeto a partir de uma linguagem de baixo nível é o : gramática dirigida a sintaxe árvore AVL fluxo (stream) de tokens gramática livre de contexto árvore sintática Data Resp.: 24/02/2023 07:18:31 Explicação: A Árvore Sintática é útil na análise sintática, pois permite verificar a correta ordenação dos tokens e a estrutura da sentença de forma visual e fácil de entender. Além disso, a Árvore Sintática pode ser usada como base para a geração de código em outras etapas do processo de compilação. 6. autômatos finitos determinísticos. expressões regulares. autômatos com pilha. autômatos finitos não determinísticos. máquinas de Turing. Data Resp.: 24/02/2023 07:18:35 Explicação: Autômatos com pilha (Pushdown Automata) são usados para reconhecer a linguagem livre de contexto, que é uma classe mais ampla de linguagens do que as reconhecidas pelos autômatos finitos. A pilha permite que o autômato mantenha o contexto e faça escolhas não-determinísticas. O COMPILADOR 7. Tratar erros de tipo no programa fonte; Verifica se a estrutura gramatical do programa está correta; É um sistema que aceita como entrada um programa escrito em uma linguagem de programação e produz como resultado um programa equivalente em outra linguagem; Lê caractere por caractere do texto encontrando sequências que constituem tokens; Verifica se as estruturas do programa irão fazer sentido 4 durante a execução; Data Resp.: 24/02/2023 07:18:38 Explicação: A resposta correta é: Lê caractere por caractere do texto encontrando sequências que constituem tokens; 8. Um programa pode ter parte de sua funcionalidade implementada por um procedimento. Procedimentos são normalmente compilados a parte e depois ligados ao código principal. Quando um procedimento é chamado é criado para ele um Registro de Ativação que possui informações de contexto, suas variáveis locais, parâmetros etc. Com base nisso se um procedimento G chama um procedimento D que chama um procedimento E podemos afirmar que O registro de ativação de E estará no topo da pilha Porque Os registros de ativação dos diversos procedimento são empilhados na ordem inversa do retorno Com base nas afirmativas acima podemos concluir que: Para determinar qual código é mais otimizado podemos utilizar uma métrica que calcule o custo de cada opção e determinar qual é o mais otimizado, ou seja qual tem o menor custo. Considere um processador com o seguinte conjunto de instruções: Carregador InterpretadorLigador Compilador Montador Data Resp.: 24/02/2023 07:18:42 Explicação: A resposta correta é: Montador. GERAÇÃO DE CÓDIGO 9. As duas são corretas e a segunda não justifica a primeira As duas afirmativas são falsas As duas são corretas e a segunda justifica a primeira A primeira é verdadeira e a segunda falsa A primeira é falsa e a segunda correta Data Resp.: 24/02/2023 07:18:46 Explicação: Resposta correta: A primeira é verdadeira e a segunda falsa 10. Sabendo que a métrica utilizada gera um custo de 1 para instruções que não acessam a memória RAM e um custo de 2 para as que não acessam analise os trechos de código abaixo Como base na análise podemos afirmar que o código 2 é melhor que o código 1 Porque Seu custo é 12 enquanto o do código 1 é 12 Com base nas afirmativas acima podemos concluir que: As duas são corretas e a segunda não justifica a primeira As duas são corretas e a segunda justifica a primeira A primeira é falsa e a segunda correta A primeira é verdadeira e a segunda falsa As duas afirmativas são falsas Data Resp.: 24/02/2023 07:18:50 Explicação: Respsota correta: A primeira é verdadeira e a segunda falsa Não Respondida Não Gravada Gravada
Compartilhar