Buscar

Apol 1 Compiladores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

Questão 1/10 - Compiladores
Em busca da eficiência na execução dos programas, ao longo do tempo, o processo de compilação ficou complexo e sujeito a erros e a tempos muito longos. Uma forma de tornar o processo de compilação mais eficiente foi a divisão deste processo em módulos dedicados. Assim, temos um módulo apenas para fazer a análise sintática do texto e outro apenas para entender o conteúdo semântico e assim sucessivamente. Quanto ao analisador sintático é verdadeiro dizer que:
Marque a alternativa correta
Nota: 10.0
	
	A
	O analisador sintático, apesar de fazer parte do processo de compilação, é totalmente dispensável e não altera o resultado final;
	
	B
	A principal função do analisador sintático é enviar os tokens necessários ao funcionamento do analisador Léxico;
	
	C
	O analisador sintático, para efetuar sua tarefa, organiza os tokens, enviados pelo analisador léxico em uma árvore;
Você assinalou essa alternativa (C)
Você acertou!
a resposta correta é a letra C e pode ser encontrada no primeiro capítulo do livro texto.
	
	D
	A análise sintática só pode ser realizada depois que o seu código-fonte esteja convertido em linguagem de máquina;
	
	E
	A maior parte de todas as linguagens formais, utilizadas para a programação de computadores dispensa o uso de analisadores sintáticos.
Questão 2/10 - 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: 10.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ê assinalou essa alternativa (D)
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.
Questão 3/10 - Compiladores
As gramáticas livres de contexto, utilizadas na definição de linguagens formais, para a criação de linguagens de programação definem, a partir de um conjunto de quatro elementos, todas as regras que determinam a linguagem. Essas regras podem ser expandidas pelo processo chamado de derivação. Sendo assim, marque a alternativa correta.
Nota: 10.0
	
	A
	A derivação consiste na substituição de um símbolo não terminal par uma regra de produção;
Você assinalou essa alternativa (A)
Você acertou!
	
	B
	A derivação consiste na substituição de um símbolo terminal por uma regra de produção;
	
	C
	A derivação consiste na substituição de um símbolo não terminal por um símbolo terminal;
	
	D
	A derivação consiste na substituição de uma regra de produção por um símbolo terminal;
	
	E
	A derivação consiste na substituição de uma regra de produção por um símbolo não terminal.
Questão 4/10 - 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: 0.0Você não pontuou essa questão
	
	A
	O uso de formas alternativas como a BNF simplifica a criação de analisadores sintáticos;
Você assinalou essa alternativa (A)
	
	B
	Uma vez que utilizamos a BNF não precisaremos analisar o código sintaticamente;
	
	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 5/10 - Compiladores
O processo de compilação é diferente de linguagem para linguagem. Notadamente por que cada um dos módulos envolvidos no processo está intimamente ligado as características específicas da linguagem que está sendo convertida em linguagem de máquina. Sendo assim, marque a alternativa correta entre as alternativas abaixo.
Nota: 10.0
	
	A
	Não existe nenhuma forma de compilar códigos escritos em Python;
	
	B
	A linguagem C pode ser compilada para a arquitetura ARM;
Você assinalou essa alternativa (B)
Você acertou!
Qualquer linguagem pode ser compilada para qualquer arquitetura.
	
	C
	Uso de interpretadores de C++ não é possível graças a orientação a objetos desta linguagem;
	
	D
	A linguagem Assembly é a própria linguagem de máquina;
	
	E
	A execução do Javascript, em páginas web não necessita de códigos de máquina, já que ele roda em um ambiente controlado.
Questão 6/10 - 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 tal forma que uma determinada Gramática G qualquer, tal que:
G = (N, T, P, S)
Onde:
· N – Conjunto finito de símbolos não terminais.
· T – Conjunto finito de símbolos terminais.
· P – Conjunto de regras de produção.
· S – Símbolo inicial da gramática.
Considerando estas informações marque qual das afirmações a seguir é falsa.
Nota: 0.0Você não pontuou essa questão
	
	A
	Símbolos terminais: Conjunto finito de símbolos básicos que formam as palavras da linguagem, são representadas pelo tokens reconhecidos pelo analisador léxico.
Você assinalou essa alternativa (A)
	
	B
	Símbolos não terminais: Conjunto finito de símbolos que representam os símbolos utilizados para controle da gramática e que não farão parte dos tokens.
	
	C
	Símbolo inicial: É a variável, um símbolo terminal, que representa o início da definição da gramática.
	
	D
	Regras de produção: Representam um conjunto de regras sintáticas para a definição da linguagem, indicam como símbolos terminais e não terminais podem ser combinados.
	
	E
	Regras de produção: Representam um conjunto de regras sintáticas para a definição da linguagem, mas não indicam nenhuma forma de combinação entre os símbolos terminais e não terminais.
Questão 7/10 - Compiladores
Considerando a tecnologia utilizada no processo de compilação, quais das afirmações a seguir são corretas:
I. O processo de otimização de código de máquina é genérico e não leva em conta a arquitetura do dispositivo alvo do processo de compilação;
II. A principal diferença entre compiladores e interpretadores é a existência, no processo de interpretação, de um arquivo físico do programa em linguagem de máquina;
III.Os processos aplicados tanto na compilação quanto na interpretação são muito parecidos e, nos dois casos, terminamos sempre com código em linguagem de máquina sendo executado em uma CPU;
IV. Independente da tecnologia aplicada no processo de compilação o resultado final será sempre igual para uma mesma arquitetura
Nota: 10.0
	
	A
	Apenas a afirmação III é verdadeira;
Você assinalou essa alternativa (A)
Você acertou!
Letra a, apenas a afirmação III é verdadeira, de fato, tanto no processo de compilação quanto no processo de interpretação o objetivo é gerarum código, em linguagem de máquina que seja eficiente e de baixo custo operacional. De fato, com a tecnologia atual, a maior diferença está na existência de um arquivo executável, produto da compilação e que não está disponível em processos de interpretação.
	
	B
	As afirmações I e II são verdadeiras;
	
	C
	Nenhuma das afirmações é verdadeira;
	
	D
	Todas as afirmações são verdadeiras menos a afirmação IV;
	
	E
	As afirmações I e IV são verdadeiras.
Questão 8/10 - 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: 10.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ê assinalou essa alternativa (D)
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 9/10 - 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: 10.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ê assinalou essa alternativa (B)
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 10/10 - 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: 10.0
	
	A
	
Você assinalou essa alternativa (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

Continue navegando