Skip to main content

šŸ“˜ LaƧos de Repetição (for, while, do...while)

Os laços de repetição são estruturas fundamentais da programação, utilizadas para executar um mesmo conjunto de instruções diversas vezes, de forma automÔtica e controlada.

Em JavaScript, existem diferentes estruturas de repetição, cada uma adequada para situações específicas. A escolha do laço depende da forma como o número de repetições é conhecido e de como a condição de parada deve ser avaliada.

Neste capítulo serão apresentados os principais laços de repetição da linguagem JavaScript:

  • for
  • while
  • do...while
  • for...of

Inicialmente serão estudados exemplos utilizando variÔveis numéricas para compreender o funcionamento bÔsico de cada estrutura. Em seguida, esses mesmos laços serão aplicados na manipulação de arrays, demonstrando como percorrer coleções de dados de maneira eficiente.

Ao final deste capítulo, você compreenderÔ quando utilizar cada tipo de laço e quais são suas principais características.


šŸŽÆ Objetivos de Aprendizagem

Ao concluir este capĆ­tulo, vocĆŖ serĆ” capaz de:

  • compreender o funcionamento dos principais laƧos de repetição da linguagem JavaScript;
  • identificar as diferenƧas entre os laƧos for, while e do...while;
  • utilizar o laƧo for...of para percorrer elementos de um array;
  • controlar repetiƧƵes utilizando condiƧƵes e variĆ”veis de controle;
  • percorrer arrays utilizando diferentes estruturas de repetição;
  • identificar situaƧƵes em que cada tipo de laƧo Ć© mais adequado.

Introdução aos LaƧos de Repetição​

Os laços de repetição permitem executar um bloco de código diversas vezes enquanto uma determinada condição for satisfeita.

Em vez de escrever vÔrias instruções semelhantes, o programador define uma única estrutura de repetição, indicando:

  • o ponto de inĆ­cio da repetição;
  • a condição para continuar executando;
  • a forma de atualização da variĆ”vel de controle.

Observe, a seguir, um exemplo utilizando os três principais laços de repetição disponíveis em JavaScript: for, while e do...while. Esses exemplos servirão como base para compreender as diferenças entre cada estrutura antes de aplicÔ-las em situações mais complexas.


LaƧos de Repetição BĆ”sicos​

Os primeiros exemplos deste capítulo apresentam os três principais laços de repetição disponíveis na linguagem JavaScript.

Embora todos permitam executar um bloco de código diversas vezes, cada estrutura possui características específicas e é indicada para diferentes situações.

Observe o código a seguir.


šŸ’» Código Completo​

Arquivo: lacos.js

console.log("LaƧo for:");

for (let i = 1; i <= 5; i++) {
console.log("Valor de i:", i);
}

console.log("LaƧo while:");

let j = 1;

while (j <= 5) {
console.log("Valor de j:", j);
j++;
}

console.log("LaƧo do...while:");

let k = 5;

do {
console.log("Valor de k:", k);
k--;
} while (k >= 1);

šŸ“˜ ComentĆ”rios e ExplicaƧƵes Linha a Linha​

Linhas 01–05​

console.log("LaƧo for:");

for (let i = 1; i <= 5; i++) {
console.log("Valor de i:", i);
}

O primeiro exemplo apresenta o funcionamento do laƧo for.

Inicialmente, é exibida uma mensagem no console indicando qual estrutura de repetição serÔ executada.

Em seguida, o laço é declarado utilizando três elementos fundamentais:

  • Inicialização: let i = 1;
  • Condição: i <= 5;
  • Incremento: i++.

Enquanto a condição permanecer verdadeira, o bloco de código serÔ executado.

Como resultado, serão exibidos os valores de 1 até 5.


Linhas 07–14​

console.log("LaƧo while:");

let j = 1;

while (j <= 5) {
console.log("Valor de j:", j);
j++;
}

O segundo exemplo demonstra a utilização do laço while.

Inicialmente, é criada a variÔvel j, que serÔ utilizada como variÔvel de controle da repetição.

O comando while verifica a condição antes da execução de cada iteração.

Enquanto j <= 5, o bloco serÔ executado e, ao final de cada repetição, o comando j++ incrementa a variÔvel, permitindo que a condição seja reavaliada.

Assim como no exemplo anterior, o programa exibirÔ os números de 1 até 5.


Linhas 16–23​

console.log("LaƧo do...while:");

let k = 5;

do {
console.log("Valor de k:", k);
k--;
} while (k >= 1);

O terceiro exemplo apresenta o funcionamento do laƧo do...while.

A variƔvel k Ʃ inicializada com o valor 5.

Diferentemente dos demais laços, o bloco de código é executado antes da verificação da condição de repetição.

Após cada execução, a condição k >= 1 é avaliada. Enquanto ela permanecer verdadeira, o bloco continuarÔ sendo executado.

Neste exemplo, o valor de k é decrementado utilizando k--, fazendo com que sejam exibidos os números de 5 até 1.



šŸ“Œ Conceitos-Chave Envolvidos​

ConceitoExplicação
forLaƧo de repetição com controle por Ć­ndice. Ɖ recomendado quando a quantidade de repetiƧƵes Ć© conhecida previamente.
whileLaço que executa um bloco de código enquanto uma condição permanecer verdadeira. A condição é verificada antes de cada repetição.
do...whileLaço que executa o bloco de código ao menos uma vez antes de verificar a condição de repetição.
console.log()Função utilizada para exibir informações no console durante a execução do programa.
letPalavra-chave utilizada para declarar variƔveis com escopo de bloco.
i++Operador de incremento que aumenta o valor da variÔvel em uma unidade a cada repetição.
k--Operador de decremento que reduz o valor da variÔvel em uma unidade a cada repetição.

LaƧos de Repetição Aplicados a Arrays​

Os laços de repetição tornam-se ainda mais úteis quando utilizados para percorrer coleções de dados, como os arrays.

Nesta seção, serão apresentados exemplos utilizando os mesmos laços estudados anteriormente (for, while e do...while), além do laço for...of, que foi projetado especificamente para percorrer os elementos de estruturas iterÔveis.

Observe o código a seguir.


šŸ’» Código Completo​

Arquivo: lacosarray.js

let frutas = ["maçã", "banana", "laranja", "uva", "melancia"];

console.log("FOR:");

for (let i = 0; i < frutas.length; i++) {
console.log(`Fruta na posição ${i}: ${frutas[i]}`);
}

console.log("WHILE:");

let j = 0;

while (j < frutas.length) {
console.log(`Fruta na posição ${j}: ${frutas[j]}`);
j++;
}

console.log("DO...WHILE:");

let k = 0;

do {
console.log(`Fruta na posição ${k}: ${frutas[k]}`);
k++;
} while (k < frutas.length);

console.log("FOR...OF:");

for (let fruta of frutas) {
console.log("Fruta:", fruta);
}

šŸ“˜ ComentĆ”rios e ExplicaƧƵes Linha a Linha​

Linhas 01–07​

let frutas = ["maçã", "banana", "laranja", "uva", "melancia"];

console.log("FOR:");

for (let i = 0; i < frutas.length; i++) {
console.log(`Fruta na posição ${i}: ${frutas[i]}`);
}

Inicialmente, Ć© criado o array frutas, contendo cinco elementos do tipo string.

Em seguida, o programa utiliza o laƧo for para percorrer todos os elementos armazenados.

A variÔvel i representa o índice do array e inicia com o valor 0, correspondente à posição do primeiro elemento.

A condição:

i < frutas.length

mantém o laço em execução enquanto o índice for menor que a quantidade de elementos do array.

A cada repetição, i++ incrementa a variÔvel de controle, permitindo acessar o próximo elemento.

A template string utilizada no console.log() exibe tanto a posição quanto o conteúdo armazenado:

`Fruta na posição ${i}: ${frutas[i]}`

Linhas 09–16​

console.log("WHILE:");

let j = 0;

while (j < frutas.length) {
console.log(`Fruta na posição ${j}: ${frutas[j]}`);
j++;
}

Este bloco percorre o mesmo array utilizando o laƧo while.

A variÔvel j é inicializada com o valor 0 antes do início da repetição.

Enquanto a condição:

j < frutas.length

for verdadeira, o elemento armazenado na posição j serÔ exibido.

Ao final de cada repetição, o comando:

j++;

incrementa a variÔvel, permitindo avançar para a próxima posição do array.

O resultado é equivalente ao obtido com o laço for, embora a inicialização, a condição e o incremento estejam organizados separadamente.


Linhas 18–25​

console.log("DO...WHILE:");

let k = 0;

do {
console.log(`Fruta na posição ${k}: ${frutas[k]}`);
k++;
} while (k < frutas.length);

Neste trecho, o array Ʃ percorrido utilizando o laƧo do...while.

A variƔvel k Ʃ inicializada com o valor 0.

O bloco iniciado por do é executado antes da verificação da condição. Por essa razão, essa estrutura sempre realiza pelo menos uma repetição.

Após exibir o elemento atual, o comando:

k++;

incrementa a variƔvel de controle.

Em seguida, a condição:

k < frutas.length

Ć© avaliada. O processo continua enquanto ainda existirem elementos a serem percorridos.


Linhas 27–31​

console.log("FOR...OF:");

for (let fruta of frutas) {
console.log("Fruta:", fruta);
}

O último bloco utiliza o laço for...of para percorrer diretamente os elementos do array.

A cada repetição, a variÔvel fruta recebe um dos valores armazenados em frutas.

Diferentemente dos exemplos anteriores, essa estrutura não utiliza índices nem a propriedade length.

O for...of Ʃ especialmente indicado quando o objetivo Ʃ acessar diretamente os elementos de um array, sem a necessidade de conhecer suas posiƧƵes.


šŸ“Œ Conceitos-Chave Envolvidos​

ConceitoExplicação
ArrayEstrutura utilizada para armazenar vÔrios valores em uma única variÔvel.
forLaço de repetição tradicional, utilizado para percorrer o array por meio de índices.
whileExecuta o bloco de código enquanto a condição permanecer verdadeira.
do...whileExecuta o bloco de código antes de verificar a condição, garantindo ao menos uma repetição.
for...ofPercorre diretamente os elementos de um array, sem utilizar Ć­ndices.
frutas.lengthRetorna a quantidade de elementos armazenados no array frutas.
frutas[indice]Permite acessar o elemento armazenado em uma posição específica do array.
console.log()Exibe informações no console durante a execução do programa.
Template stringSintaxe delimitada por crases que permite inserir expressƵes utilizando ${...}.
Incremento ++Aumenta o valor da variÔvel de controle em uma unidade a cada repetição.

šŸ’” Dicas do Professor​

Utilize o laƧo for quando a quantidade de repetiƧƵes for conhecida.

Esse laço é indicado quando existe um controle definido de início, condição e incremento, como ao percorrer os índices de um array.

Utilize o laço while quando não for possível determinar previamente a quantidade de repetições.

Como a condição é verificada antes da execução do bloco, o laço poderÔ não ser executado nenhuma vez.

Utilize o laƧo do...while quando o bloco precisar ser executado ao menos uma vez.

Nesse caso, a condição somente serÔ verificada após a primeira execução.

Utilize for...of para acessar diretamente os elementos de um array.

Essa estrutura é especialmente adequada quando não hÔ necessidade de utilizar o índice de cada elemento.

Atualize sempre a variƔvel de controle.

Nos laços while e do...while, a ausência de incremento ou decremento pode provocar uma repetição infinita.

Utilize a propriedade length para controlar o percurso do array.

Dessa forma, o código continuarÔ funcionando mesmo que novos elementos sejam adicionados ou removidos.


šŸ’” Resumo Final​

Neste capítulo foram apresentados os principais laços de repetição disponíveis na linguagem JavaScript, utilizados para executar um mesmo bloco de código diversas vezes de forma controlada.

Inicialmente, foram estudados os laƧos for, while e do...while, destacando suas caracterƭsticas, diferenƧas e situaƧƵes em que cada um Ʃ mais indicado.

Em seguida, esses mesmos laços foram aplicados na manipulação de arrays, demonstrando como percorrer coleções de dados utilizando índices e a propriedade length.

Por fim, foi apresentado o laço for...of, uma estrutura moderna que permite percorrer diretamente os elementos de um array, tornando o código mais simples e legível quando não hÔ necessidade de utilizar os índices.

Ao compreender o funcionamento dessas estruturas, torna-se possível desenvolver algoritmos capazes de processar grandes quantidades de dados de forma eficiente, reduzindo a repetição de código e aumentando sua organização.


šŸ“Œ O que vocĆŖ aprendeu​

Ao concluir este capĆ­tulo, vocĆŖ deverĆ” ser capaz de:

  • compreender o funcionamento dos principais laƧos de repetição da linguagem JavaScript;
  • identificar as diferenƧas entre os laƧos for, while e do...while;
  • controlar a execução de repetiƧƵes utilizando condiƧƵes e variĆ”veis de controle;
  • percorrer arrays utilizando diferentes estruturas de repetição;
  • utilizar a propriedade length para controlar o percurso de um array;
  • acessar elementos por meio de seus Ć­ndices;
  • utilizar o laƧo for...of para percorrer diretamente os elementos de uma coleção;
  • selecionar a estrutura de repetição mais adequada para cada situação.

šŸ“š ExercĆ­cios de Fixação​