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
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'.
- A) function ordenar(lista: Lista<T>, criterio: function(T)->boolean) -> Lista<T>
- B) function ordenar(lista: Lista<T>, comparador: function(T,T)->inteiro) -> Lista<T>
- C) function ordenar(lista: Lista<T>, comparador: inteiro) -> Lista<T>
- D) function ordenar(lista: Lista<T>, criterio: string) -> Lista<T>
- E) function ordenar(lista: Lista<T>, comparador: string[]) -> Lista<T>
✅ Resposta correta: alternativa B
Resolução passo a passo
- 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'.
- 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.
- 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.
- 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.
- 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
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.
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.
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.
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.
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
algoritmo de ordenação
fixacao
funções e parâmetros em programação · tipos de dados genéricos
Revisar conceitos de algoritmos e funções em programação.
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.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Na cantina da escola, Ana informa o lanche desejado, a quantidade e se vai pagar em dinheiro ou cartão. A atendente…
- Em um jogo criado pela turma, a pontuação de cada equipe é calculada multiplicando a quantidade de desafios concluídos…
- Em uma exposição, um painel registrou as cores dos crachás lidos na entrada. Lista A: azul, verde, azul, amarelo. Lista…
- Em uma cozinha, duas receitas foram preparadas em horários diferentes. Receita 1: uma torta de legumes começou a assar…
- Por que uma cozinha solidária pode ter alimentos guardados e, ainda assim, não conseguir montar todas as cestas…
- Moradores acompanham, pelo celular, um sistema de irrigação instalado em canteiros de uma praça. A cada manhã, dois…
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
