🚀 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:

  1. Push (Empilhar): Adiciona um item no topo da pilha.
    • No jogo: Mary coloca uma nova torta no topo.
  2. Pop (Desempilhar): Remove o item do topo da pilha.
    • No jogo: Felix pega a torta do topo para comer.
  3. 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).

  1. Você digita a letra ‘A’ (Push ‘A’).
  2. Você digita a letra ‘B’ (Push ‘B’).
  3. Você aperta Ctrl+Z. O programa faz um Pop e 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:

  1. Push(“Torta de Limão”)
  2. Push(“Torta de Nozes”)
  3. Pop()
  4. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 04 Estruturas de Dados) e clique em Commit to main.
  2. 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.js

9. 💡 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:

  1. Pilha: ["Torta de Limão"]
  2. Pilha: ["Torta de Limão", "Torta de Nozes"]
  3. Pilha: ["Torta de Limão"] (Removeu a de Nozes)
  4. Pilha: ["Torta de Limão", "Torta de Chocolate"]
  • A torta de Chocolate ficou no topo.

Capitulo Anterior | Proximo Capitulo