GeraProva GeraProva Provas com IA para professores do Brasil
Computação1ª sérieBNCC EM13CO04Difícil⏱ longo

Uma equipe de uma biblioteca digital precisa reunir os resultados de K consultas já ordenadas. Cada consulta…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EM13CO04

Reconhecer o conceito de metaprogramação como uma forma de generalização na construção de programas, permitindo que algoritmos sejam entrada ou saída para outros algoritmos.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Uma equipe de uma biblioteca digital precisa reunir os resultados de K consultas já ordenadas. Cada consulta fornece uma lista de registros do tipo Registro, e as listas podem ter tamanhos diferentes. Para manter o programa reutilizável, a função deve receber um parâmetro comparador. Esse comparador recebe dois registros e retorna um número inteiro: valor negativo quando o primeiro deve aparecer antes do segundo, zero quando são equivalentes quanto à ordenação e valor positivo quando o segundo deve aparecer antes do primeiro. A função deve preservar essa ordem e produzir uma única lista com todos os registros. Com base no contrato descrito, qual assinatura representa corretamente uma função genérica que recebe K listas ordenadas de Registro e um comparador, mescla os elementos e devolve uma única lista ordenada?

  1. A) mergeK(listas: List<List<Registro>>, comparador: (Registro, Registro)->int) -> List<Registro>
  2. B) mergeK(listas: List<List<Registro>>, comparador: (Registro, Registro)->int) -> List<List<Registro>>
  3. C) mergeK(listas: List<List<Registro>>, comparador: (Registro)->int) -> List<Registro>
  4. D) mergeK(listas: List<List<Registro>>, comparador: int) -> List<Registro>
  5. E) mergeK(listas: List<Registro>, comparador: (Registro, Registro)->int) -> List<Registro>

✅ Resposta correta: alternativa A

Resolução passo a passo

  1. Identifique os requisitos do contrato: a função recebe K listas ordenadas de Registro (ou seja, uma lista de listas de Registro), recebe um comparador que compara dois registros e retorna um inteiro, e deve devolver uma única lista com todos os registros, ordenada.
  2. Verifique a entrada. O primeiro parâmetro precisa ser List<List<Registro>>, pois representa as K listas. A alternativa A declara exatamente isso.
  3. Verifique o comparador. Ele recebe dois registros e retorna int, o que corresponde à assinatura (Registro, Registro)->int. A alternativa A também está correta nesse ponto.
  4. Verifique o retorno. A função deve produzir uma única lista de registros, ou seja, List<Registro>. A alternativa A devolve List<Registro>, o que atende ao contrato.
  5. Conclusão. A alternativa A é a única que combina os três elementos corretamente. Por que as outras estão erradas: a B retorna uma lista de listas, quando o contrato pede uma única lista; a C define o comparador com um só parâmetro, enquanto a comparação exige dois registros; a D recebe um int no lugar do comparador; a E recebe uma lista de registros em vez de uma lista de listas, de modo que não representa K listas.

💡 Dica: Considere a estrutura de dados e a lógica de mesclagem.

Alternativa por alternativa

A Correta

A entrada listas deve ser uma coleção de listas de Registro, pois a função mescla K listas. O comparador deve receber dois registros para decidir a ordem entre eles e retornar um inteiro com os três resultados previstos no contrato: negativo, zero ou positivo. A saída deve ser uma única List<Registro>, contendo os elementos das listas de entrada em ordem.

B Erradaerro: Interpretaçãoa que mais engana

O aluno acredita que, por a entrada ser uma lista de listas, a saída também deve manter essa estrutura, sem perceber que o enunciado pede uma única lista com todos os registros.

Por que engana: Confundir o tipo de retorno da função, escolhendo uma alternativa que não devolve uma lista ordenada.

C Erradaerro: Conceitual

O aluno entende que o comparador precisa de apenas um parâmetro, talvez pensando em uma chave de ordenação, e não na comparação entre dois registros descrita no enunciado.

D Erradaerro: Conceitual

O aluno confunde o comparador, que é uma função que compara dois registros, com um valor inteiro, possivelmente imaginando que basta passar um número de referência para a ordenação.

E Erradaerro: Interpretação

O aluno lê K listas como uma única lista de registros, esquecendo que cada consulta fornece sua própria lista, o que exige um tipo de dois níveis.

Raio-X da questão

Dificuldade Difícil
Bloom Analisar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

mesclagem de listas ordenadas

📌 Objetivo

avaliacao

🧱 Pré-requisitos

funções e parâmetros em programação · listas e estruturas de dados

📚 Reveja

Revisar algoritmos de mesclagem e estruturas de dados.

⚠️ Erro mais comum

Confundir o tipo de retorno da função, escolhendo uma alternativa que não devolve uma lista ordenada.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de [CONFERIR] Construir soluções baseadas no uso de algoritmos e conceitos da Computação para resolver problemas, avaliando suas qualidades e melhorando-as.

🔎 Procurar outra questão

Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.

Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.