🚀 Capítulo 04: Estruturas Repetitivas

🎯 Objetivo da Aula

Ao final desta aula, você será capaz de utilizar as estruturas de repetição (while e for) em Java para criar programas que executam blocos de código múltiplas vezes, aplicando-as em contagens, somatórios e automações.


🏢 O Cenário Prático (Seu Desafio)

Estamos na Batalha do Abismo de Helm (O Senhor dos Anéis)! Os guerreiros Legolas e Gimli fizeram uma aposta para ver quem derrota mais orcs. O seu desafio é criar um programa que automatize a contagem de pontos de cada um deles usando laços de repetição, simulando o placar da batalha.


🧠 Fundamentos: A Teoria Traduzida

Na programação, as Estruturas Repetitivas (ou loops) servem para executar o mesmo bloco de código várias vezes sem que você precise reescrevê-lo.

  • while (Enquanto): Executa o código enquanto uma condição for verdadeira. Use quando você não sabe exatamente quantas vezes vai repetir.
  • for (Para): Executa o código um número específico de vezes. Use quando você sabe exatamente o limite da repetição.

Fluxo de Execução

flowchart TD
    A["Início"] --> B["Inicializa Contador = 1"]
    B --> C{"Contador <= Limite?"}
    C -- Sim --> D["Executa Ação (Contar Inimigo)"]
    D --> E["Incrementa Contador"]
    E --> C
    C -- Não --> F["Fim"]

📖 Exemplo Guiado

Vamos ver como Legolas usaria um laço for para contar seus primeiros 5 orcs derrotados.

🛠️ 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: batalha-projeto e pressione Enter.

📂 Estrutura Inicial de Pastas

batalha-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 ContagemLegolas.java:
public class ContagemLegolas {
    public static void main(String[] args) {
        System.out.println("Legolas iniciando contagem:");
        
        // O loop 'for' tem: (inicialização; condição; incremento)
        for (int i = 1; i <= 5; i++) {
            System.out.println("Orc número " + i + " derrotado!");
        }
        
        System.out.println("Flechas recolhidas!");
    }
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o arquivo ContagemLegolas.java.
  2. Clique em Run logo acima do método main.

Resultado Esperado:

Legolas iniciando contagem:
Orc número 1 derrotado!
Orc número 2 derrotado!
Orc número 3 derrotado!
Orc número 4 derrotado!
Orc número 5 derrotado!
Flechas recolhidas!


🛠️ Prática Obrigatória 1

Crie um programa chamado ContagemGimli.java. Use um laço while para fazer Gimli contar de 1 até um número limite que o usuário digitar no teclado.

Resultado Esperado:

EntradaSaída Esperada
3Gimli conta: 1
Gimli conta: 2
Gimli conta: 3

🛠️ Prática Obrigatória 2

Crie um programa chamado SomaBatalha.java. O programa deve ler um número N (quantidade de orcs que Legolas derrotou em uma rodada). Depois, o programa deve ler os N números inteiros (pontos de experiência de cada orc) e mostrar a soma total desses pontos. Use a estrutura for.

Resultado Esperado:

EntradaSaída Esperada
3 (quantidade)Soma total dos pontos: 150
50, 30, 70 (pontos)

📤 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 04.
    • 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:

batalha-projeto/
├── lib/
└── src/
    ├── ContagemLegolas.java
    ├── ContagemGimli.java
    └── SomaBatalha.java

💡 Checkpoint de Lógica

O que você acabou de fazer é a base do processamento de grandes volumes de dados. Quando um sistema de banco lê milhões de transações ou um jogo renderiza frames repetidamente, eles usam exatamente essa mesma lógica de repetição!


🔥 Desafio de Fixação (Opcional)

Tente fazer o programa da Prática 1 parar a contagem imediatamente se o número chegar a 42 (Uma referência ao Guia do Mochileiro das Galáxias!). Pesquise sobre o comando break em Java.


🔑 Gabarito de Código/Fórmulas

Prática 1:

import java.util.Scanner;
 
public class ContagemGimli {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Digite o limite: ");
        int limite = sc.nextInt();
        
        int i = 1;
        while (i <= limite) {
            System.out.println("Gimli conta: " + i);
            i++;
        }
        
        sc.close();
    }
}

Prática 2:

import java.util.Scanner;
 
public class SomaBatalha {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Quantos orcs? ");
        int N = sc.nextInt();
        
        int soma = 0;
        for (int i = 1; i <= N; i++) {
            System.out.print("Pontos do orc " + i + ": ");
            int pontos = sc.nextInt();
            soma += pontos;
        }
        
        System.out.println("Total de pontos: " + soma);
        
        sc.close();
    }
}

Desafio:

import java.util.Scanner;
 
public class ContagemMochileiro {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        System.out.print("Digite o limite: ");
        int limite = sc.nextInt();
        
        int i = 1;
        while (i <= limite) {
            System.out.println("Gimli conta: " + i);
            if (i == 42) {
                System.out.println("A resposta para tudo!");
                break; // Interrompe o loop
            }
            i++;
        }
        
        sc.close();
    }
}

Capitulo Anterior | Proximo Capitulo