Em uma atividade de sala de aula, você precisa descrever com precisão a solucao de um problema: construir o…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir e simular algoritmos, de forma independente ou em colaboração, que resolvam problemas simples e do cotidiano com uso de sequências, seleções condicionais e repetições de instruções.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Em uma atividade de sala de aula, você precisa descrever com precisão a solucao de um problema: construir o programa que ordena uma lista de alunos por nota. Qual algoritmo de ordenação e qual estrutura de dados (registros, listas, matrizes ou grafos) é mais adequada para armazenar os dados de cada aluno (matrícula, nome e nota) e por quê? Explique usando uma linguagem de programação simples (por exemplo Python).
- A) Usar uma árvore binária de busca para armazenar os registros e ordenar pela nota durante as inserções.
- B) Usar uma lista de registros (matrícula, nome e nota) e aplicar um algoritmo de ordenação estável, como inserção, para obter a lista ordenada pela nota.
- C) Usar uma matriz de registros e ordenar apenas pela posição da linha, sem levar em conta a nota.
- D) Armazenar os dados em uma fila (queue) e imprimir na ordem de entrada sem ordenar.
- E) Usar um conjunto (set) de registros para ordenar automaticamente pela nota.
✅ Resposta correta: alternativa B
Resolução passo a passo
- Os dados de cada aluno (matrícula, nome e nota) são campos relacionados que descrevem uma mesma entidade, por isso a estrutura adequada é um registro. Em Python, isso pode ser feito com um dicionário, por exemplo {'matricula': 1, 'nome': 'Ana', 'nota': 8.5}. Passo 2: como precisamos manter uma sequência de alunos para depois reorganizá-la, guardamos os registros em uma lista, que é linear, dinâmica e permite percorrer e trocar elementos facilmente. Passo 3: para ordenar pela nota, um algoritmo simples como o de inserção funciona bem para listas de tamanho moderado. Em Python: def ordenar(alunos): for i in range(1, len(alunos)): atual = alunos[i]; j = i - 1; while j >= 0 and alunos[j]['nota'] < atual['nota']: alunos[j+1] = alunos[j]; j -= 1; alunos[j+1] = atual; return alunos. Passo 4: o método de inserção é estável, ou seja, alunos com a mesma nota mantêm entre si a ordem original, o que é desejável em relatórios. Passo 5: por que as outras alternativas estão erradas. A) Uma árvore binária de busca é válida, mas é uma complexidade desnecessária para apenas ordenar uma lista, e a chave de busca seria a nota, o que exige tratar notas repetidas. C) Uma matriz organiza dados em linhas e colunas, e ordenar pela posição da linha ignora a nota, que é justamente o critério pedido. D) Uma fila mantém a ordem de chegada e não atende ao objetivo de ordenar pela nota. E) Um conjunto não guarda ordem nem ordena automaticamente por um campo, e em Python dicionários nem podem ser colocados em um set por não serem hashable. Observação: o gabarito B está correto e não há divergência a registrar.
💡 Dica: Considere as características dos dados e a eficiência do algoritmo.
Alternativa por alternativa
Acredita que uma árvore de busca é sempre a melhor escolha para manter dados ordenados, sem perceber que o problema pede apenas ordenar uma lista já existente.
Por que engana: Confundir estruturas de dados que mantêm ordem automaticamente com aquelas que precisam de ordenação explícita, ou escolher algoritmos ineficientes para o contexto.
Descrição alinhada com a descrição da solucao: registros bem definidos, uso de lista e um algoritmo de ordenacao simples e estável para ordenar pela nota.
Imagina que a posição do dado na matriz define a ordem final, ignorando que a nota deve ser a chave de ordenação.
Lê a fila como uma forma adequada de organizar os dados e não percebe que o enunciado exige ordenação pela nota, não apenas armazenamento na ordem de entrada.
Supõe que um conjunto organiza seus elementos automaticamente por algum campo, sem saber que conjuntos não têm ordem definida nem critério de ordenação.
Raio-X da questão
algoritmos de ordenação
fixacao
algoritmos de ordenacao · estruturas de dados basicas
Revisar algoritmos de ordenação e estruturas de dados.
Confundir estruturas de dados que mantêm ordem automaticamente com aquelas que precisam de ordenação explícita, ou escolher algoritmos ineficientes para o contexto.
pensamento_critico
cotidiano
Questões parecidas com resolução
- Descreva como um algoritmo pode ser utilizado para organizar uma lista de alunos por nome. Inclua a estrutura de dados…
- Na escola, um professor quer automatizar a classificação de alunos por nota final para formar um ranking. Descreva com…
- Planeje uma solucao simples para a secretaria da escola armazenar dados de alunos com campos: nome, idade, nota…
- Na escola, um aluno precisa descrever a solução de um problema de organização de dados de estudantes. Para cada aluno, o…
- Descreva um algoritmo para ordenar uma lista de alunos por nota. Inclua os passos que deveriam ser tomados para garantir…
- Descreva como você criaria um algoritmo para organizar uma lista de nomes de alunos por ordem alfabética. Inclua o tipo…
🔎 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
