Baixe o app para aproveitar ainda mais
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
Compartilhar