🚀 Capítulo 05: Filas (Queues): FIFO (Tema: RollerCoaster Tycoon)
NOTE
Este capítulo utiliza a temática de RollerCoaster Tycoon para explicar as Filas. No parque de diversões, quem chega primeiro na fila da montanha-russa é o primeiro a dar a volta no brinquedo!
1. 🎯 Objetivo da Aula
Compreender o conceito de Fila (Queue), o princípio de funcionamento FIFO (First-In, First-Out) e as operações básicas de Enfileirar e Desenfileirar.
2. 🏢 O Cenário Prático (Seu Desafio)
Você é o administrador de um parque de diversões no RollerCoaster Tycoon. Uma nova montanha-russa foi inaugurada e os visitantes estão correndo para a fila.
- O visitante João chegou primeiro.
- A Maria chegou logo atrás.
- O Pedro chegou por último.
Quando o carrinho abre as portas, o João entra primeiro. Isso é justo, certo? Essa organização onde o primeiro que chega é o primeiro que sai é uma Fila (Queue). Seu desafio é entender como o computador usa isso para organizar tarefas!
3. 🧠 Fundamentos: A Teoria Traduzida
Uma Fila é uma estrutura de dados linear onde as inserções acontecem em uma extremidade (o Fim) e as remoções acontecem na outra extremidade (o Início).
🍦 O Princípio FIFO
Significa First-In, First-Out (Primeiro a Entrar, Primeiro a Sair).
🕹️ As Operações Básicas:
Enqueue(Enfileirar): Adiciona um item no final da fila.- No parque: Um novo visitante entra no final da fila.
Dequeue(Desenfileirar): Remove o item do início da fila.- No parque: O visitante da frente sai da fila e entra no brinquedo.
Front(Frente): Olha quem é o primeiro da fila sem removê-lo.
4. 📖 Exemplo Guiado: Filas de Impressão
As filas são usadas no mundo real para gerenciar recursos compartilhados. Imagine uma impressora na escola.
- O professor envia uma prova (Enqueue).
- Você envia o seu trabalho (Enqueue).
- A impressora vai imprimir primeiro a prova do professor, porque chegou primeiro!
5. 🛠️ Prática Obrigatória 1: Gerenciando a Fila
Simule o estado de uma fila de visitantes após as seguintes operações:
Enqueue(“João”)Enqueue(“Maria”)Dequeue()Enqueue(“Pedro”)
Quem está na frente da fila agora? E quem está no final?
6. 🛠️ Prática Obrigatória 2: Fila vs Pilha
Pense em uma Fila e em uma Pilha. Em qual delas o tempo de espera de um elemento pode ser injusto se novos elementos continuarem chegando sem parar? Por quê?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 05 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_05_filas.md
│ └── codigos/
│ └── cap05/
│ └── fila_visitantes.js9. 💡 Checkpoint de Lógica
Se inserirmos os números 1, 2, 3 nessa ordem em uma fila e depois fizermos 3 operações de Dequeue(), em qual ordem os números vão sair?
10. 🔥 Desafio de Fixação
Pesquise o que é uma Fila de Prioridade (Priority Queue) e dê um exemplo de uso na vida real (Dica: Filas de banco ou hospitais).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- Fila:
["João"] - Fila:
["João", "Maria"] - Fila:
["Maria"](João saiu para o brinquedo) - Fila:
["Maria", "Pedro"]
- Maria está na frente e Pedro está no final.