Buscar

NOTA 10 ATIVIDADE AVALIATIVA SEMANA7

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 4 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

Prévia do material em texto

ATIVIDADE AVALIATIVA SEMANA7 
 
PERGUNTA 1 
 
O processo de compilação é subdivido em duas partes: a análise do código e a síntese. A 
fase de análise é conhecida também como front-end, e a fase de síntese é conhecida 
como back-end. Ao fim da primeira etapa, como no final da etapa da síntese, um código objeto 
é gerado. Este código é interpretado e executado pelo computador. 
 
Considerando as oportunidades de otimização do código, analise as afirmativas a seguir e 
assinale V para a(s) verdadeira(s) e F para a(s) falsa(s) com relação 
I. ( ) Há a eliminação do chamado código morto, ou seja, partes do código que são 
inoperantes. 
II. ( ) Há a renomeação das variáveis de curta duração, conhecidas como variáveis 
temporárias. 
III. ( ) Ferramentas de software para otimização do código podem ser usadas, como a 
Code Profiler. 
IV. ( ) É possível usar técnicas, como Peephole ou baseados, em análise do tempo de vida. 
 
Assinale a alternativa que apresenta a sequência CORRETA. 
 
a. F, F, F, V. 
 
b. V, V, V, V. 
 
c. V, F, V, V. 
 
d. F, V, V, V. 
 
e. V, V, F, V. 
 
PERGUNTA 2 
 
Desde os primeiros compiladores dos anos 1950, a qualidade do código gerado por um 
compilador tem grande importância. Essa qualidade pode ser medida pela velocidade e pelo 
tamanho do código-alvo, embora a velocidade seja, em geral, mais importante. 
 
Com relação ao apresentado, analise as asserções a seguir e as relações propostas entre 
elas. 
 
I. Os compiladores modernos lidam com o problema da qualidade de código com a execução 
de diversos passos no processo de compilação. 
PORQUE 
II. A coleta de informações sobre o código-fonte e o uso dessas informações para 
transformações para melhoria de código nas estruturas de dados que representam o código 
são exemplos desses passos. Diversas técnicas para melhorar a qualidade do código foram 
desenvolvidas ao longo dos anos, as quais são identificadas como técnicas de otimização de 
código. 
 
Analisando as asserções anteriores, conclui-se que: 
 
a. a primeira asserção é falsa, e a segunda é verdadeira. 
 
b. a primeira asserção é verdadeira, e a segunda é falsa. 
 
c. as duas asserções são falsas. 
 
d. as duas asserções são verdadeiras, e a segunda não justifica a primeira. 
 
e. as duas asserções são verdadeiras, e a segunda justifica a primeira. 
 
PERGUNTA 3 
 
Se um compilador gerar código intermediário diretamente durante a análise sintática ou a 
partir de uma árvore sintática, deve ocorrer uma passada adicional pelo código intermediário 
para gerar o código-alvo final. 
 
Considerando as características desse tipo de ambiente, analise as afirmativas a seguir e 
assinale V para a(s) verdadeira(s) e F para a(s) falsa(s). 
 
I. ( ) É fundamental a alocação adequada dos registradores e a manutenção das 
informações sobre o uso dos registradores, ou seja, quais registradores estão disponíveis e 
quais contêm valores conhecidos. 
II. ( ) A geração de código a partir de um código intermediário requer uma das seguintes 
técnicas-padrão ou as duas: expansão de macros e simulação estática. 
III. ( ) A expansão de macros requer a substituição de cada tipo de instrução de código 
intermediário por uma sequência equivalente de instruções de código-alvo. 
IV. ( ) Exige-se que o compilador acompanhe as decisões sobre localização e 
particularidades de código em estruturas de dados separadas e que os procedimentos de 
macros variem a sequência de código. 
 
Assinale a alternativa que apresenta a sequência CORRETA. 
 
a. F, F, F, V. 
 
b. V, F, V, V. 
 
c. V, V, F, V. 
 
d. V, V, V, V. 
 
e. F, V, V, V. 
 
PERGUNTA 4 
 
Conforme estudado, as características gerais da geração de código permanecem constantes 
para uma ampla variedade de arquiteturas. 
 
Quanto à sequência de operações, avalie as afirmativas a seguir. 
 
I. Apresentam a geração de código vista como computação de um atributo de cadeia 
sintetizado, sendo útil para apresentar com clareza as relações entre as sequências de 
código. 
II. O uso da concatenação de cadeias não provoca uma grande quantidade de cópias de 
cadeias. 
III. Em regra, é muito mais desejável gerar pequenos trechos de código à medida que ocorre 
a geração de código e gravar esses trechos em um arquivo ou, então, inseri-los em uma 
estrutura de dados. 
IV. Embora seja útil ver o código como puramente sintetizado, a geração de código depende 
grandemente dos atributos herdados. 
 
Está correto o que se afirma em: 
 
a. II, apenas. 
 
b. I, II e III, apenas. 
 
c. I e III, apenas. 
 
d. I, III e IV, apenas. 
 
e. I, II e IV, apenas. 
 
PERGUNTA 5 
 
A complexidade da descrição do código intermediário e do código-alvo para esse mecanismo 
é aumentada, de forma mais significativa que para outros mecanismos das linguagens, em 
decorrência de diferentes máquinas-alvo usarem mecanismos consideravelmente distintos 
para as ativações e, também, em razão de as ativações dependerem da organização do 
ambiente de execução. 
 
Com base no apresentado, avalie as afirmações a seguir e relacione adequadamente os 
termos aos seus conceitos. 
 
1. Declaração 
2. Parâmetros 
3. Sequência de ativação 
 
I. Procedimento também conhecido como definição de função. 
II. Estrutura dos procedimentos oriundos das funções. 
III. Código da função ativada. 
 
Assinale a alternativa que correlaciona adequadamente os dois grupos de informação. 
 
a. 1 – III; 2 – II; 3 – I. 
 
b. 1 – II; 2 – I; 3 – III. 
 
c. 1 – I; 2 – III; 3 – II. 
 
d. 1 – II; 2 – III; 3 – I. 
 
e. 1 – I; 2 – II; 3 – III. 
 
PERGUNTA 6 
 
Se o código gerado for visto como um atributo de cadeia de caracteres (em que as instruções 
são separadas por caracteres de mudança de linha), esse código passa a ser um atributo 
sintetizado que pode ser definido com base em uma gramática de atributos e gerado 
diretamente durante a análise sintática ou por um percurso em pós-ordem na árvore sintática. 
 
Observe a gramática a seguir. 
 
exp → id = exp ÷ aexp / aexp → aexp + fator ÷ fator / fator → (exp) ÷ num ÷ id 
 
Agora, assinale a alternativa correta. 
 
a. Essa gramática contém apenas três operações: atribuição (com o símbolo exp), adição (com o 
símbolo +) e fator. 
 
b. Essa gramática não contém operações, apenas expressões. 
 
c. Essa estrutura de dados contém apenas uma operação (com o símbolo *). 
 
d. Essa gramática contém apenas duas operações: atribuição (com o símbolo =) e adição (com o 
símbolo +). 
 
e. Essa gramática contém apenas uma operação: atribuição (com o símbolo =).

Continue navegando