🚀 Capítulo 03: Operações com Arrays (Busca e Inserção) (Tema: Pokémon)

NOTE

Este capítulo utiliza a temática de Pokémon para explicar as operações em Arrays. Procurar uma poção na mochila ou organizar seus monstros exige esforço computacional!


1. 🎯 Objetivo da Aula

Compreender como funcionam as operações de Busca Linear e Inserção em Arrays, e por que elas podem ser lentas dependendo do tamanho da estrutura.

2. 🏢 O Cenário Prático (Seu Desafio)

Você está em uma batalha difícil contra o Gary. O seu Pikachu está com pouca vida. Você abre a sua mochila (que é um Array de itens) para procurar uma "Poção".

  • O problema da Busca: A mochila não está em ordem alfabética. Você precisa olhar o item 0, depois o 1, depois o 2… até achar a poção.
  • O problema da Inserção: Você acabou de capturar um Charmander e quer colocá-lo na primeira posição da sua equipe Pokémon (Array de tamanho 6). Para fazer isso, você precisa empurrar o Pikachu para a segunda posição, o Bulbasaur para a terceira… que trabalhão!

Seu desafio é entender o custo de tempo dessas operações!

3. 🧠 Fundamentos: A Teoria Traduzida

Embora o Array seja ótimo para ler um dado sabendo o índice, ele não é tão bom para outras coisas:

🔍 1. Busca Linear (Olhar um por um)

Se você não sabe em qual índice o item está, você precisa fazer uma busca linear. Você começa no índice 0 e vai comparando até achar.

  • Pior caso: Se o item for o último do Array ou não existir, você terá que olhar todos os elementos.

📥 2. Inserção (O empurra-empurra)

Arrays têm tamanho fixo e posições contíguas. Se você quer inserir um elemento no índice 0, você não pode simplesmente “esmagar” o que estava lá.

  1. Você precisa mover o último elemento para uma nova posição.
  2. Mover o penúltimo para a posição do último.
  3. E assim por diante, abrindo espaço no índice 0.

4. 📖 Exemplo Guiado: Inserindo na Equipe

Dada a equipe: ['Pikachu', 'Bulbasaur', 'Pidgey', '', '', ''] (Tamanho 6) Queremos colocar 'Charmander' no início (Índice 0).

  1. Move 'Pidgey' para o índice 3.
  2. Move 'Bulbasaur' para o índice 2.
  3. Move 'Pikachu' para o índice 1.
  4. Coloca 'Charmander' no índice 0. Resultado: ['Charmander', 'Pikachu', 'Bulbasaur', 'Pidgey', '', '']

5. 🛠️ Prática Obrigatória 1: O Custo da Busca

Imagine que sua mochila de itens tem 100 espaços e está cheia.

  1. No melhor caso, quantas comparações você faz para achar uma Poção?
  2. No pior caso, quantas comparações você faz?
  3. E se a Poção não estiver na mochila, quantas comparações você fez?

6. 🛠️ Prática Obrigatória 2: Simulando a Inserção

Dada a lista de Pokémons: ['Mewtwo', 'Lucario', 'Gengar']. Escreva o passo a passo (como no exemplo guiado) para inserir o 'Eevee' na posição 1 (no meio da lista).


7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 03 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_03_operacoes_arrays.md
│   └── codigos/
│       └── cap03/
│           └── mochila_pokemon.txt

9. 💡 Checkpoint de Lógica

Inserir um elemento no final do Array (onde tem espaço vazio) exige empurrar os outros elementos?

10. 🔥 Desafio de Fixação

Pesquise o que é a Busca Binária e por que ela só funciona se o Array estiver ordenado.

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

  1. Melhor caso: 1 comparação (se estiver logo na primeira posição).
  2. Pior caso: 100 comparações (se estiver na última posição).
  3. Se não estiver: 100 comparações (você precisou olhar todos para ter certeza de que não estava lá).

Capitulo Anterior | Proximo Capitulo