🚀 Capítulo 06: Matrizes
🎯 Objetivo da Aula
Ao final desta aula, você será capaz de declarar, inicializar e manipular Matrizes (Arrays Bidimensionais) em Java, compreendendo como armazenar e processar dados organizados em linhas e colunas.
🏢 O Cenário Prático (Seu Desafio)
Rick Sanchez (de Rick and Morty) está mapeando o Multiverso com sua arma de portais. Ele usa uma grade de coordenadas (linhas e colunas) para identificar as diferentes dimensões. O seu desafio é criar um programa que armazene os nomes dessas dimensões em uma matriz e permita visualizar o mapa do multiverso.
🧠 Fundamentos: A Teoria Traduzida
Uma Matriz é simplesmente uma tabela de dados organizada em linhas e colunas (um vetor de vetores). Pense nela como uma planilha do Excel ou um tabuleiro de xadrez.
Analogia: O Multiverso do Rick é uma grade infinita de realidades. Para viajar para a Dimensão C-137, ele precisa saber exatamente qual a linha e a coluna dessa dimensão na grade do multiverso.
Estrutura de uma Matriz (2x2)
| Coluna 0 | Coluna 1 | |
|---|---|---|
| Linha 0 | C-137 | Dimensão Primal |
| Linha 1 | Dimensão B-12 | Cronenberg World |
📖 Exemplo Guiado
Vamos criar o programa MapaMultiverso.java para ver como criar e exibir uma matriz de textos.
🛠️ Passo a Passo para Criar o Projeto no VS Code
- Abra o VS Code.
- Pressione as teclas
Ctrl + Shift + Ppara abrir a Paleta de Comandos. - Digite
Java: Create Java Projecte pressioneEnter. - Selecione a opção
No build tools. - Escolha uma pasta e digite o nome do projeto:
rick-projetoe pressioneEnter.
📂 Estrutura Inicial de Pastas
rick-projeto/
├── lib/
└── src/
└── App.java (pode apagar este arquivo)Siga os passos para criar o novo arquivo dentro da pasta src:
- Clique com o botão direito na pasta
srce crie o arquivoMapaMultiverso.java:
public class MapaMultiverso {
public static void main(String[] args) {
// Declaramos uma matriz de Strings com 2 linhas e 2 colunas
String[][] grade = new String[2][2];
// Preenchendo a matriz [linha][coluna]
grade[0][0] = "C-137";
grade[0][1] = "Dimensão Primal";
grade[1][0] = "Dimensão B-12";
grade[1][1] = "Cronenberg World";
System.out.println("Mapeando o Multiverso:");
// Usamos dois laços 'for' (aninhados) para percorrer a matriz
for (int i = 0; i < 2; i++) { // Percorre as linhas
for (int j = 0; j < 2; j++) { // Percorre as colunas
System.out.println("Coordenada [" + i + "][" + j + "]: " + grade[i][j]);
}
}
}
}🕹️ Como Executar e Testar no VS Code
- Abra o arquivo
MapaMultiverso.java. - Clique em Run logo acima do método
main.
Resultado Esperado:
Mapeando o Multiverso:
Coordenada [0][0]: C-137
Coordenada [0][1]: Dimensão Primal
Coordenada [1][0]: Dimensão B-12
Coordenada [1][1]: Cronenberg World🛠️ Prática Obrigatória 1
Crie um programa chamado NivelAnomalia.java. O programa deve ler do teclado uma matriz de inteiros de tamanho 3x3 que representa o nível de anomalia alienígena em cada coordenada do multiverso. Depois de ler os dados, o programa deve exibir a matriz na tela em formato de grade (tabela).
Resultado Esperado:
| Entrada | Saída Esperada (Formato Grade) |
|---|---|
| 1 2 3 4 5 6 7 8 9 | 1 2 3 |
| 4 5 6 | |
| 7 8 9 |
🛠️ Prática Obrigatória 2
Crie um programa chamado TotalAnomalias.java. Usando a matriz preenchida na Prática 1, utilize laços de repetição para calcular e exibir a soma de todos os níveis de anomalia presentes na grade.
Resultado Esperado:
| Entrada | Saída Esperada |
|---|---|
| 1 2 3 4 5 6 7 8 9 | Soma total das anomalias: 45 |
📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
Neste curso, você entregará suas atividades enviando o código para o seu repositório no GitHub usando o aplicativo GitHub Desktop. Siga o passo a passo detalhado:
- Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
- Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
- Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
- Faça o Commit:
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
Finaliza atividades do Capítulo 06. - Clique no botão azul Commit to main (ou o nome da sua branch).
- No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex:
- Envie para a Nuvem (Push): No topo da tela, clique no botão Push origin. Isso enviará seu código do seu computador para o seu perfil no GitHub.
- ⚠️ IMPORTANTE (Repositório Público): Para que o professor consiga corrigir, o seu repositório no GitHub DEVE SER PÚBLICO. Repositórios privados não podem ser visualizados por quem não foi convidado.
- Como entregar no Microsoft Teams:
- Copie o link do seu repositório no GitHub (ex:
https://github.com/seu-usuario/seu-repositorio). - Abra a tarefa correspondente no Microsoft Teams.
- Clique no botão Adicionar trabalho (ou Add work).
- Selecione a opção Link no menu lateral.
- Cole o link do GitHub no campo “Endereço Web” e digite um texto (ex:
Meu Repositório) no campo “Texto a ser exibido”. - Clique em Anexar.
- MUITO IMPORTANTE: Clique no botão Entregar (ou Turn in) no canto superior direito para concluir o envio!
- Copie o link do seu repositório no GitHub (ex:
📂 Estrutura Final de Pastas
Após concluir o exemplo e as práticas, sua estrutura de pastas deve ficar assim:
rick-projeto/
├── lib/
└── src/
├── MapaMultiverso.java
├── NivelAnomalia.java
└── TotalAnomalias.java💡 Checkpoint de Lógica
O que você acabou de fazer é a base para o processamento de imagens (onde cada pixel é uma célula de uma matriz) e jogos 2D (onde o mapa é uma grande matriz de blocos). Você está manipulando dados em múltiplas dimensões!
🔥 Desafio de Fixação (Opcional)
Crie um programa que busque na matriz da Prática 1 se existe algum nível de anomalia igual a 0. Se houver, exiba a mensagem: “Dimensão Segura Encontrada!“.
🔑 Gabarito de Código/Fórmulas
Prática 1:
import java.util.Scanner;
public class NivelAnomalia {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] matriz = new int[3][3];
// Leitura
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print("Anomalia [" + i + "][" + j + "]: ");
matriz[i][j] = sc.nextInt();
}
}
System.out.println("Grade de Anomalias:");
// Exibição em formato de grade
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(matriz[i][j] + " ");
}
System.out.println(); // Quebra de linha ao fim de cada linha da matriz
}
sc.close();
}
}Prática 2:
import java.util.Scanner;
public class TotalAnomalias {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] matriz = new int[3][3];
int soma = 0;
// Leitura e Soma simultâneas
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matriz[i][j] = sc.nextInt();
soma += matriz[i][j];
}
}
System.out.println("Total de Anomalias: " + soma);
sc.close();
}
}Desafio:
import java.util.Scanner;
public class BuscaSegura {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] matriz = new int[3][3];
boolean encontrou = false;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
matriz[i][j] = sc.nextInt();
if (matriz[i][j] == 0) {
encontrou = true;
}
}
}
if (encontrou) {
System.out.println("Dimensão Segura Encontrada!");
}
sc.close();
}
}