Desenvolva um algoritmo em pseudocódigo que processe um vetor de registros 'emprestimos' (campos: idAluno…
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
Desenvolva um algoritmo em pseudocódigo que processe um vetor de registros 'emprestimos' (campos: idAluno, idEquipamento, data, devolvido:boolean) e atualize um vetor de registros 'equipamentos' (campos: id, nome, disponivel:boolean). O algoritmo deve: (a) para cada registro de empréstimo não devolvido, se o equipamento estiver disponível marcar disponivel=false e registrar sucesso; (b) se não estiver disponível registrar recusa; (c) ao encontrar um empréstimo com devolvido=true, marcar o equipamento como disponivel=true. Retorne as listas de sucessos e recusas.
✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.
Resposta esperada
Algoritmo (pseudocódigo): func processarEmprestimos(emprestimos, equipamentos): sucessos <- [] recusas <- [] // criar índice por id de equipamento para acesso rápido mapaEquip <- dicionario() para i de 0 até tamanho(equipamentos)-1: mapaEquip[equipamentos[i].id] <- i para cada e em emprestimos: idx <- mapaEquip[e.idEquipamento] se idx é nulo então // equipamento não cadastrado: registrar recusa adicionar(recusas, {idAluno: e.idAluno, idEquipamento: e.idEquipamento, motivo: "nao cadastrado"}) continuar fimse eq <- equipamentos[idx] se e.devolvido = true então // processar devolução equipamentos[idx].disponivel <- true continuar fimse // empréstimo ativo (devolvido = false) se equipamentos[idx].disponivel = true então equipamentos[idx].disponivel <- false adicionar(sucessos, {idAluno: e.idAluno, idEquipamento: e.idEquipamento, data: e.data}) senao adicionar(recusas, {idAluno: e.idAluno, idEquipamento: e.idEquipamento, motivo: "indisponivel"}) fimse fimpara retornar {sucessos: sucessos, recusas: recusas, equipamentos: equipamentos} Observações: usar um dicionário/índice para acessar equipamentos por id garante que o algoritmo percorra o vetor de empréstimos uma vez, mantendo complexidade linear relativa ao número de empréstimos.
Explicação
O algoritmo utiliza um dicionário para otimizar o acesso aos equipamentos, permitindo que cada empréstimo seja processado em tempo linear. Ele trata de forma adequada as situações de devolução e disponibilidade dos equipamentos, garantindo que os registros sejam atualizados corretamente. Além disso, as listas de sucessos e recusas são mantidas separadas, facilitando a análise dos resultados.
Raio-X da questão
algoritmo de atualização
avaliacao
estrutura de dados · lógica de programação
Revisar a manipulação de vetores e estruturas de controle em pseudocódigo.
O aluno pode confundir a lógica de atualização dos equipamentos, não diferenciando entre os casos de empréstimos devolvidos e não devolvidos.
ciencia_tecnologia
criatividade
cotidiano
Questões parecidas com resolução
- Elabore um algoritmo em passos sequenciais para gerenciar a fila de empréstimo de objetos entre alunos (por exemplo…
- Projete um algoritmo em pseudocódigo que receba um vetor de registros 'colaboradores' (campos: id, nome, setor, salario)…
- Proponha, em pseudocódigo, um algoritmo que atribua turmas a salas usando um vetor de registros 'salas' (campos: idSala…
- Elabore em pseudocódigo um algoritmo que, dado um array de registros 'alunos' com campos (nome, notas[4]…
- Elabore um algoritmo em pseudocódigo que receba uma matriz de registros 'sala' (linhas = salas, colunas = períodos) em…
- Projete um algoritmo em pseudocódigo que receba uma matriz de registros 'presenca' (linhas = alunos, colunas = dias) com…
🔎 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
