š 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:
forwhiledo...whilefor...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,whileedo...while; - utilizar o laƧo
for...ofpara 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ā
| Conceito | Explicação |
|---|---|
for | LaƧo de repetição com controle por Ćndice. Ć recomendado quando a quantidade de repetiƧƵes Ć© conhecida previamente. |
while | Laço que executa um bloco de código enquanto uma condição permanecer verdadeira. A condição é verificada antes de cada repetição. |
do...while | Laç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. |
let | Palavra-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ā
| Conceito | Explicação |
|---|---|
| Array | Estrutura utilizada para armazenar vÔrios valores em uma única variÔvel. |
for | LaƧo de repetição tradicional, utilizado para percorrer o array por meio de Ćndices. |
while | Executa o bloco de código enquanto a condição permanecer verdadeira. |
do...while | Executa o bloco de código antes de verificar a condição, garantindo ao menos uma repetição. |
for...of | Percorre diretamente os elementos de um array, sem utilizar Ćndices. |
frutas.length | Retorna 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 string | Sintaxe 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
forquando 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
whilequando 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...whilequando 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...ofpara 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
whileedo...while, a ausência de incremento ou decremento pode provocar uma repetição infinita.
Utilize a propriedade
lengthpara 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,whileedo...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
lengthpara controlar o percurso de um array; - acessar elementos por meio de seus Ćndices;
- utilizar o laƧo
for...ofpara percorrer diretamente os elementos de uma coleção; - selecionar a estrutura de repetição mais adequada para cada situação.