GeraProva GeraProva Provas com IA para professores do Brasil
Computação2º anoBNCC EF15CO02Difícil⏱ longo

Desenvolva um algoritmo em pseudocódigo que processe um vetor de registros 'emprestimos' (campos: idAluno…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF15CO02

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

Dificuldade Difícil
Bloom Criar
Leitura alto
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade multipla
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 desafio
🎯 Conceito central

algoritmo de atualização

📌 Objetivo

avaliacao

🧱 Pré-requisitos

estrutura de dados · lógica de programação

📚 Reveja

Revisar a manipulação de vetores e estruturas de controle em pseudocódigo.

⚠️ Erro mais comum

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.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

criatividade

🏫 Contexto

cotidiano

Questões parecidas com resolução

Todas as questões de Algoritmos

🔎 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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.