Prévia do material em texto
Fazer teste: Semana 5 - Atividade AvaliativaLinguagens e Compiladores - EEL101 - Turma 001 Atividades Fazer teste: Semana 5 - 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 Uma vez definido o padrão para um código intermediário, podemos dizer que: existe um único padrão para códigos intermediários. casos que geram ambiguidades entre códigos intermediários são tratados como erros. existe mais de um código intermediário que corresponde a cada árvore sintática. códigos intermediários dependem da arquitetura que será usada. existe um único código intermediário correspondente a cada árvore sintática. 1 pontos Salva a. b. c. d. e. PERGUNTA 2 Em um compilador, o padrão escolhido para a linguagem intermediária deve, na hierarquia de complexidades de linguagem, ser, no mínimo: turing-completa. regular. dependente de contexto. natural. livre de contexto. 1 pontos Salva a. b. c. d. e. PERGUNTA 3 Que tipos de erros são encontrados na etapa de geração de código intermediário? Erros turing-completos, que não podem ser expressos como linguagens regulares ou livres de contexto. Erros ligados a arquiteturas específicas. Erros na etapa de predição de código. Nenhum, pois essa etapa executa após a montagem da árvore sintática e da validação da tabela de símbolos. Erros que impedem otimizações. 1 pontos Salva a. b. c. d. e. PERGUNTA 4 No processo de compilação, o código intermediário é: código-fonte gerado como rascunho. um código gerado pelo compilador que será posteriormente traduzido para arquiteturas específicas. um processo auxiliar da análise sintática. a porção do código-fonte que fica entre o cabeçalho da função e sua instrução de retorno. um algoritmo de propósito geral. 1 pontos Salva ? Estado de Conclusão da Pergunta: https://ava.univesp.br/webapps/blackboard/execute/courseMain?course_id=_4741_1 https://ava.univesp.br/webapps/blackboard/content/listContent.jsp?course_id=_4741_1&content_id=_683699_1&mode=reset a. b. c. d. e. PERGUNTA 5 Se temos N linguagens de programação e M arquiteturas, quantos compiladores precisaríamos construir se fizéssemos a tradução direta, sem usar o código intermediário? N M*N 2*M+N M M+N 1 pontos Salva a. b. c. d. e. PERGUNTA 6 O código linearizado: t1 = b + d t2 = c + a t3 = t1 * t2 equivale a qual das expressões abaixo? b+d*c+a (a*b)+(c*d) b*(d+c)*a (b+d)*(c+a) a+b+c+d 1 pontos Salva a. b. c. d. e. PERGUNTA 7 A linearização de código serve para: tornar o código-fonte linear, de forma que a soma de suas entradas corresponda à soma de suas saídas. remover as quebras de linha de códigos-fonte. economizar memória. tornar todo código executável em tempo linear O(n). evitar a representação gráfica (em árvore) e permitir gerar código intermediário. 1 pontos Salva a. b. c. d. e. PERGUNTA 8 Ao linearizarmos a expressão: a + b * (c + d) encontramos qual código? t1 = a + b t2 = b * c t3 = b + t2 t1 = a + c + d t2 = b * t1 t1 = c + d t2 = b * t1 t3 = t2 + t1 t1 = a + b + c * d t1 = a t1 = t1 + b t1 = t1 * c t1 = t1 + d 1 pontos Salva a. b. c. d. e. PERGUNTA 9 Identifique a alternativa que contém apenas instruções de linguagens de programação que só podem ser implementadas se usarmos o goto condicional: chamada de função. (3+5)*7. a<b. if, chamada de função. if, for, while. 1 pontos Salva Estado de Conclusão da Pergunta: Clique em Salvar e Enviar para salvar e enviar. Clique em Salvar todas as respostas para salvar todas as respostas. a. b. c. d. e. PERGUNTA 10 O código de três endereços é usado para: reduzir operações longas a operações elementares, mais próximas das instruções típicas de linguagens de máquina. aumentar o tempo necessário para compilação. realizar a atribuição de valores a variáveis. identificar variáveis por seu tipo. criar novos operadores. 1 pontos Salva Salvar todas as respostas Salvar e Enviar Estado de Conclusão da Pergunta: