Buscar

Semana 4 - Linguagens e Compilad

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

Fazer teste: Semana 4 - Atividade Avaliativa
Linguagens e Compiladores - EEL101 - Turma 002 Atividades
Fazer teste: Semana 4 - Atividade Avaliativa 
Informações do teste
Descrição
Instruções
Várias
tentativas
Este teste permite 3 tentativas. Esta é a tentativa número 1.
Forçar
conclusão
Este teste pode ser salvo e retomado posteriormente.
Suas respostas foram salvas automaticamente.
1. Para responder a esta atividade, selecione a(s) alternativa(s) que você
considerar correta(s);
2. Após selecionar a resposta correta em todas as questões, vá até o fim da
página e pressione “Enviar teste”.
3. A cada tentativa, você receberá um conjunto diferente de questões.
Olá, estudante!
Pronto! Sua atividade já está registrada no AVA.
a.
b.
c.
d.
e.
PERGUNTA 1
A expressão “x = 4/2;” sempre é válida. Porém, a expressão x=a/b
pode ser inválida. Por que isso acontece?
os valores armazenados na tabela de símbolos podem
alterar o fluxo de execução de um programa.
x=a/b gera um erro de sintaxe.
a expressão x=a/b gera um erro que é detectável pelo
compilador.
a expressão a/b deve ser definida como um token único.
um programa sempre executa seguindo inteiramente sua
árvore sintática.
1 pontos   Salva
PERGUNTA 2
Das alternativas abaixo, aponte qual contém uma linha que
t i l t ã d d t t d
1 pontos   Salva
? Estado de Conclusão da Pergunta:
 Salvar todas as respostas Salvar e Enviar
https://ava.univesp.br/webapps/blackboard/execute/courseMain?course_id=_4742_1
https://ava.univesp.br/webapps/blackboard/content/listContent.jsp?course_id=_4742_1&content_id=_683831_1&mode=reset
a.
b.
c.
d.
e.
potencialmente gera um erro que não pode ser detectado em
tempo de compilação. 
x = “teste” + 90.3
x = log(y)
x = ((10 + 60.3)
x = 10,.,3
x = y + a b
a.
b.
c.
d.
e.
PERGUNTA 3
Qual das partes de um compilador aponta erro quando executamos
o programa (em C): 
 
int 5variavel = 50+60+70+90+40; 
o analisador léxico, pois não é possível somar vários inteiros
em uma mesma expressão.
o analisador sintático, pois a expressão à direita não é uma
expressão válida.
o analisador léxico, pois não é permitido declarar símbolos
que começam com um número.
o analisador sintático, pois a atribuição não pode ser
combinada com a declaração de variáveis.
o analisador sintático, pois o compilador não permite atribuir
tipos float a tipos int.
1 pontos   Salva
a.
b.
c.
d.
e.
PERGUNTA 4
Um atributo é: 
uma qualidade positiva de um indivíduo.
uma Máquina de Turing.
um algoritmo de propósito geral.
uma pessoa que se voluntaria para participar de um desafio.
uma propriedade de um elemento numa linguagem de
programação.
1 pontos   Salva
a.
b.
c.
PERGUNTA 5
Uma tabela de símbolos é implementada, em geral, usando uma
tabela hash. Essa estrutura de dados é usada porque:
permite remoção em O(1).
criptografa automaticamente as suas entradas.
permite inserção e busca em O(1).
1 pontos   Salva
 Estado de Conclusão da Pergunta:
 Salvar todas as respostas Salvar e Enviar
d.
e.
ocupa menos memória que outras soluções.
permite guardar grandes quantidades de dados, distribuídos
por várias máquinas.
a.
b.
c.
d.
e.
PERGUNTA 6
Escolha a regra gramatical que permite converter uma string em
notação infixa para notação pós-fixa:
X → Y ‘+’ Z { print(Z.val + Y.val) print(‘+’) }
X → Y Z ‘+’{ print(Z.val) print(Y.val) print(‘+’) }
X → Y Z { X.val = Y.val + Z.val}
X → ‘+’ Y Z { print(Z.val) print(Y.val) print(‘+’) }
X → Y ‘+’ Z { print(Z.val) print(Y.val) print(‘+’) }
1 pontos   Salva
a.
b.
c.
d.
e.
PERGUNTA 7
O Yacc usa o seguinte esquema de tradução: 
S-atribuído, pois gera analisadores sintáticos descendentes.
não-atribuído, pois gera analisadores léxicos.
L-atribuído, pois gera analisadores sintáticos descendentes.
S-atribuído, pois gera analisadores sintáticos ascendentes.
L-atribuído, pois gera analisadores sintáticos ascendentes.
1 pontos   Salva
a.
b.
c.
d.
e.
PERGUNTA 8
A gramática de atributos serve para: 
identificar tokens na string de entrada.
calcular atributos a partir de outros atributos.
identificar erros de sintaxe na string de entrada.
criar novos atributos.
reordenar a árvore sintática.
1 pontos   Salva
PERGUNTA 9
Em uma calculadora, temos dois tipos de tokens: inteiros (INT),
cujo atributo val é o inteiro em questão, e operador (OP), cujo
atributo op diz qual é o operador em questão. 
1 pontos   Salva
 Estado de Conclusão da Pergunta:
 Salvar todas as respostas Salvar e Enviar
a.
b.
c.
d.
e.
 
Definimos as regras: 
X → INT { X.val = INT.val } 
Y → INT { Y.val = INT.val } 
Z → INT { Z.val = INT.val } 
X → Y OP Z { if (OP.op==’+’) X.val = Y.val - Z.val } 
 
Qual deve ser o atributo val encontrado quando executarmos: 
5+3 
0
Nenhum, o programa gera erro de sintaxe
2
8
-2
a. O resultado é 10, mas não é o resultado mostrado, porque,
ao se imprimir, o valor do atributo não é o calculado, mas o
anterior.
b. Não se chega a um resultado porque uma operação que
surge é + *, sem operando.
c. O resultado é 12, o que mostra a presença de algum erro
nas ações semânticas.
d. O resultado é 10, e esse é o resultado mostrado.
e. O resultado é 6, considerando divisão inteira.
PERGUNTA 10
Usando o analisador redutivo (bottom-up) estendido com ações
semânticas a seguir (e duas pilhas, uma de análise e outra de
atributos), determine o resultado da operação quando a entrada é
“(4+3)+6/2” e anote a sequência de análise com as duas pilhas:
L → E = {imprime(Atributo[topo])} 
E → E1 + T {Atributo[topo] := Atributo[topo-2] + Atributo[topo]} 
E → T 
T → T1 / F {Atributo[topo] := Atributo[topo-2] / Atributo[topo]} 
T → F 
T → ( E ) {Atributo[topo] := Atributo[topo-1]} 
F → num {Atributo[topo] := num.lexval}
Pode-se afirmar que:
1 pontos   Salvar resposta
 Estado de Conclusão da Pergunta:
 Salvar todas as respostas Salvar e Enviar

Continue navegando