🚀 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 0Coluna 1
Linha 0C-137Dimensão Primal
Linha 1Dimensão B-12Cronenberg 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

  1. Abra o VS Code.
  2. Pressione as teclas Ctrl + Shift + P para abrir a Paleta de Comandos.
  3. Digite Java: Create Java Project e pressione Enter.
  4. Selecione a opção No build tools.
  5. Escolha uma pasta e digite o nome do projeto: rick-projeto e pressione Enter.

📂 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:

  1. Clique com o botão direito na pasta src e crie o arquivo MapaMultiverso.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

  1. Abra o arquivo MapaMultiverso.java.
  2. 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:

EntradaSaída Esperada (Formato Grade)
1 2 3 4 5 6 7 8 91 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:

EntradaSaída Esperada
1 2 3 4 5 6 7 8 9Soma 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:

  1. Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
  2. Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
  3. Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
  4. 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).
  5. 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.
  6. ⚠️ 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.
  7. 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!

📂 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();
    }
}

Capitulo Anterior | Proximo Capitulo