Escreva um algoritmo em pseudocódigo que receba uma sequência de comandos de movimento para um robô (por…
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
Escreva um algoritmo em pseudocódigo que receba uma sequência de comandos de movimento para um robô (por exemplo: "esquerda", "direita", "avançar", "voltar") e simplifique a sequência removendo pares de comandos redundantes ou que se anulam (por exemplo, "direita" seguido de "esquerda"). Use explicitamente uma variável ou estrutura de dados para armazenar o estado intermediário e explique a complexidade do algoritmo.
✍️ Questão dissertativa: veja abaixo a resposta esperada e a explicação.
Resposta esperada
Entrada: lista comandos Inicializar pilha := lista vazia Para cada cmd em comandos: se pilha está vazia: empilhar(cmd) senão: topo := elemento no topo da pilha se (topo == "direita" e cmd == "esquerda") ou (topo == "esquerda" e cmd == "direita") ou (topo == "avançar" e cmd == "voltar") ou (topo == "voltar" e cmd == "avançar") então desempilhar() // comandos se anulam senão empilhar(cmd) FimPara Resultado := conteúdo da pilha (do fundo ao topo) Explicação: a pilha armazena o histórico útil de comandos; ao encontrar um comando que se anula com o topo, ambos são removidos, simplificando localmente a sequência. Cada comando é empilhado ou desempilhado no máximo uma vez, portanto a complexidade é O(n) em tempo e O(n) em espaço no pior caso, onde n é o número de comandos.
Explicação
O algoritmo utiliza uma pilha para gerenciar os comandos, permitindo que comandos que se anulam sejam removidos de forma eficiente. Cada comando é processado uma única vez, garantindo que a complexidade permaneça linear em relação ao número total de comandos. A estrutura de pilha é adequada para esse tipo de problema, pois facilita a verificação e remoção de comandos redundantes.
Raio-X da questão
algoritmo em pseudocódigo
avaliacao
lógica de programação · estrutura de dados
Revisar conceitos de algoritmos e estruturas de dados.
O aluno pode confundir os comandos que se anulam, não removendo corretamente as sequências redundantes, como 'direita' e 'esquerda'.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Enquanto visitantes aguardavam a abertura de um museu, técnicos programaram um painel luminoso e um robô-guia para…
- Para resolver uma atividade de Matemática, um estudante anota os passos nesta ordem: ler o enunciado, identificar os…
- Em um aplicativo, o total de maçãs é calculado a partir de duas informações informadas pelo usuário: as maçãs que estão…
- No fim da tarde, a responsável por uma sala de leitura separa dois tablets para um grupo de crianças. Antes de entregar…
- Descreva, em algoritmo de alto nível (passos), como um receptor deve processar pacotes de um arquivo recebido: verificar…
- Proponha um algoritmo de alto nível para que um sistema destino reconstitu´a um arquivo recebido em pacotes que podem…
🔎 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
