Capítulo 06: Matrizes (Arrays Bidimensionais) 🔴⚪

Neste capítulo, vamos aprender a armazenar dados em formato de grade (tabela) usando as Matrizes em Go, com o tema Pokémon!


📖 O que são Matrizes?

Uma matriz é um array de arrays. Ou seja, é uma estrutura de dados com duas dimensões: linhas e colunas. No Go, declaramos especificando o tamanho de cada dimensão.


📖 Exemplo Guiado: Mapa de Grama Alta

Vamos criar uma matriz 3x3 que representa um pequeno mapa de grama alta. Onde tiver o número 1, significa que há um Pokémon selvagem escondido!

  1. Crie o arquivo mapa_pokemon.go na pasta src/:
package main
 
import "fmt"
 
func main() {
    // Criando uma matriz 3x3 de inteiros
    mapa := [3][3]int{
        {0, 1, 0},
        {0, 0, 1},
        {1, 0, 0},
    }
 
    fmt.Println("--- Mapa de Grama Alta ---")
    
    // Percorrendo a matriz com laços for tradicionais
    for i := 0; i < 3; i++ {
        for j := 0; j < 3; j++ {
            if mapa[i][j] == 1 {
                fmt.Print("[P] ") // P de Pokémon
            } else {
                fmt.Print("[ ] ") // Grama vazia
            }
        }
        fmt.Println() // Quebra de linha ao fim de cada linha da matriz
    }
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Execute: go run mapa_pokemon.go

Resultado Esperado:

--- Mapa de Grama Alta ---
[ ] [P] [ ] 
[ ] [ ] [P] 
[P] [ ] [ ] 

📊 Ilustração Visual: Grade da Matriz

Veja como os índices de linha e coluna localizam os elementos:

graph TD
    subgraph "Matriz 3x3"
    A["[0][0]"] --- B["[0][1] (P)"] --- C["[0][2]"]
    D["[1][0]"] --- E["[1][1]"] --- F["[1][2] (P)"]
    G["[2][0] (P)"] --- H["[2][1]"] --- I["[2][2]"]
    end

🛠️ Prática Obrigatória 1: Batalha Naval Pokémon

Crie um programa chamado batalha_pokedex.go que tenha a mesma matriz do exemplo. O programa deve usar variáveis fixas para linha e coluna e dizer se encontrou um Pokémon ou não naquela posição.


🔑 Gabarito de Código

Prática 1: batalha_pokedex.go

package main
 
import "fmt"
 
func main() {
    mapa := [3][3]int{
        {0, 1, 0},
        {0, 0, 1},
        {1, 0, 0},
    }
 
    linha := 1
    coluna := 2
 
    fmt.Println("Consultando posicao [", linha, "][", coluna, "]...")
 
    if mapa[linha][coluna] == 1 {
        fmt.Println("Incrivel! Voce encontrou um Pokemon selvagem!")
    } else {
        fmt.Println("Nada por aqui... Continue procurando.")
    }
}

Capitulo Anterior | Proximo Capitulo