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
- Crie e descreva um algoritmo, em linguagem simples ou pictográfica, que ajude uma criança a decidir se deve levar um…
- Crie um algoritmo em linguagem oral ou escrita que controle a rega de um vaso por 7 dias: diariamente verificar se…
- Projete em pseudocódigo um algoritmo que reconstrua uma mensagem a partir de pacotes recebidos onde cada pacote contém…
- Elabore em pseudocódigo um algoritmo que, dado um vetor de registros 'tarefas' (descricao, duracao_horas, prioridade) e…
- Elabore em pseudocódigo um algoritmo que, dado um array de registros 'alunos' com campos (nome, notas[4]…
- Projete um algoritmo e descreva as estruturas de dados para implementar operações de desfazer/refazer (undo/redo) em um…
🔎 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
