Loops

Loops permitem que programas repitam certas operações. Esta lição cobre as estruturas de loop em Java.

Loop for

O loop for é a estrutura de loop mais comumente usada, ideal quando o número de iterações é conhecido.

Sintaxe

JAVA
for (inicialização; condição; atualização) {
    // Corpo do loop
}

Exemplo: Imprimir 1 a 10

JAVA
public class ForDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            System.out.println(i);
        }
    }
}
▶ Experimente

Fluxo de Execução

TEXT
1. Executar inicialização (int i = 1)
2. Verificar condição (i <= 10)
3. Se condição for verdadeira, executar corpo do loop
4. Executar atualização (i++)
5. Voltar ao passo 2

Exemplo: Soma de 1 a 100

JAVA
public class SumDemo {
    public static void main(String[] args) {
        int sum = 0;
        
        for (int i = 1; i <= 100; i++) {
            sum += i;
        }
        
        System.out.println("Soma de 1 a 100: " + sum);  // 5050
    }
}
▶ Experimente

Loop while

O loop while é ideal quando o número de iterações é desconhecido.

Sintaxe

JAVA
while (condição) {
    // Corpo do loop
}

Exemplo: Jogo de Adivinhação de Números

JAVA
import java.util.Scanner;
import java.util.Random;

public class GuessGame {
    public static void main(String[] args) {
        Random random = new Random();
        int target = random.nextInt(100) + 1;
        Scanner scanner = new Scanner(System.in);
        int guess = 0;
        
        System.out.println("Jogo de Adivinhação de Números (1-100)");
        
        while (guess != target) {
            System.out.print("Digite seu palpite: ");
            guess = scanner.nextInt();
            
            if (guess > target) {
                System.out.println("Muito alto!");
            } else if (guess < target) {
                System.out.println("Muito baixo!");
            } else {
                System.out.println("Parabéns! Você acertou!");
            }
        }
        
        scanner.close();
    }
}
▶ Experimente

Loop do-while

O loop do-while executa o corpo do loop pelo menos uma vez.

Sintaxe

JAVA
do {
    // Corpo do loop
} while (condição);

Exemplo: Loop de Menu

JAVA
import java.util.Scanner;

public class MenuDemo {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int choice;
        
        do {
            System.out.println("\n=== Menu Principal ===");
            System.out.println("1. Iniciar Jogo");
            System.out.println("2. Configurações");
            System.out.println("3. Sair");
            System.out.print("Digite sua escolha: ");
            choice = scanner.nextInt();
            
            switch (choice) {
                case 1:
                    System.out.println("Iniciando jogo...");
                    break;
                case 2:
                    System.out.println("Abrindo configurações...");
                    break;
                case 3:
                    System.out.println("Adeus!");
                    break;
                default:
                    System.out.println("Escolha inválida");
            }
        } while (choice != 3);
        
        scanner.close();
    }
}
▶ Experimente
💡 while vs do-while: while verifica a condição primeiro e pode nunca executar. do-while executa primeiro e verifica depois, garantindo pelo menos uma execução.

Loop for-each

O loop for-each é usado para iterar sobre arrays ou coleções.

Sintaxe

JAVA
for (tipo variável : array ou coleção) {
    // Usar variável
}

Exemplo: Iterando um Array

JAVA
public class ForEachDemo {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        
        // Loop for regular
        for (int i = 0; i < numbers.length; i++) {
            System.out.println(numbers[i]);
        }
        
        // Loop for-each
        for (int num : numbers) {
            System.out.println(num);
        }
    }
}
▶ Experimente
💡 Quando usar: Use for-each quando precisar apenas dos elementos. Use for regular quando precisar do índice.

break e continue

break: Sair do Loop

JAVA
public class BreakDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i == 5) {
                break;  // Sair do loop quando i for igual a 5
            }
            System.out.println(i);
        }
        // Saída: 1 2 3 4
    }
}

continue: Pular Iteração Atual

JAVA
public class ContinueDemo {
    public static void main(String[] args) {
        for (int i = 1; i <= 10; i++) {
            if (i % 2 == 0) {
                continue;  // Pular números pares
            }
            System.out.println(i);
        }
        // Saída: 1 3 5 7 9
    }
}

Loops Aninhados

Loops podem ser aninhados uns dentro dos outros.

Exemplo: Tabuada de Multiplicação

JAVA
public class MultiplicationTable {
    public static void main(String[] args) {
        for (int i = 1; i <= 9; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print(j + " × " + i + " = " + (i * j) + "\t");
            }
            System.out.println();
        }
    }
}
▶ Experimente

Saída:

TEXT
1 × 1 = 1
1 × 2 = 2  2 × 2 = 4
1 × 3 = 3  2 × 3 = 6  3 × 3 = 9
...

Exemplo: Imprimir um Triângulo

JAVA
public class TriangleDemo {
    public static void main(String[] args) {
        int rows = 5;
        
        for (int i = 1; i <= rows; i++) {
            // Imprimir espaços
            for (int j = 1; j <= rows - i; j++) {
                System.out.print(" ");
            }
            // Imprimir estrelas
            for (int k = 1; k <= 2 * i - 1; k++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
▶ Experimente

Saída:

TEXT
    *
   ***
  *
 ***
*****

Loops Infinitos

Se a condição do loop for sempre verdadeira, um loop infinito é criado.

JAVA
// Exemplo de loop infinito (não faça isso)
while (true) {
    System.out.println("Loop infinito");
}

// Loop infinito correto (com condição de saída)
while (true) {
    // Ler entrada do usuário
    String input = scanner.nextLine();
    if (input.equals("sair")) {
        break;  // Sair quando o usuário digitar "sair"
    }
}

❓ Perguntas Frequentes

P: Como escolher entre for e while? R: Use for quando o número de iterações for conhecido. Use while quando for desconhecido. for é mais conciso, while é mais flexível.

P: Qual é a diferença entre break e return? R: break sai do loop atual. return sai de todo o método.

P: Como sair de múltiplos loops aninhados? R: Use break com rótulo. outer: for(...) { for(...) { break outer; } }

📖 Resumo

📝 Exercícios

  1. Soma: Calcule a soma de todos os números ímpares de 1 a 100
  2. Fatorial: Calcule o fatorial de 10 (10! = 10 × 9 × ... × 1)
  3. Tabuada: Use loops aninhados para imprimir a tabuada de multiplicação completa

Próxima Lição

Na próxima lição, aprenderemos sobre Arrays — como armazenar e operar em um grupo de dados.

100%