🚀 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á.
- Você precisa mover o último elemento para uma nova posição.
- Mover o penúltimo para a posição do último.
- 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).
- Move
'Pidgey'para o índice 3. - Move
'Bulbasaur'para o índice 2. - Move
'Pikachu'para o índice 1. - 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.
- No melhor caso, quantas comparações você faz para achar uma Poção?
- No pior caso, quantas comparações você faz?
- 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)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 03 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_03_operacoes_arrays.md
│ └── codigos/
│ └── cap03/
│ └── mochila_pokemon.txt9. 💡 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:
- Melhor caso: 1 comparação (se estiver logo na primeira posição).
- Pior caso: 100 comparações (se estiver na última posição).
- Se não estiver: 100 comparações (você precisou olhar todos para ter certeza de que não estava lá).