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!
- Crie o arquivo
mapa_pokemon.cppna pastasrc/:
#include <iostream>
using namespace std;
int main() {
// Criando uma matriz 3x3
int mapa[3][3] = {
{0, 1, 0},
{0, 0, 1},
{1, 0, 0}
};
cout << "--- Mapa de Grama Alta ---" << endl;
// 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) {
cout << "[P] "; // P de Pokémon
} else {
cout << "[ ] "; // Grama vazia
}
}
cout << endl; // Quebra de linha ao fim de cada linha da matriz
}
return 0;
}🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado.
- Compile:
g++ mapa_pokemon.cpp -o mapa_pokemon - 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.cpp 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.cpp
#include <iostream>
using namespace std;
int main() {
int mapa[3][3] = {
{0, 1, 0},
{0, 0, 1},
{1, 0, 0}
};
int linha, coluna;
cout << "Digite a linha (0 a 2): ";
cin >> linha;
cout << "Digite a coluna (0 a 2): ";
cin >> coluna;
if (linha < 0 || linha > 2 || coluna < 0 || coluna > 2) {
cout << "Coordenadas invalidas!" << endl;
} else if (mapa[linha][coluna] == 1) {
cout << "Incrivel! Voce encontrou um Pokemon selvagem!" << endl;
} else {
cout << "Nada por aqui... Continue procurando." << endl;
}
return 0;
}📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)