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
- Um aplicativo de voz transforma fala em texto usando dados e algoritmo. Selecione o exemplo de inteligencia artificial.
- Crie um algoritmo em pseudocódigo que solicite números ao usuário até que digite 0; para cada número conte quantos são…
- Elabore um algoritmo em pseudocódigo que, dado um grafo representado por lista de adjacência e dois vértices (origem…
- Ao decompor um algoritmo que calcula o produto de elementos de uma lista de dados, qual subtarefa isola a inicialização…
- Projete em pseudocódigo um algoritmo que, dada uma lista de leituras (lista[1..n]) e um limiar T, retorne o índice da…
- Projete um autômato baseado em eventos para tocar o sinal de entrada e saída das aulas numa escola: descreva estados…
🔎 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
