Você deve projetar um algoritmo para atribuir horários de aulas em uma escola. As variáveis principais são…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Criar algoritmos fazendo uso da decomposição e do reúso no processo de solução de forma colaborativa e cooperativa e automatizá-los usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Você deve projetar um algoritmo para atribuir horários de aulas em uma escola. As variáveis principais são turma, professor, sala e horário. Use decomposição: divida o problema em subproblemas, descreva cada subproblema e apresente pseudocódigo para as partes principais.
✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.
Resposta esperada
Proposta de decomposição e solução modelo: 1) Coleta de dados (entrada): funções para ler listas de turmas, professores, salas e restrições. Pseudocódigo: Função LerDados(): turmas ? lerTabela('turmas') profs ? lerTabela('professores') salas ? lerTabela('salas') restrições ? lerTabela('restricoes') retornar (turmas, profs, salas, restrições) 2) Geração de combinações iniciais (processamento): criar combinações possíveis de (turma, horário, sala, professor). Pseudocódigo: Função GerarCombinações(turmas, profs, salas, horarios): combinações ? listaVazia() para cada turma em turmas: para cada horário em horarios: para cada sala em salas: combinações.adicionar((turma, horário, sala)) retornar combinações 3) Validação de restrições (processamento): verificar conflito de professor/ sala e critérios específicos. Pseudocódigo: Função Validar(combinação, restrições, atribuiçõesAtuais): se professorDa(combinação) tem conflito em atribuiçõesAtuais então retornar falso se salaDa(combinação) não atende requisitos da turma então retornar falso se combinação viola restrições então retornar falso retornar verdadeiro 4) Otimização e seleção (processamento/decisão): escolher combinações válidas que maximizem critérios (distribuição justa, minimizar trocas). Pseudocódigo: Função Otimizar(combinaçõesValidas): ordenar combinaçõesValidas por prioridade (ex.: menor conflito, preferência de professor) retornar combinaçõesValidas 5) Atribuição e saída (integração): aplicar as combinações escolhidas e salvar o horário final. Pseudocódigo: Função AtribuirEGravar(combinaçõesOrdenadas): horáriosFinal ? mapaVazio() para cada combinação em combinaçõesOrdenadas: se Validar(combinação, restrições, horáriosFinal) então horáriosFinal.adicionar(combinação) gravar('horarios.csv', horáriosFinal) retornar horáriosFinal Comentários: cada subproblema pode ser testado isoladamente (LerDados, GerarCombinações, Validar, Otimizar, AtribuirEGravar). Essa decomposição permite alterar a estratégia de otimização sem tocar na leitura de dados ou na validação, facilitando manutenção e testes unitários.
Explicação
A decomposição proposta permite abordar o problema de forma estruturada, facilitando o entendimento e a implementação de cada parte do algoritmo. Cada subproblema é claramente definido e pode ser testado de forma independente, o que melhora a manutenibilidade do código. Além disso, a abordagem modular possibilita a adaptação de diferentes estratégias de otimização sem afetar outras partes do sistema.
Raio-X da questão
algoritmo de atribuição
fixacao
noções de algoritmos · decomposição de problemas
Revisar conceitos de algoritmos e pseudocódigo.
O aluno pode falhar em decompor o problema adequadamente, criando um algoritmo muito complexo ou confuso.
ciencia_tecnologia
criatividade
cotidiano
Questões parecidas com resolução
- Proponha uma decomposição em subtarefas e um esboço de pseudocódigo para automatizar um algoritmo que agenda horários de…
- Proponha um algoritmo para alocar salas de aula a turmas considerando horários, capacidade das salas e conflitos de…
- Descreva como você construiria um programa que organiza o horário de aulas de uma escola. Inclua as estruturas de dados…
- Compare três instâncias do problema de alocação de salas: instância A (30 turmas, horários fixos), B (45 turmas…
- Em um projeto de programação, um grupo de alunos deve criar um algoritmo para resolver um problema real da escola. Se…
- Projete e simule em pseudocódigo um algoritmo que recebe uma lista de tarefas semanais (cada tarefa: nome, duração em…
Todas as questões de Estratégias de solução de problemas - Reúso
🔎 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
