A maior rede de estudos do Brasil

Grátis
20 pág.
Apols Compiladores

Pré-visualização | Página 1 de 5

Todas as Apol’s
Apol 1
Questão 1/5 - Compiladores
Levando-se em consideração o processo de compilação padrão da linguagem C/C++, podemos observar a criação de arquivos com a terminação .obj. Entre as alternativas a seguir, assinale a alternativa falsa relativa aos arquivos do tipo .obj deste processo de compilação.
Nota: 20.0
	
	A
	Arquivos .obj contém código de máquina referente a um arquivo de código-fonte específico;
	
	B
	Graças a existência destes arquivos .obj, podemos utilizar bibliotecas pré-compiladas e reduzir o tempo de compilação dos nossos programas;
	
	C
	A principal função do Linker é fazer a junção de todos os arquivos .obj envolvidos no processo de compilação;
	
	D
	Se o arquivo .obj já está em linguagem de máquina, ele pode ser facilmente executado em um sistema operacional;
Você acertou!
Ainda que o arquivo .obj possa conter código de máquina e, em alguns casos, apenas código de máquina, este arquivo não pode ser executado por não conter as informações específicas de execução necessárias para o sistema operacional.
	
	E
	Sem o uso de arquivos .obj o processo de compilação seria mais lento já que todas as funções e objetos utilizados no seu código teriam que passar por todo o processo de compilação ficando mais lento.
Questão 2/5 - Compiladores
O código ASCII usado com frequência em computação e o Unicode, contendo mais de 100.000 caracteres de diversas linguagens naturais são exemplos de alfabetos. Com isso em mente e considerando a definição de alfabeto marque, entre as opções a seguir, qual definição não corresponde a um alfabeto do ponto de vista do estudo das linguagens formais.
Nota: 20.0
	
	A
	Σ={0,1}Σ={0,1}
	
	B
	ΣI={1,2,a,b}ΣI={1,2,a,b}
	
	C
	Σv={a,e,i,o,u}Σv={a,e,i,o,u}
	
	D
	ΣM={abba}ΣM={abba}
	
	E
	ΣI={0,1,2,3,4,...}ΣI={0,1,2,3,4,...}
Você acertou!
o conjunto  é infinito não atendendo a definição de alfabeto.
Questão 3/5 - Compiladores
Dado o alfabeto Σ={1,0}Σ={1,0} identifique, nas opções a seguir, a máquina de estados finitos capaz de identificar strings binárias que representam números múltiplos de 2 e não de 4.
Nota: 20.0
	
	A
	
Você acertou!
estamos falando dos números binários que terminam 10. Uma análise detalhada dos estados e transições da máquina representada no enunciado permite perceber que: uma string que comece com qualquer números de zeros irá manter a máquina no estado ; o primeiro um da string de entrada colocará a máquina no estado  neste ponto, todos os próximos uns manterão a máquina no estado ; O primeiro zero colocará a máquina no estado , em accepting state; Neste estado um zero levará ao estado  caso contrário a máquina irá para o estado . Ou seja, a única forma de atingir o accepting state é receber um em  e  zero em
	
	B
	
	
	C
	
	
	D
	
	
	E
	
Questão 4/5 - Compiladores
As cadeias de caracteres, ou strings são artefatos de linguagens utilizados com frequência pelas linguagens de programação já que, na maior parte das vezes, se referem a textos que desejamos ler, guardar ou imprimir. Contudo, sua definição formal é mais elucidativa se consideramos sua relação com o alfabeto. Sendo assim, dadas as opções a seguir assinale a alternativa falsa.
Nota: 20.0
	
	A
	Uma string é uma sequência ordenada de símbolos que existem em um determinado alfabeto;
	
	B
	Considerando a string “110110011” podemos dizer que ela faz parte de um alfabeto de números binários;
	
	C
	A string vazia faz parte de todos os alfabetos possíveis;
	
	D
	Podemos usar símbolos que não façam parte de um alfabeto para marcar o começo e o fim de uma string;
	
	E
	Dado um alfabeto qualquer, em linguagens formais, não é possível identificar uma string utilizando uma máquina de estados finitos.
Você acertou!
Em linguagens formais, as máquinas de estados finitos e as expressões regulares são duas formas eficientes de identificar strings de um alfabeto dado.
Questão 5/5 - Compiladores
Uma das principais características de uma linguagem formal é a existência de uma estrutura rígida e precisamente especificada. As linguagens formais são utilizadas na programação de computadores há várias décadas principalmente por que sua estrutura rígida torna o processo de compilação possível. Ainda relacionado as linguagens formais qual das afirmativas abaixo é verdadeira?
Nota: 20.0
	
	A
	A língua portuguesa, graças a sua gramática estruturada é um exemplo de linguagem formal;
	
	B
	As linguagens formais não podem ser definidas com o uso de máquinas de estados finitos;
	
	C
	A linguagem de programação Java constitui um exemplo de linguagem natural usada em programação;
	
	D
	Uma das formas de definir uma linguagem formal reside no uso de expressões regulares;
Você acertou!
A resposta correta é a letra D, o teorema de Kleene declara que só podem ser classificadas como linguagens formais aquelas que podem ser definidas com o uso de máquinas de estados finitos e/ou expressões regulares.
	
	E
	O Teorema de Kleene, para a definição de linguagens naturais, torna mais eficiente o processo de interpretação em máquinas que rodem o Javascript.
Apol 2
Questão 1/5 - Compiladores
Dado o alfabeto Σ={1,0}Σ={1,0} identifique, nas opções a seguir, a máquina de estados finitos capaz de identificar strings binárias que representam números múltiplos de 2 e não de 4.
Nota: 20.0
	
	A
	
Você acertou!
estamos falando dos números binários que terminam 10. Uma análise detalhada dos estados e transições da máquina representada no enunciado permite perceber que: uma string que comece com qualquer números de zeros irá manter a máquina no estado ; o primeiro um da string de entrada colocará a máquina no estado  neste ponto, todos os próximos uns manterão a máquina no estado ; O primeiro zero colocará a máquina no estado , em accepting state; Neste estado um zero levará ao estado  caso contrário a máquina irá para o estado . Ou seja, a única forma de atingir o accepting state é receber um em  e  zero em
	
	B
	
	
	C
	
	
	D
	
	
	E
	
Questão 2/5 - Compiladores
A forma BNF do inglês Backus-Naur Form, pode ser utilizada para simplificar a especificação de regras de produção para a criação de linguagens simplificando o uso de gramáticas livre de contexto. Esta forma, e suas derivações, facilitam a interpretação das regras de produção. Marque, nas alternativas a seguir aquela que não é verdadeira.
Nota: 20.0
	
	A
	O uso de formas alternativas como a BNF simplifica a criação de analisadores sintáticos;
	
	B
	Uma vez que utilizamos a BNF não precisaremos analisar o código sintaticamente;
Você acertou!
	
	C
	O uso de formas alternativas, como a BNF, torna dispensáveis o uso dos analisadores léxicos;
	
	D
	Independente da forma escolhida para representar as regras de produção, não poderemos utilizar uma análise botton-up ou ascendente.
	
	E
	Independente da forma escolhida para representar as regras de produção, não poderemos utilizar uma análise top-down ou descendente.
Questão 3/5 - Compiladores
O analisador sintático é, para todos os efeitos, o segundo maior bloco funcional no processo de compilação ficando entre o analisador léxico e o analisador semântico. Marque entre alternativas a seguir, aquela que contém apenas funcionalidades atribuídas ao analisador sintático considerando-se os compiladores utilizados para a linguagem C.
Nota: 20.0
	
	A
	Identificação dos lexemas para a criação da árvore semântica etiquetada;
	
	B
	Identificação de sentenças e montagem da árvore sintática;
Você acertou!
	
	C
	Identificação de sentenças para a criação de tokens;
	
	D
	Identificação de tokens para a determinação de tipos;
Questão 4/5 - Compiladores
1. As linguagens de programação em geral pertencem a uma categoria de Linguagens baseadas em Gramáticas Livres de Contexto. Estas Gramáticas Livres de Contexto são a base para a construção de analisadores sintáticos. E são utilizadas para especificar as regras sintáticas de uma linguagem de programação. Talvez a parte mais importante deste processo seja a possibilidade de se representar este tipo de gramática por apenas quatro conjuntos de