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

Projete e descreva com precisão o algoritmo e as estruturas de dados (registros, grafo, hash) para implementar…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF09CO02

Construir soluções computacionais de problemas de diferentes áreas do conhecimento, de forma individual e colaborativa, selecionando as estruturas de dados e técnicas adequadas, aperfeiçoando e articulando saberes escolares.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Projete e descreva com precisão o algoritmo e as estruturas de dados (registros, grafo, hash) para implementar um sistema simples de controle de versões que suporte commits, ramificações e fusões, garantindo identificação única dos commits.

✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.

Resposta esperada

Dados e estruturas: usar um registro 'Commit' com campos: id_hash, autor, timestamp, mensagem, ponteiros para pais (lista), e referência para árvore de arquivos. Armazenar objetos de conteúdo (blobs/árvore) em uma tabela hash (key = hash do conteúdo). Representação: grafo direcionado acíclico (DAG) cujos nós são commits e arestas apontam para pais; ramificações são referências (ponteiros) para nós no DAG. Algoritmo de commit: gerar snapshot de mudanças, criar objetos (blobs/árvore), computar id_hash (SHA-1/ SHA-256) do registro e dos objetos, inserir no armazenamento hash, adicionar nó ao DAG com ponteiros para pais e atualizar referência da branch. Ramificação: criar nova referência apontando para um commit existente (cria ponteiro de branch). Fusão (merge): localizar ancestral comum mais recente (LCA) no DAG, executar merge de conteúdo por comparação de três vias entre base (LCA), head da branch A e head da branch B; em conflitos, sinalizar para resolução manual; criar commit de merge com dois pais. Consistência e integridade: usar hashes para identificação única e detecção de corrupção; representar grafo de commits em índice para buscas eficientes. Operações auxiliares: busca de histórico por DFS/BFS no DAG, compactação/garbage collection removendo objetos não referenciados via marcação a partir de refs. Esta solução usa registros para commits, grafo dirigido para relacionamento entre commits e tabela hash para armazenar e recuperar objetos por id único.

Explicação

A solução apresentada utiliza estruturas de dados apropriadas, como registros para armazenar informações dos commits e um grafo direcionado acíclico para representar as relações entre eles, permitindo a implementação eficiente de commits, ramificações e fusões. O uso de uma tabela hash para armazenar objetos de conteúdo garante acesso rápido e identificação única, enquanto o algoritmo descrito aborda de forma clara as operações necessárias para o controle de versões. Além disso, a abordagem para resolução de conflitos e manutenção da integridade dos dados demonstra um entendimento sólido dos desafios envolvidos no gerenciamento de versões.

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

controle de versões

📌 Objetivo

avaliacao

🧱 Pré-requisitos

algoritmos e estruturas de dados · controle de versões

📚 Reveja

Revisar conceitos de algoritmos e estruturas de dados.

⚠️ Erro mais comum

O aluno pode falhar ao não considerar a identificação única dos commits, resultando em conflitos de versão.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Programação - Projetos com programação

🔎 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.