GeraProva GeraProva Provas com IA para professores do Brasil
Computação6º anoBNCC EF06CO06Difícil⏱ medio

Projete a assinatura de um algoritmo de ordenação generalizado que permita reutilizar o mesmo código para…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF06CO06

Comparar diferentes casos particulares (instâncias) de um mesmo problema, identificando as semelhanças e diferenças entre eles, e criar um algoritmo para resolver todos, fazendo uso de variáveis (parâmetros) para permitir o tratamento de todos os casos de forma genérica.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Projete a assinatura de um algoritmo de ordenação generalizado que permita reutilizar o mesmo código para diferentes critérios de comparação (por exemplo, por preço ou por nome). Use termos 'comparador' ou 'função' e 'parâmetro'.

  1. A) function ordenar(lista: Lista<T>, criterio: function(T)->boolean) -> Lista<T>
  2. B) function ordenar(lista: Lista<T>, comparador: function(T,T)->inteiro) -> Lista<T>
  3. C) function ordenar(lista: Lista<T>, comparador: inteiro) -> Lista<T>
  4. D) function ordenar(lista: Lista<T>, criterio: string) -> Lista<T>
  5. E) function ordenar(lista: Lista<T>, comparador: string[]) -> Lista<T>

✅ Resposta correta: alternativa B

Resolução passo a passo

  1. O enunciado pede uma assinatura genérica de ordenação, reutilizável para diferentes critérios (preço, nome etc.), usando os termos 'comparador' ou 'função' e 'parâmetro'.
  2. Para ordenar uma lista de elementos de tipo genérico T, o algoritmo precisa saber, para quaisquer dois elementos, qual deve vir antes. A forma mais geral é receber uma função de comparação que recebe dois elementos (T, T) e devolve um inteiro: negativo se o primeiro vem antes, zero se são equivalentes e positivo se o primeiro vem depois.
  3. A alternativa B expressa exatamente isso: a lista é do tipo Lista<T>, o parâmetro 'comparador' é uma function(T,T)->inteiro, e o retorno é Lista<T>. Como o critério fica encapsulado no comparador, o mesmo código de ordenação serve para ordenar por preço, por nome ou por qualquer outro campo, bastando passar outra função.
  4. Por que as outras estão erradas: A usa um predicado de um argumento que devolve booleano, o que não informa a ordem relativa entre dois elementos; C recebe um inteiro, que não representa critério algum; D recebe uma string, que não é um critério executável e não permite lógica personalizada; E recebe um vetor de strings, que não generaliza para qualquer tipo T nem para comparações arbitrárias.
  5. Conclusão: a assinatura correta e generalizada é a da alternativa B, em conformidade com o gabarito oficial.

💡 Dica: Pense em como a função de comparação pode ser implementada.

Alternativa por alternativa

A Erradaerro: Conceituala que mais engana

O aluno acredita que basta um critério que classifique cada elemento como válido ou não (predicado booleano), esquecendo que ordenar exige comparar dois elementos entre si.

Por que engana: Confundir o tipo de retorno da função, escolhendo uma alternativa que não define corretamente o comparador como uma função que recebe dois parâmetros.

B Correta

Recebendo um parâmetro comparador (função) o algoritmo aplica regras distintas de ordenação sem alterar sua implementação, promovendo reúso e generalização.

C Erradaerro: Conceitual

O aluno confunde o parâmetro de comparação com um número, talvez imaginando um índice ou código de campo, sem perceber que um inteiro não carrega a lógica de comparação.

D Erradaerro: Procedimental

O aluno acha que indicar o critério pelo nome em texto (como 'preco' ou 'nome') é suficiente, sem considerar que a função precisaria interpretar a string e que isso não é genérico para qualquer tipo.

E Erradaerro: Senso comum

O aluno pensa que um vetor de strings com os nomes dos campos a comparar generaliza a ordenação, sem notar que isso limita o algoritmo a campos textuais e não permite comparações personalizadas.

Raio-X da questão

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

algoritmo de ordenação

📌 Objetivo

fixacao

🧱 Pré-requisitos

funções e parâmetros em programação · tipos de dados genéricos

📚 Reveja

Revisar conceitos de algoritmos e funções em programação.

⚠️ Erro mais comum

Confundir o tipo de retorno da função, escolhendo uma alternativa que não define corretamente o comparador como uma função que recebe dois parâmetros.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Estratégias de solução de problemas - Generalização

🔎 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.