🚀 Capítulo 04: Pilhas (Stacks): LIFO (Tema: Detona Ralph)
NOTE
Este capítulo utiliza a temática de Detona Ralph para explicar as Pilhas. As tortas que os moradores do prédio fazem são empilhadas; a última a ser colocada no topo é a primeira a ser comida!
1. 🎯 Objetivo da Aula
Compreender o conceito de Pilha (Stack), o princípio de funcionamento LIFO (Last-In, First-Out) e as operações básicas de Empilhar e Desempilhar.
2. 🏢 O Cenário Prático (Seu Desafio)
No jogo do Conserta Felix Jr., os moradores do prédio deixam tortas na janela para o Felix. A Mary vai colocando as tortas uma em cima da outra, formando uma pilha.
- Se ela colocar a Torta de Maçã, depois a de Morango e por último a de Chocolate…
- O Felix só consegue pegar a de Chocolate primeiro (que está no topo). Ele não pode puxar a de Maçã de baixo, senão a pilha cai!
Essa organização onde o último que entra é o primeiro que sai é uma Pilha (Stack). Seu desafio é entender como o computador usa isso para controlar ações!
3. 🧠 Fundamentos: A Teoria Traduzida
Uma Pilha é uma estrutura de dados linear onde as inserções e remoções acontecem apenas em uma extremidade: o Topo.
🥞 O Princípio LIFO
Significa Last-In, First-Out (Último a Entrar, Primeiro a Sair).
🕹️ As Operações Básicas:
Push(Empilhar): Adiciona um item no topo da pilha.- No jogo: Mary coloca uma nova torta no topo.
Pop(Desempilhar): Remove o item do topo da pilha.- No jogo: Felix pega a torta do topo para comer.
Peek(Espiar): Olha qual é o item do topo sem removê-lo.
4. 📖 Exemplo Guiado: O Histórico de Ações (Undo)
As pilhas são usadas em quase todos os programas para a função Desfazer (Ctrl+Z).
- Você digita a letra ‘A’ (Push ‘A’).
- Você digita a letra ‘B’ (Push ‘B’).
- Você aperta Ctrl+Z. O programa faz um
Pope remove a letra ‘B’, que foi a última que você digitou!
5. 🛠️ Prática Obrigatória 1: Empilhando Tortas
Simule o estado de uma pilha de tortas após as seguintes operações:
Push(“Torta de Limão”)Push(“Torta de Nozes”)Pop()Push(“Torta de Chocolate”)
Qual torta ficou no topo da pilha no final?
6. 🛠️ Prática Obrigatória 2: O Perigo do Estouro
O que acontece se tentarmos fazer um Pop() em uma pilha que está completamente vazia? Como o programador deve evitar esse erro?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 04 Estruturas de Dados) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
mod_09_estruturas_de_dados/
├── capitulos/
│ ├── capitulo_04_pilhas.md
│ └── codigos/
│ └── cap04/
│ └── pilha_tortas.js9. 💡 Checkpoint de Lógica
Se inserirmos os números 1, 2, 3 nessa ordem em uma pilha e depois fizermos 3 operações de Pop(), em qual ordem os números vão sair?
10. 🔥 Desafio de Fixação
Pesquise o que significa o termo Stack Overflow (além de ser o nome do site famoso!).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Pilha:
["Torta de Limão"] - Pilha:
["Torta de Limão", "Torta de Nozes"] - Pilha:
["Torta de Limão"](Removeu a de Nozes) - Pilha:
["Torta de Limão", "Torta de Chocolate"]
- A torta de Chocolate ficou no topo.