Capítulo 06: Matrizes (Arrays Bidimensionais) 🔴⚪
Neste capítulo, vamos aprender a armazenar dados em formato de grade (tabela) usando as Matrizes em Rust, 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 Rust, declaramos especificando o tipo e 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!
- Crie o arquivo
mapa_pokemon.rsna pastasrc/:
fn main() {
// Criando uma matriz 3x3 de inteiros
let mapa: [[i32; 3]; 3] = [
[0, 1, 0],
[0, 0, 1],
[1, 0, 0]
];
println!("--- Mapa de Grama Alta ---");
// Percorrendo a matriz com laços
for i in 0..3 {
for j in 0..3 {
if mapa[i][j] == 1 {
print!("[P] "); // P de Pokémon
} else {
print!("[ ] "); // Grama vazia
}
}
println!(); // Quebra de linha ao fim de cada linha da matriz
}
}🕹️ Como Executar e Testar no VS Code
- Abra le terminal integrado.
- Compile:
rustc mapa_pokemon.rs - 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.rs que tenha a mesma matriz do exemplo. O programa deve usar variáveis fixas para linha e coluna (ou ler do teclado se quiser o desafio) e dizer se encontrou um Pokémon ou não.
🔑 Gabarito de Código
Prática 1: batalha_pokedex.rs
fn main() {
let mapa: [[i32; 3]; 3] = [
[0, 1, 0],
[0, 0, 1],
[1, 0, 0]
];
let linha = 1;
let coluna = 2;
println!("Consultando posicao [{}][{}]...", linha, coluna);
if mapa[linha][coluna] == 1 {
println!("Incrivel! Voce encontrou um Pokemon selvagem!");
} else {
println!("Nada por aqui... Continue procurando.");
}
}