🚀 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
- 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:
batalha-projetoe pressioneEnter.
📂 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:
- Clique com o botão direito na pasta
srce crie o arquivoContagemLegolas.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
- Abra o arquivo
ContagemLegolas.java. - 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:
| Entrada | Saída Esperada |
|---|---|
| 3 | Gimli 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:
| Entrada | Saí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:
- 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 04. - 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:
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();
}
}