🚀 Capítulo 08: Tabelas Hash (Dicionários) (Tema: Sherlock Holmes)
NOTE
Este capítulo utiliza a temática de Sherlock Holmes para explicar as Tabelas Hash. Para encontrar o culpado instantaneamente, você precisa de um sistema que não exija ler todos os arquivos!
1. 🎯 Objetivo da Aula
Compreender o conceito de Tabela Hash (Dicionário), como funciona uma Função Hash e a vantagem da busca por chave-valor com tempo quase instantâneo.
2. 🏢 O Cenário Prático (Seu Desafio)
Sherlock Holmes tem um arquivo com a ficha de 1.000 suspeitos em Londres.
- Se ele guardar tudo em um Array (Mochila do Pokémon), para achar o “Moriarty” ele precisa ler ficha por ficha até encontrar. Isso é muito lento!
- Ele precisa de um sistema onde ele diga o nome
"Moriarty"e o próprio sistema diga: “A ficha dele está na gaveta 45”.
Esse sistema existe na computação e se chama Tabela Hash (ou Dicionário). Seu desafio é entender a mágica por trás da função que calcula o número da gaveta!
3. 🧠 Fundamentos: A Teoria Traduzida
A Tabela Hash guarda os dados em pares de Chave-Valor.
- Chave: O identificador único (Ex: O nome do suspeito).
- Valor: O dado completo (Ex: A ficha com os crimes).
🧮 1. A Função Hash
É o cérebro da estrutura. É uma fórmula matemática que recebe a Chave (Texto) e cospe um Número (O índice do Array onde o valor será guardado).
- Exemplo: A função lê a palavra “Moriarty”, faz um cálculo e retorna o número
45. O computador guarda a ficha do Moriarty direto na posição 45 do Array. - Na hora de buscar, o computador passa “Moriarty” na mesma função, ela retorna
45de novo, e ele vai direto lá ler! Não precisa procurar.
⚡ 2. Eficiência O(1)
Como o acesso é direto pelo índice calculado, a busca, inserção e deleção demoram sempre o mesmo tempo, não importa se temos 10 ou 10 milhões de suspeitos!
4. 📖 Exemplo Guiado: Uma Função Hash Simples
Vamos criar uma função hash que soma o número de letras da palavra.
- Chave:
"Watson"→ 6 letras. Guardamos na gaveta 6. - Chave:
"Irene"→ 5 letras. Guardamos na gaveta 5.
Para buscar a ficha da Irene, basta contar as letras (5) e ir direto na gaveta 5!
5. 🛠️ Prática Obrigatória 1: Calculando o Hash
Usando a nossa função hash simples (contar o número de letras), calcule em qual gaveta ficariam guardados os dados dos seguintes suspeitos:
"Sherlock""Lestrade""Hudson"
6. 🛠️ Prática Obrigatória 2: O Problema das Palavras Iguais
O que acontece na nossa função hash simples se tentarmos guardar os dados do suspeito "Holmes"? (Dica: Conte as letras e olhe o Exemplo Guiado). O que aconteceu com a gaveta?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 08 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_08_hash_tables.md
│ └── codigos/
│ └── cap08/
│ └── dicionario_suspeitos.js9. 💡 Checkpoint de Lógica
As Tabelas Hash garantem que os dados fiquem guardados em ordem alfabética? Por quê?
10. 🔥 Desafio de Fixação
Pesquise o que é uma Colisão em tabelas hash (veremos isso no próximo capítulo!).
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
"Sherlock"→ 8 letras. Gaveta 8."Lestrade"→ 8 letras. Gaveta 8."Hudson"→ 6 letras. Gaveta 6.