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

Neste capítulo, vamos aprender a armazenar dados em formato de grade (tabela) usando as Matrizes, 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. É perfeita para representar tabuleiros, mapas ou qualquer dado em forma de grade.


📖 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.c na pasta src/:
#include <stdio.h>
 
int main() {
    // Criando uma matriz 3x3
    int mapa[3][3] = {
        {0, 1, 0},
        {0, 0, 1},
        {1, 0, 0}
    };
 
    printf("--- Mapa de Grama Alta ---\n");
    
    // Percorrendo a matriz com laços aninhados
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if (mapa[i][j] == 1) {
                printf("[P] "); // P de Pokémon
            } else {
                printf("[ ] "); // Grama vazia
            }
        }
        printf("\n"); // Quebra de linha ao fim de cada linha da matriz
    }
 
    return 0;
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: gcc mapa_pokemon.c -o mapa_pokemon
  3. Execute: ./mapa_pokemon

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.c que peça ao usuário para digitar uma linha e uma coluna (de 0 a 2) e diga se ele encontrou um Pokémon ou não (baseado na matriz do exemplo guiado).


🔑 Gabarito de Código

Prática 1: batalha_pokedex.c

#include <stdio.h>
 
int main() {
    int mapa[3][3] = {
        {0, 1, 0},
        {0, 0, 1},
        {1, 0, 0}
    };
    int linha, coluna;
 
    printf("Digite a linha (0 a 2): ");
    scanf("%d", &linha);
    printf("Digite a coluna (0 a 2): ");
    scanf("%d", &coluna);
 
    if (linha < 0 || linha > 2 || coluna < 0 || coluna > 2) {
        printf("Coordenadas invalidas!\n");
    } else if (mapa[linha][coluna] == 1) {
        printf("Incrivel! Voce encontrou um Pokemon selvagem!\n");
    } else {
        printf("Nada por aqui... Continue procurando.\n");
    }
 
    return 0;
}

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

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo