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

Projete um algoritmo e descreva as estruturas de dados para implementar operações de desfazer/refazer…

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

Projete um algoritmo e descreva as estruturas de dados para implementar operações de desfazer/refazer (undo/redo) em um editor de texto simples. Explique como registrar cada operação, aplicar undo e redo e a complexidade envolvida.

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

Resposta esperada

Use duas pilhas: undo_stack e redo_stack. Representar cada operação como um delta (tipo da operação, posição, conteúdo afetado) e também seu inverso. Ao executar uma edição: aplicar o delta no texto, empilhar o delta inverso em undo_stack e limpar redo_stack. Para undo: desempilhar inverso de undo_stack, aplicar no texto e empilhar o inverso desse inverso em redo_stack (ou seja, o delta original). Para redo: desempilhar de redo_stack, aplicar e empilhar o inverso em undo_stack. Essa abordagem permite O(k) por operação, onde k é o tamanho do delta (tipicamente O(1) para uma inserção/exclusão de caractere); operações de push/pop em pilha são O(1). Para reduzir memória, armazenar deltas compactos (por exemplo, intervalos e strings) e, se necessário, criar checkpoints periódicos para limitar profundidade histórica.

Explicação

A utilização de duas pilhas permite gerenciar eficientemente as operações de desfazer e refazer, garantindo que cada ação possa ser revertida ou repetida de forma organizada. A representação das operações como deltas facilita a aplicação das mudanças no texto e a recuperação do estado anterior, mantendo a complexidade das operações em níveis aceitáveis. Além disso, a estratégia de armazenamento compacto e a criação de checkpoints ajudam a otimizar o uso de memória e a performance do algoritmo.

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 desfazer/refazer

📌 Objetivo

avaliacao

🧱 Pré-requisitos

estruturas de dados · algoritmos básicos

📚 Reveja

Revisar conceitos de estruturas de dados e algoritmos de controle de histórico.

⚠️ Erro mais comum

O aluno pode confundir as operações de desfazer e refazer, não registrando corretamente as ações realizadas no editor.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

abstrato

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.