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 A Apenas a afirmação III é verdadeira; B Apenas as afirmações I e II são verdadeiras; C Apenas as afirmações II e IV são verdadeiras; D Apenas as afirmações III e IV são verdadeiras; E Todas as afirmações são verdadeiras.
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.
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; 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.
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.
A A derivação consiste na substituição de um símbolo não terminal par uma regra de produção; 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.
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 O uso de formas alternativas como a BNF simplifica a criação de analisadores sintáticos; B Uma vez que utilizamos
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; 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.
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.
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; 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.