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

  1. Enqueue (Enfileirar): Adiciona um item no final da fila.
    • No parque: Um novo visitante entra no final da fila.
  2. Dequeue (Desenfileirar): Remove o item do início da fila.
    • No parque: O visitante da frente sai da fila e entra no brinquedo.
  3. 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.

  1. O professor envia uma prova (Enqueue).
  2. Você envia o seu trabalho (Enqueue).
  3. 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:

  1. Enqueue(“João”)
  2. Enqueue(“Maria”)
  3. Dequeue()
  4. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 05 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_05_filas.md
│   └── codigos/
│       └── cap05/
│           └── fila_visitantes.js

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

  1. Fila: ["João"]
  2. Fila: ["João", "Maria"]
  3. Fila: ["Maria"] (João saiu para o brinquedo)
  4. Fila: ["Maria", "Pedro"]
  • Maria está na frente e Pedro está no final.

Capitulo Anterior | Proximo Capitulo