Logo Passei Direto
Buscar

Passos da Compilação e Análise de Programas

User badge image
Ildon Dantas

em

Ferramentas de estudo

Questões resolvidas

Um compilador está verificando se uma variável foi declarada somente uma vez, se foi declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se os tipos de dados em uma expressão aritmética são compatíveis. Essas verificações são realizadas na fase de:
análise léxica.
otimização do código
análise sintática.
análise semântica.
geração do código.

Considere a seguinte especificação de tokens com sua descrição informal: SE fosse submetida ao Analisador a seguinte expressão: Soma = 0; Soma = A + B;
O sétimo token reconhecido e seu lexema seriam respectivamente:
TermCom e ;
NumInt e 0
OpArit e +
Id e A
Id e Soma

Por melhor que seja a fórmula de hashing adotada na implementação de uma tabela de símbolos usando uma tabela hash, as colisões sempre irão ocorrer.
Quanto a estes aspectos analise as afirmativas abaixo:
I. no hash aberto os símbolos que colidem são encadeados em uma lista apontada pelo slot que a fórmula calculou.
II. no endereçamento aberto é realizado um rehashing para determinar o novo slot para o símbolo que causou a colisão.
III. o hash de balde utiliza duas fórmulas de hashing para tratar a colisão.
IV. Para minimizar o espaço de armazenamento pode ser utilizada uma pilha para armazenar os símbolos que colidiram no hash aberto.
I, II e III
I, II e IV
II, III e IV
I e III
I e II

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.
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.
As duas são corretas e a segunda justifica a primeira
A primeira é verdadeira e a segunda falsa
As duas são corretas e a segunda não justifica a primeira
A primeira é falsa e a segunda correta
As duas afirmativas são falsas

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.
Com base nas afirmativas acima podemos concluir que:
A primeira é verdadeira e a segunda falsa.
As duas são corretas e a segunda não justifica a primeira
As duas são corretas e a segunda justifica a primeira
As duas afirmativas são falsas
A primeira é falsa e a segunda correta
A primeira é verdadeira e a segunda falsa

Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Um compilador está verificando se uma variável foi declarada somente uma vez, se foi declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se os tipos de dados em uma expressão aritmética são compatíveis. Essas verificações são realizadas na fase de:
análise léxica.
otimização do código
análise sintática.
análise semântica.
geração do código.

Considere a seguinte especificação de tokens com sua descrição informal: SE fosse submetida ao Analisador a seguinte expressão: Soma = 0; Soma = A + B;
O sétimo token reconhecido e seu lexema seriam respectivamente:
TermCom e ;
NumInt e 0
OpArit e +
Id e A
Id e Soma

Por melhor que seja a fórmula de hashing adotada na implementação de uma tabela de símbolos usando uma tabela hash, as colisões sempre irão ocorrer.
Quanto a estes aspectos analise as afirmativas abaixo:
I. no hash aberto os símbolos que colidem são encadeados em uma lista apontada pelo slot que a fórmula calculou.
II. no endereçamento aberto é realizado um rehashing para determinar o novo slot para o símbolo que causou a colisão.
III. o hash de balde utiliza duas fórmulas de hashing para tratar a colisão.
IV. Para minimizar o espaço de armazenamento pode ser utilizada uma pilha para armazenar os símbolos que colidiram no hash aberto.
I, II e III
I, II e IV
II, III e IV
I e III
I e II

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.
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.
As duas são corretas e a segunda justifica a primeira
A primeira é verdadeira e a segunda falsa
As duas são corretas e a segunda não justifica a primeira
A primeira é falsa e a segunda correta
As duas afirmativas são falsas

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.
Com base nas afirmativas acima podemos concluir que:
A primeira é verdadeira e a segunda falsa.
As duas são corretas e a segunda não justifica a primeira
As duas são corretas e a segunda justifica a primeira
As duas afirmativas são falsas
A primeira é falsa e a segunda correta
A primeira é verdadeira e a segunda falsa

Prévia do material em texto

29/03/2021 Estácio: Alunos
https://simulado.estacio.br/alunos/ 1/7
 
Considere os seguintes passos da compilação: 
I. Otimização 
II. Análise Léxica 
III. Geração de Código 
IV. Geração de Código Intermediário 
V. Análise Semântica 
VI. Análise Sintática 
A ordem correta dos passos durante a compilação é: 
COMPILADORES 
Lupa Calc.
 
 
CCT0838_201908040459_ESM 
Aluno: JOSEILDON DA SILVA DANTAS Matr.: 201908040459
Disc.: COMPILADORES 2021.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.
O COMPILADOR
 
1.
II, V, VI, IV, I e III 
III, IV, VI, V, I e II
III, V, VI, IV, I e II
III, IV, V, VI, I e II 
II, VI, V, IV, I e III 
 
 
Explicação:
A resposta correta é: II, VI, V, IV, I e III.
javascript:voltar();
javascript:voltar();
javascript:diminui();
javascript:aumenta();
javascript:calculadora_on();
29/03/2021 Estácio: Alunos
https://simulado.estacio.br/alunos/ 2/7
Um compilador está verificando se uma variável foi declarada somente uma vez, se foi
declarada antes do seu primeiro uso, se foi declarada e nunca foi usada e se os tipos de
dados em uma expressão aritmética são compatíveis. Essas verificações são realizadas na
fase de:
Considere a seguinte especificação de tokens com sua descrição informal: 
SE fosse submetida ao Analisador a seguinte expressão: 
Soma = 0; 
Soma = A + B; 
O sétimo token reconhecido e seu lexema seriam respectivamente: 
Os Meta-caracteres são caracteres especiais na especificação de Expressões Regulares, que
 
2.
análise semântica.
análise sintática.
otimização do código
análise léxica.
geração do código.
 
 
Explicação:
A resposta correta é: análise semântica.
ANÁLISE LÉXICA
 
3.
Id e A 
NumInt e 0 
TermCom e ; 
Id e Soma 
OpArit e + 
 
 
Explicação:
A resposta correta é: Id e A 
 
4.
29/03/2021 Estácio: Alunos
https://simulado.estacio.br/alunos/ 3/7
aumentam muito sua expressividade. Eles podem ser quantificadores, definidores de
classes de caracteres, definidores de lista etc.... 
O Meta-caracter que corresponde a seguinte classe [A-Za-z0-9] é o 
A ordem correta dos passos durante a compilação é: 
Enade 2011
Considere a gramática a seguir, em que S, A e B são símbolos não terminais, 0 e 1 são terminais e Ɛ é a cadeia vazia.
A respeito dessa gramática, analise as afirmações a seguir.
I. Nas cadeias geradas por essa gramática, o último símbolo é 1.
II. O número de zeros consecutivos nas cadeias geradas pela gramática é, no máximo, dois.
III. O número de uns em cada cadeia gerada pela gramática é maior que o número de zeros.
IV. Nas cadeias geradas por essa gramática, todos os uns estão à esquerda de todos os zeros.
É correto apenas o que se afirma em
Ao realizarmos a análise sintática, podem ser detectados erros que não foram vistos durante a análise léxica.
Considerando a seguinte gramática
L: [A-Z]
D: [0-9]
Op:["+""-"]
\w
\d
\C
\W
\c 
 
 
Explicação:
A resposta correta é: \w
ANÁLISE SINTÁTICA
 
5.
II
I
II e IV
I e III
III e IV
 
 
Explicação:
Resposta correta: II
 
6.
29/03/2021 Estácio: Alunos
https://simulado.estacio.br/alunos/ 4/7
At:["="]
Id:{L} ({L}|{D})*
Int:{D}+
Oper:{Op}
Atrib:{At}
Fc : ;
::= Id Atrib ;
::= | Id | Int;
::= Oper;
Qual das opções abaixo possui apenas erro sintático.
Verificação de tipos é uma atividade extremamente importante na análise semântica já que determinados erros somente são
percebidos nesta atividade, pois passam despercebidos nas Análises Léxicas e Sintáticas. 
Considere o seguinte trecho de programa :
inteiro a,b,c; 
{ 
.... 
c:= a + b; 
.... 
} 
 
Quanto a expressão c:= a + b; podemos afirmar que:
 
O seu tipo será inteiro 
porque 
todos os operandos são do tipo inteiro 
 
Com base nas afirmativas podemos concluir que:
A = b + C;
d - 10
10 * 5;
A := 7;
A = C
 
 
Explicação:
Resposta correta: A := 7;
ANÁLISE SEMÂNTICA
 
7.
A primeira é falsa e a segunda correta
As duas são corretas e a segunda não justifica a primeira
As duas afirmativas são falsas
A primeira é verdadeira e a segunda falsa
As duas são corretas e a segunda justifica a primeira
 
29/03/2021 Estácio: Alunos
https://simulado.estacio.br/alunos/ 5/7
Por melhor que seja a fórmula de hashing adotada na implementação de uma tabela de símbolos usando uma tabela hash, as
colisões sempre irão ocorrer. 
Quando estas ocorrem se torna necessário fazer o seu tratamento. 
Este tratamento pode ser realizado de várias formas e uma preocupação constante deve ser o de minimizar o tempo de
resposta e poupar o espaço de armazenamento. 
Quanto a estes aspectos analise as afirmativas abaixo: 
I. no hash aberto os símbolos que colidem são encadeados em uma lista apontada pelo slot que a fórmula calculou 
II. no endereçamento aberto é realizado um rehashing para determinar o novo slot para o símbolo que causou a colisão 
III. o hash de balde utiliza duas fórmulas de hashing para tratar a colisão 
IV. Para minimizar o espaço de armazenamento pode ser utilizada uma pilha para armazenar os símbolos que colidiram
no hash aberto 
É correto o que se afirma apenas em:
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:
 
Explicação:
Resposta correta: As duas são corretas e a segunda justifica a primeira
 
8.
I, II e III
I, II e IV
II, III e IV
I e III
I e II
 
 
Explicação:
Resposta correta: I, II e IV
GERAÇÃO DE CÓDIGO
 
9.
As duas são corretas e a segunda justifica a primeira
A primeira é verdadeira e a segunda falsa
As duas são corretas e a segunda não justifica a primeira
A primeira é falsa e a segunda correta
As duas afirmativas são falsas
 
 
Explicação:
Resposta correta: A primeira é verdadeira e a segunda falsa
29/03/2021 Estácio: Alunos
https://simulado.estacio.br/alunos/ 6/7
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:
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:
 
 
10.
As duas são corretas e a segunda não justifica a primeira
As duas são corretas e a segunda justifica a primeira
As duas afirmativas são falsas
A primeira é falsa e a segunda correta
A primeira é verdadeira e a segunda falsa
 
 
Explicação:
Respsota correta: A primeira é verdadeira e a segunda falsa
29/03/2021 Estácio: Alunos
https://simulado.estacio.br/alunos/ 7/7
 Não Respondida Não Gravada Gravada
Exercício inciado em 24/03/2021 11:31:38.

Mais conteúdos dessa disciplina