Baixe o app para aproveitar ainda mais
Prévia do material em texto
1. 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. Explicação: A resposta correta é: análise semântica. 2. 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 é: II, VI, V, IV, I e III III, IV, VI, V, I e II II, V, VI, IV, I e III III, V, VI, IV, I e II III, IV, V, VI, I e II Explicação: A resposta correta é: II, VI, V, IV, I e III. ANÁLISE LÉXICA 3. Os Meta-caracteres são caracteres especiais na especificação de Expressões Regulares, que 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 é: \w \W \c \d \C Explicação: A resposta correta é: \w 4. 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 Explicação: A resposta correta é: Id e A ANÁLISE SINTÁTICA 5. 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 III e IV I II e IV II I e III Explicação: Resposta correta: II 6. 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:["+""-"] 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. A = b + C; 10 * 5; d - 10 A = C A := 7; Explicação: Resposta correta: A := 7; ANÁLISE SEMÂNTICA 7. 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 primeira é falsa e a segunda correta A primeira é verdadeira e a segunda falsa As duas são corretas e a segunda justifica a primeira As duas são corretas e a segunda não justifica a primeira As duas afirmativas são falsas Explicação: Resposta correta: As duas são corretas e a segunda justifica a primeira 8. 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: I, II e IV I e III II, III e IV I e II I, II e III Explicação: Resposta correta: I, II e IV GERAÇÃO DE CÓDIGO 9. 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: A primeira é verdadeira e a segunda falsa As duas são corretas e a segunda justifica a primeira 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: Respsota correta: A primeira é verdadeira e a segunda falsa 10. 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: A primeira é falsa e a segunda correta As duas são corretas e a segunda não justifica a primeira A primeira é verdadeira e a segunda falsa As duas afirmativas são falsas As duas são corretas e a segunda justifica a primeira Explicação: Resposta correta: A primeira é verdadeira e a segunda falsa
Compartilhar