Questões Sortidas do ENADE de Computação #01

Por
| 

Nesta postagem, apresento a resolução de questões diversas do ENADE dos cursos de computação dos anos 2005 a 2014.

ENADE de computação

Para mais questões sobre o exame acesse a página ENADE.

ENADE 2005

As questões a seguir são do ENADE 2005 de computação.

Questão 21

No modo recursivo de representação, a descrição de um conceito faz referência ao próprio conceito. Julgue os itens abaixo, com relação à recursividade como paradigma de programação.

  • I) São elementos fundamentais de uma definição recursiva: o caso-base (base da recursão) e a reaplicação da definição.
  • II) O uso da recursão não é possível em linguagens com estruturas para orientação a objetos.
  • III) As linguagens de programação funcionais têm, na recursão, seu principal elemento de repetição.
  • IV) No que diz respeito ao poder computacional, as estruturas iterativas e recursivas são equivalentes.
  • V) Estruturas iterativas e recursivas não podem ser misturadas em um mesmo programa.

Estão certos apenas os itens

  • (A) I e IV.
  • (B) II e III.
  • (C) I, III e IV.
  • (D) I, III e V.
  • (E) II, IV e V.
Resolução

A afirmativa II é claramente falsa. Linguagens como C++, C# e Java são orientadas a objetos e suportam recursão, por exemplo.

A afirmativa V também é falsa. Ambas as estruturas podem ser utilizadas em conjunto. As demais afirmativas são verdadeiras. Logo, a alternativa correta é a C.

Questão 36

João, ao tentar consertar o módulo eletrônico de um carrinho de brinquedos, levantou as características de um pequeno circuito digital incluso no módulo. Verificou que o circuito tinha dois bits de entrada, x0 e x1, e um bit de saída. Os bits x0 e x1 eram utilizados para representar valores de inteiros de 0 a 3 (x0, o bit menos significativo e x1, o bit mais significativo). Após testes, João verificou que a saída do circuito é 0 para todos os valores de entrada, exceto para o valor 2.

Qual das expressões a seguir representa adequadamente o circuito analisado por João?

  • (A) x0 and (not x1)
  • (B) (not x0) or (not x1)
  • (C) (not x0) and x1
  • (D) x0 and x1
  • (E) x0 or (not x1)
Resolução

O circuito em questão pode ser representado pela tabela da verdade a seguir

x1 x0 Saída
0 0 0 0
1 0 1 0
2 1 0 1
3 1 1 0

A única expressão booleana que satisfaz a saída é $S = \overline{x_0}.x_1$, que também pode ser representada como S = (not x0) and x1. Portanto, a alternativa correta é a C.

ENADE 2008

A questão abaixo é do ENADE 2008 de computação. A questão é sobre circuitos digitais.

Questão 38

Circuito da questão 38 do ENADE 2008 de computação
Clique aqui para ampliar

No circuito acima, que possui cinco entradas - A, B, C, D e E - e uma saída f(A, B, C, D, E), qual opção apresenta uma expressão lógica equivalente à função f(A, B, C, D, E)?

  • (A) A.B + C.D + D.E
  • (B) (A + B).(C + D) + D.E
  • (C) A.B + C.D + D + E
  • (D) A.B + C.D + D + E
  • (E) A.B + C.D + D.E
Resolução

É conveniente analisar a saída de cada porta lógica e combiná-las uma a uma:

Circuito da questão 38 do ENADE 2008 de computação
Clique aqui para ampliar

Para a porta 1, temos:

Circuito da questão 38 do ENADE 2008 de computação
Clique aqui para ampliar

Porta 2:

Circuito da questão 38 do ENADE 2008 de computação
Clique aqui para ampliar

Porta 3:

Circuito da questão 38 do ENADE 2008 de computação
Clique aqui para ampliar

Porta 4:

Circuito da questão 38 do ENADE 2008 de computação
Clique aqui para ampliar

Os parênteses são apenas para dar ênfase. Combinando a saída da porta 3 com a saída da porta 4, obtém-se a saída do circuito completo:

Circuito da questão 38 do ENADE 2008 de computação
Clique aqui para ampliar

Agora, basta simplificar a expressão utilizando o teorema de De Morgan:

$$\begin{align*}S &= \overline{(\overline{C.D}).(\overline{A.B})}+(\overline{D+E})\\&=(\overline{\overline{C.D}})+(\overline{\overline{A.B}})+\overline{D}.\overline{E}\\&=C.D+A.B+\overline{D}.\overline{E}\\&=A.B+C.D+\overline{D}.\overline{E}\end{align*}$$

Portanto, a expressão final é

f(A, B, C, D, E) = A.B + C.D + D.E.

Ou seja, a alternativa correta é a E.

ENADE 2011

As questões a seguir são do ENADE 2011 de computação.

Questão 19

Uma equipe está realizando testes com base nos códigos-fonte de um sistema. Os testes envolvem a verificação de diversos componentes individualmente, bem como das interfaces entre os componentes.

No contexto apresentado, essa equipe está realizando testes em nível de

  • (A) unidade.
  • (B) aceitação.
  • (C) sistema e aceitação.
  • (D) integração e sistema.
  • (E) unidade e integração.
Resolução

A questão em si já dá a resposta. Enquanto o teste de componentes individuais corresponde ao nível de unidade, o teste das interfaces entre os componentes corresponde ao nível de integração. Ou seja, a alternativa E é a correta.

Questão 30

Suponha que se queira pesquisar a chave 287 em uma árvore binária de pesquisa com chaves entre 1 e 1000.Durante uma pesquisa como essa, uma sequência de chaves é examinada. Cada sequência abaixo é uma suposta sequência de chaves examinadas em uma busca da chave 287.

  • I.   7, 342, 199, 201, 310, 258, 287
  • II.  110, 132, 133, 156, 289, 288, 287
  • III. 252, 266, 271, 294, 295, 289, 287
  • IV.  715, 112, 530, 249, 406, 234, 287

É válido apenas o que se apresenta em

  • (A) I.
  • (B) III.
  • (C) I e II.
  • (D) II e IV.
  • (E) III e IV.
Resolução

A sequência III está errada, pois todas as chaves depois da chave 294 deveriam ser maiores que ela. Após 294, o algoritmo de pesquisa visita o nó da chave 295, isto é, o filho direito. Nesse caso, todos os nós descendentes de 295 devem ser maiores que seu pai, ou seja, maiores de 294.

Questão 30 do ENADE 2011 de Computação

A sequência IV também está errada, pois todas as chaves depois da chave 249 deveriam ser maiores que ela, mas 234 é menor, o que viola as propriedades da árvore binária de pesquisa.

As demais sequências estão corretas, logo a alternativa C é a correta.

ENADE 2014

As questões a seguir são do ENADE 2014. Todas são da prova de Ciência da Computação.

Questão 13

A figura a seguir apresenta uma árvore binária de pesquisa, que mantém a seguinte propriedade fundamental: o valor associado à raiz é sempre menor do que o valor de todos os nós da subárvore à direita e sempre maior do que o valor de todos os nós da subárvore à esquerda.

Árvore da questão 13 do ENADE 2014 de Ciência da Computação

Em relação à árvore apresentada na figura, avalie as afirmações a seguir

  • I. A árvore possui a vantagem de realizar a busca de elementos de forma eficiente, como a busca binária em um vetor.
  • II. A árvore está desbalanceada, pois a subárvore da esquerda possui um número de nós maior do que a subárvore da direita.
  • III. Quando a árvore é percorrida utilizando o método de caminhamento pós-ordem, os valores são encontrados em ordem decrescente.
  • IV. O número de comparações realizadas em função do número n de elementos na árvore em uma busca binária realizada com sucesso é O(log n).

É correto apenas o que se afirma em

  • (A) I e III.
  • (B) I e IV.
  • (C) II e III.
  • (D) I, II e IV.
  • (E) II, III e IV.
Resolução

A afirmação I está correta. Em ambos os casos, a complexidade é O(log n).

A afirmação II está incorreta. Em primeiro lugar, a árvore está balanceada (basta calcular os fatores de balanceamento dos nós para verificar isso). Em segundo lugar, não é a quantidade de nós que define o balanceamento e sim a altura das subárvores.

A afirmativa III está errada. O percurso em pós-ordem da árvore da questão é 7, 14, 13, 10, 17, 25, 20, 15, que obviamente não está em ordem decrescente.

A afirmação IV está correta. Portanto, a alternativa certa é a B.

Questão 14

Seja o universo $U=\{10,20,30,40\}$ e o conjunto dos números naturais N. Com base no conhecimento sobre lógica de predicados, avalie as afirmações a seguir.

  • I. $H = (\forall x \in N)(\exists y \in U)(x<y)$ é válida.
  • II. $H = (\forall x \in N)(\exists y \in N)(y<x)$ é válida.
  • III. $H = (\forall x \in U)(\exists y \in U)(x>y)$ é inválida, sendo $x=10$ um contra-exemplo.

É correto o que se afirma em

  • (A) I, apenas.
  • (B) III, apenas.
  • (C) I e II, apenas.
  • (D) II e III, apenas.
  • (E) I, II e III.
Resolução

A primeira afirmativa é falsa. Em português, a expressão significa "para todo x pertencente aos naturais, existe um y pertencente a U, tal que x < y". Qualquer valor de x a partir de 41 invalida a afirmação.

A afirmativa II também é falsa. Considerando que o menor número do conjunto dos números naturais seja o 0, se escolhermos x = 0, então a desigualdade y < x (ou, simplesmente, y < 0) sempre será falsa, pois não há natural menor do que zero.

Observação: algumas literaturas consideram o número 1 como menor/primeiro natural. Nesse caso, basta considerar x = 1.

A afirmativa III está correta. Portanto, a alternativa B é a correta.

Questão 16

Uma pilha é uma estrutura de dados que armazena uma coleção de itens de dados relacionados e que garante o seguinte funcionamento: o último elemento a ser inserido é o primeiro a ser removido. É comum na literatura utilizar os nomes push e pop para as operações de inserção e remoção de um elemento em uma pilha respectivamente. O seguinte trecho de código em linguagem C define uma estrutura de dados pilha utilizando um vetor de inteiros, bem como algumas funções para sua manipulação.

#include <stdlib.h>
#include <stdio.h>
typedef struct {
   int elementos[100];
   int topo;
}pilha;
pilha * cria_pilha() {
   pilha * p =malloc(sizeof(pilha));
   p->topo = -1;
   return pilha;
}
void push(pilha *p, int elemento) {
   if (p->topo >= 99)
      return;
   p->elementos[++p->topo] = elemento;
}
int pop(pilha *p) {
   int a = p->elementos[p->topo];
   p->topo--;
   return a;
}

O programa a seguir utiliza uma pilha.

int main() {
    pilha * p = cria_pilha();
    push(p, 2);
    push(p, 3);
    push(p, 4);
    pop(p);
    push(p, 2);
    int a = pop(p) + pop(p);
    push(p, a);
    a += pop(p);
    printf("%d", a);
    return 0;
}

A esse respeito, avalie as afirmações a seguir.

  • I. A complexidade computacional de ambas funções push e pop é O(1).
  • II. O valor exibido pelo programa seria o mesmo caso a instrução a += pop(p); fosse trocada por a += a;
  • III. Em relação ao vazamento de memória (memory leak), é opcional chamar a função free(p), pois o vetor usado pela pilha é alocado estaticamente.

É correto o que se afirma em

  • (A) I, apenas.
  • (B) III, apenas.
  • (C) I e II, apenas.
  • (D) II e III apenas.
  • (E) I, II e III.

Observação: observe que há um erro na função cria_pilha(), que está retornando pilha ao invés de p.

Resolução

A afirmativa I está correta. As funções push e pop fazem a inserção e a remoção sempre no topo da pilha e, consequentemente, ambas as operações podem ser realizadas em tempo constante.

A afirmativa II também está correta. O valor de a e o valor de pop(p), após o comando push(p, a), são iguais a 5. Portanto, se trocássemos a instrução a += pop(p); por a += a;, o resultado do programa seria o mesmo.

A afirmativa III é falsa, pois a pilha foi alocada dinamicamente utilizando a função malloc, logo é necessário utilizar a função free para liberar a memória alocada.

Ou seja, a alternativa correta é a C.

Questão 23

Qual o valor de retorno da função a seguir, caso n = 27?

int recursao (int n) {
    if (n <= 10) {
        return n * 2;
    }
    else {
        return recursao(recursao(n/3));
    }
}
  • (A) 8.
  • (B) 9.
  • (C) 12.
  • (D) 16.
  • (E) 18.
Resolução

Para n = 27:

recursao(27) = recursao(recursao(27/3)) = recursao(recursao(9))

Como 9 <= 10, então recursao(9) = 2 * 9 = 18:

recursao(27) = recursao(18) = recursao(recursao(6))

Como 6 <= 10, então recursao(6) = 2 * 6 = 12

recursao(27) = recursao(12) = recursao(recursao(4))

Como 4 <= 10, então recursao(4) = 2 * 4 = 8

recursao(27) = recursao(8)

Como 8 <= 10, então recursao(8) = 2 * 8 = 16. Por fim,

recursao(27) = 16

Portanto, a alternativa correta é a D.

Sugestões de livros para estudantes de computação na Amazon (patrocinado): Lista de Livros

Obrigado pela leitura! Se você puder, considere apoiar financeiramente o Blog Cyberini, Chave Pix: cyberpix9@gmail.com

Doar com PayPal

Siga o blog

Redes sociais: Facebook, Twitter, YouTube, Pinterest, Instagram, Telegram

Importante: utilize o bom senso na hora de comentar. Acesse a política de privacidade para maiores informações sobre comentários.

Nenhum comentário:

Postar um comentário