Baixe o app para aproveitar ainda mais
Prévia do material em texto
Unidade I Revisar envio do teste: Questionário Unidade I (2016/2)H Revisar envio do teste: Questionário Unidade I (2016/2) Usuário VINICIUS LUIZ DA SILVA Curso COMP COMP COMPILADORES E COMPUTABILIDADE Teste Questionário Unidade I (2016/2) Iniciado 13/09/16 20:53 Enviado 13/09/16 20:53 Status Completada Resultado da tentativa 4,5 em 5 pontos Tempo decorrido 38 minutos Instruções ATENÇÃO: esta avaliação segue as seguintes configurações: possui número de tentativas limitadas a 5 (cinco); valida a sua frequência e nota na disciplina em questão; não apresenta as justificativas corretas, pois tratase de um avaliativo; não soma pontos de “tentativa em andamento” (tentativas iniciadas e não concluídas/enviadas) – porém, uma vez acessada, é considerada como uma de suas 5 (cinco) tentativas permitidas e precisa ser editada e enviada para ser devidamente considerada; reduz sua pontuação a cada tentativa conforme exposto abaixo – o cálculo final será executado e apresentado em sua “Secretaria Virtual”: tentativa 1 – nota sem desconto; tentativa 2 – serão lançados 90% da nota, ou seja, a nota diminui 10%; tentativa 3 – serão lançados 80% da nota, ou seja, a nota diminui 20%; tentativa 4 – serão lançados 70% da nota, ou seja, a nota diminui 30%; tentativa 5 – serão lançados 60% da nota, ou seja, a nota diminui 40%. possui um período de envio (previsto em Calendário Acadêmico) e permite acesso após a data limite, mas não considera os envios após essa data; a NÃO realização prevê nota 0 (zero). Resultados exibidos Respostas enviadas, Perguntas respondidas incorretamente Pergunta 1 Durante o processo de verificação da estrutura sintática de um programa, o analisador simula o processo de construção da árvore de derivação para o programa que está sendo compilado. Usualmente esse processo é realizado adotandose uma dentre duas abordagens possíveis: a topdown, em que partese do símbolo inicial da gramática e tentase alcançar os elementos que compõe o programa; e a bottonup, que segue o princípio contrário, partindo do código e realizado reduções na sentença até que se alcance o símbolo inicial que caracterize o elemento raiz da árvore. A respeito destas estratégias assinale a alternativa correta. Unip Interativa 0,5 em 0,5 pontos VINICIUS SILVA http://www.sepi.unip.br/ https://ava.ead.unip.br/webapps/blackboard/execute/courseMain?course_id=_104144_1 https://ava.ead.unip.br/webapps/blackboard/content/listContent.jsp?course_id=_104144_1&content_id=_1092009_1&mode=reset https://ava.ead.unip.br/webapps/portal/execute/tabs/tabAction?tab_tab_group_id=_26_1 https://ava.ead.unip.br/webapps/login/?action=logout Resposta Selecionada: a. Os métodos descendentes são usualmente mais convenientes em casos de implementação manual, enquanto os métodos ascendentes (bottonup) são considerados mais favoráveis para construtores automáticos de analisadores. Pergunta 2 Uma das tarefas primordiais ao processo de compilação é que durante a verificação da sintática do programa o compilador reporte ao programador todos os erros detectados para que ele os corrija. Neste contexto, a adoção de uma estratégia que permita o tratamento e eventual recuperação diante de erros é parte das decisões que envolvem a construção dos analisadores. Assinale a alternativa que não descreve de maneira apropriada essas estratégias. Resposta Selecionada: a. O Modo Pânico é aquele em que o compilador exibe as mensagens de erro e interrompe qualquer outra atividade do sistema operacional, evitando problemas de gravação dos dados no disco e a corrupção dos dados armazenados. Pergunta 3 Um analisador sintático LL(1) somente pode ser construído para uma classe restrita de gramáticas, que também recebem este mesmo nome. Uma de suas características é que suas produções não apresentem prefixos comuns para cadeias distintas derivadas a partir de um mesmo nãoterminal. Ou seja, se duas produções que começam com o mesmo símbolo ou conjunto de símbolos (prefixo), por exemplo, como nas regras A→αβ e A→αδ e sendo First(α) ≠ ∅, implicará numa interseção entre os conjuntos First(αβ) e First(αδ) e o analisador não será capaz de decidir qual regra escolher utilizando um único símbolo da entrada. Usualmente o problema pode ser resolvido substituindo as produções da gramática que causam o problema por outras que acomodem essa restrição, mantendo a equivalência entre elas. Supondo a produção S → if E then S else S fi | if E then S fi | K e considerando ε como a sentença vazia, quais dentre as alternativas a seguir representa uma substituição válida para resolver o problema apresentado e obter uma gramática equivalente que seja LL(1)?. Resposta Selecionada: a. S → if E then S R fi | K R → else S | ε Pergunta 4 Resposta Selecionada: d. A aplicação da regra 8 deve ser feita antes da regra 7, segundo a interpretação que temos da tabela. Esse fato se comprova ao observarmos que o símbolo “(“ poderia ocorrer imediatamente após um “id” segundo o que determina as produções da gramática. 0,5 em 0,5 pontos 0,5 em 0,5 pontos 0,5 em 0,5 pontos Pergunta 5 O processo de programar um computador para realizar uma determinada tarefa, quando analisado em relação as atividades que são necessárias desde a codificação do algoritmo até a execução propriamente dita do programa, pode ser visto como um processo complexo e que envolve vários elementos, cada qual com propósito bastante específico. Neste contexto assinale a alternativa que descreve o propósito e a principal tarefa realizada pelos compiladores. Resposta Selecionada: b. Possibilitar a programação de computadores utilizando linguagens de alto nível (que permitem descrever as ideias em termos mais abstratos e mais independentes da arquitetura da máquina), pois são responsáveis pela tradução do algoritmo em seu correspondente em um linguagem de baixo nível. Pergunta 6 Supondo a gramática a seguir e a sentença (a,(a),(a,a)), quais seriam os movimentos realizados por um reconhecedor ascendente para esta cadeia? G = ({L,S}, {“(“, ”)”, ”a”, ”,”}, L, P ) P: L → (S) S → I,S | I I → a | L Resposta Selecionada: b. (a,(a),(a,a)) ⇒ (I,(a),(a,a)) ⇒ (I,(I),(a,a)) ⇒ (I,(S),(a,a)) ⇒ (I,L,(a,a)) ⇒ (I,I, (a,a)) ⇒ (I,I,(I,a)) ⇒(I,I,(S,a)) ⇒ Erro, cadeia inválida. Pergunta 7 Os diferentes elementos básicos que compõe uma linguagem, tais como as palavras reservadas, identificadores, operadores e quaisquer outros lexemas estabelecidos por ela, também possuem uma estrutura sintática e podem ser descritos formalmente através de expressões regulares. Entretanto a tarefa de reconhecimento dos lexemas é realizada pelo Analisador Léxico, acontecendo de maneira separada da Análise Sintática do código. Assim, um analisador léxico é antes de mais nada um elemento reconhecedor destas estruturas e pode ser definido como um autômato finito, dada a natureza regular dos elementos da linguagem. Julgue cada uma das afirmativas a seguir e assinale a alternativa correta. i) As gramáticas regulares não permitem a descrição de estruturas aninhadas e portanto não são capazes de descrever simultaneamente os lexemas e também as demais estruturas típicas nas linguagem de programação, tais como parênteses balanceados e comandos aninhados. ii) A separação das etapas permite utilizar gramaticas regulares, que são mais simples e mais eficientes, para a descrição dos lexemas tornado a implementação do reconhecedor mais fácil. iii) O analisador sintático ficaria muito mais complexo, pois estaria a todo momento preocupado em prever a ocorrência de símbolos irrelevantes, tais como espaços em branco, que teriam sido eliminados pela análise léxica. Resposta Selecionada: e. Todos itens são verdadeiros e os motivos apresentados justificam a separação dos analisadores. Pergunta 8 Um processo algorítmico tem o objetivo de instruir o executor quanto as ações que deve realizar e a sua sequência. Para que isso ocorra é necessário que as instruções sejam dadas num formato compreensível àquele que as realizará. A programaçãode computadores é feita descrevendo o algoritmo em instruções de uma linguagem de programação e que, quando ditas de alto nível, apresentam características mais próximas a estrutura das linguagens humanas do que a das máquinas. Analise as alternativas a seguir e assinale a que julgar incorreta. 0,5 em 0,5 pontos 0 em 0,5 pontos 0,5 em 0,5 pontos 0,5 em 0,5 pontos Terçafeira, 13 de Setembro de 2016 21h55min02s BRT Resposta Selecionada: d. Os conhecimentos relacionados a construção de compiladores encerramse estritamente nesta atividade, oferecendo pouco ou mesmo nenhuma possibilidade de aplicação em outras áreas que não seja a tradução para linguagem de máquina. Pergunta 9 Os métodos ligados a análise sintática se agrupam em ascendentes e descendentes, de acordo com a forma como derivam a estrutura sintática da sentença do programa. Assinale a alternativa incorreta a respeito dos analisadores sintáticos. Resposta Selecionada: d. Dentre a categoria de analisadores descendentes podemos citar os parses Descendentes Recursivos, de Cocke‐Younger‐Kasami e os analisadores do tipo LR(k). Pergunta 10 No modelo de Análise e Síntese o processo é dividido em duas grandes etapas. Na primeira, são realizadas todas as tarefas pertinentes a análise e compreensão do código fonte, enquanto na segunda, as atividades de otimização e a geração do código propriamente dito. Cada uma destas grandes etapas podem ser decompostas em fases, de propósito específico e cujo resultado de seu processamento servirá como dado de entrada para a próxima fase. Analise as alternativas a seguir e assinale aquela cuja atividade não corresponde a nenhuma das subfases deste modelo. Resposta Selecionada: e. A fase de linkedição, ou ligação, é responsável por criar o arquivo executável combinando todos os arquivos objetos em um único módulo de carga. ← OK 0,5 em 0,5 pontos 0,5 em 0,5 pontos javascript:launch('/webapps/gradebook/do/student/viewAttempts?course_id=_104144_1&method=list&nolaunch_after_review=true');
Compartilhar