GeraProva GeraProva Provas com IA para professores do Brasil
Computação9º anoBNCC EF69CO03Média⏱ curto

Para implementar o histórico de desfazer e refazer (undo/redo) em um editor, qual estrutura de dados técnica é…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF69CO03

Descrever com precisão a solução de um problema, construindo o programa que implementa a solução descrita.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Para implementar o histórico de desfazer e refazer (undo/redo) em um editor, qual estrutura de dados técnica é mais apropriada?

  1. A) Duas pilhas (stack): uma para undo e outra para redo.
  2. B) Usar um array fixo para registrar as ações.
  3. C) Implementar com uma única pilha, alternando os estados.
  4. D) Usar uma lista encadeada para o histórico de ações.
  5. E) Armazenar ações em um vetor dinâmico.

✅ Resposta correta: alternativa A

Resolução passo a passo

  1. Undo significa desfazer a ação mais recente, e redo significa refazer uma ação que acabou de ser desfeita. Ambas as operações seguem a lógica do último a entrar, primeiro a sair (LIFO), que é o comportamento de uma pilha.
  2. Com duas pilhas, a pilha de undo guarda as ações já realizadas. Ao desfazer, a ação é retirada do topo da pilha de undo e empilhada na pilha de redo. Ao refazer, o processo se inverte. Qualquer nova ação do usuário limpa a pilha de redo, o que mantém a consistência do histórico.
  3. A alternativa B está errada porque um array fixo tem capacidade limitada e não acompanha o crescimento natural do histórico, além de não modelar bem a ordem de desfazer e refazer.
  4. A alternativa C está errada porque uma única pilha não consegue separar as ações disponíveis para desfazer das disponíveis para refazer sem uma estrutura adicional que guarde o que foi desfeito.
  5. A alternativa D está errada porque uma lista encadeada até funciona, mas não é a estrutura mais apropriada: exige tratamento manual de ponteiros e não expressa diretamente a disciplina de último a entrar, primeiro a sair.
  6. A alternativa E está errada porque um vetor dinâmico guardaria as ações, mas sem duas estruturas separadas não haveria uma forma natural de gerenciar o refazer. Por isso a resposta correta é a A, de acordo com o gabarito oficial.

💡 Dica: Considere as estruturas de dados que suportam operações de pilha.

Alternativa por alternativa

A Correta

Pilhas operam em LIFO, permitindo reverter a última ação com pop e recuperar ações refazendo ao mover operações entre as duas pilhas; cada operação é O(1).

B Erradaerro: Conceitual

O aluno imagina que um array de tamanho fixo basta para registrar ações, ignorando que o histórico cresce indefinidamente e que a ordem de desfazer e refazer precisa ser controlada.

C Erradaerro: Conceituala que mais engana

O aluno acredita que uma única pilha consegue alternar entre os estados de desfazer e refazer apenas trocando o topo, sem perceber que as ações desfeitas precisam ser guardadas em algum lugar separado.

Por que engana: Confundir o uso de uma única pilha para gerenciar as operações de desfazer e refazer, não percebendo que isso pode levar à perda de informações sobre as ações realizadas.

D Erradaerro: Procedimental

O aluno associa a flexibilidade de inserção da lista encadeada à solução ideal, sem considerar que o padrão LIFO das operações de desfazer e refazer se encaixa melhor em duas pilhas.

E Erradaerro: Conceitual

O aluno pensa que armazenar as ações em um vetor dinâmico resolve o problema por si só, sem perceber que faltaria a separação entre histórico de desfazer e histórico de refazer.

Raio-X da questão

Dificuldade Média
Bloom Aplicar
Leitura medio
Discriminação alto
Peso pedagógico alto
Autonomia do enunciado completo
Cobertura da habilidade unica
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ direta🧩 consolidacao
🎯 Conceito central

estruturas de dados

📌 Objetivo

avaliacao

🧱 Pré-requisitos

estruturas de dados · pilhas e filas

📚 Reveja

Revisar conceitos de pilhas e filas em estruturas de dados.

⚠️ Erro mais comum

Confundir o uso de uma única pilha para gerenciar as operações de desfazer e refazer, não percebendo que isso pode levar à perda de informações sobre as ações realizadas.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

tomada_decisao

🏫 Contexto

abstrato

Questões parecidas com resolução

Todas as questões de Programação - Linguagem de 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.