Laços de Repetição: For e While

Os laços de repetição, também conhecidos como estruturas de iteração, são ferramentas fundamentais na programação. Eles nos permitem executar um bloco de código repetidamente, economizando tempo e tornando o código mais conciso. Nesta página, vamos explorar os dois tipos mais comuns: for e while, com exemplos práticos em JavaScript.

Laço for

O laço for é ideal quando sabemos de antemão quantas vezes queremos que o código se repita. Ele é composto por três partes principais dentro dos parênteses, separadas por ponto e vírgula:

  1. Inicialização: Executada apenas uma vez no início do laço, geralmente para declarar e inicializar uma variável de controle.
  2. Condição: Avaliada antes de cada iteração. Se for verdadeira, o bloco de código é executado. Se for falsa, o laço termina.
  3. Incremento/Decremento: Executado após cada iteração do bloco de código, geralmente para atualizar a variável de controle.

Sintaxe Básica:

for (inicialização; condição; incremento/decremento) {
    // Código a ser executado repetidamente
}

Exemplo Prático com for: Contando de 1 a 5

Este exemplo demonstra como o laço for pode ser usado para imprimir números de 1 a 5 no console.

for (let i = 1; i <= 5; i++) {
    console.log("Número: " + i);
}

/*
Saída no console:
Número: 1
Número: 2
Número: 3
Número: 4
Número: 5
*/

Neste exemplo:

Exemplo Prático com for: Iterando por um Array

O laço for também é muito útil para percorrer elementos de um array.

let frutas = ["Maçã", "Banana", "Laranja", "Uva"];

for (let i = 0; i < frutas.length; i++) {
    console.log("Eu gosto de " + frutas[i]);
}

/*
Saída no console:
Eu gosto de Maçã
Eu gosto de Banana
Eu gosto de Laranja
Eu gosto de Uva
*/

Laço while

O laço while é usado quando não sabemos de antemão quantas vezes o código precisa se repetir. Ele continua executando um bloco de código enquanto uma determinada condição for verdadeira. A condição é avaliada antes de cada execução do bloco.

Sintaxe Básica:

while (condição) {
    // Código a ser executado repetidamente
    // É crucial ter algo dentro do bloco que mude a condição para 'false'
    // para evitar um loop infinito!
}

Exemplo Prático com while: Contando de 1 a 5

O mesmo exemplo de contar de 1 a 5 pode ser implementado com while.

let contador = 1;

while (contador <= 5) {
    console.log("Contador: " + contador);
    contador++; // Lembre-se de incrementar a variável de controle!
}

/*
Saída no console:
Contador: 1
Contador: 2
Contador: 3
Contador: 4
Contador: 5
*/

Neste exemplo:

Exemplo Prático com while: Loop com Validação de Entrada (Simulado)

Um uso comum para o while é para validar entradas de usuário, repetindo a solicitação até que uma entrada válida seja fornecida. Para demonstrar isso sem interação real do usuário no HTML, simularemos a entrada.

let idade = 0; // Valor inicial inválido

// Função para simular a obtenção de idade (em um cenário real, seria 'prompt' ou 'input')
const obterIdadeSimulada = (tentativaAtual) => {
    if (tentativaAtual === 1) return 10; // Primeira "tentativa" (inválida)
    if (tentativaAtual === 2) return 16; // Segunda "tentativa" (inválida)
    if (tentativaAtual === 3) return 20; // Terceira "tentativa" (válida)
    return 0; // Caso fallback
};

let tentativa = 0;
while (idade < 18) {
    tentativa++;
    idade = obterIdadeSimulada(tentativa); // Simula a obtenção de entrada do usuário
    if (idade < 18) {
        console.log("Você precisa ter pelo menos 18 anos para continuar. Sua idade: " + idade + ". Tentativa " + tentativa + ": Por favor, insira novamente.");
    }
}
console.log("Idade válida inserida: " + idade + ". Bem-vindo!");

/*
Saída no console (simulada):
Você precisa ter pelo menos 18 anos para continuar. Sua idade: 10. Tentativa 1: Por favor, insira novamente.
Você precisa ter pelo menos 18 anos para continuar. Sua idade: 16. Tentativa 2: Por favor, insira novamente.
Idade válida inserida: 20. Bem-vindo!
*/

Neste exemplo, o laço while continua "pedindo" a idade (simuladamente) até que um valor maior ou igual a 18 seja fornecido, demonstrando um cenário de validação.

Quando usar for ou while?

Ambos os laços são poderosos e, em muitos casos, um pode ser reescrito usando o outro. A escolha geralmente se resume à clareza e legibilidade do código para a situação específica.

```