Requisitos para estar aqui:
- Ter finalizado a Lista de Exercícios sobre a Estrutura de Repetição For com Variável de Controle!
- Caso não tenha feito, CLIQUE AQUI.
O laço de repetição while é um laço de repetição com variável de controle. Isso significa que, para que o laço seja executado, é necessário que uma condição seja verdadeira. Caso a condição seja falsa, o laço não será executado.
A sintaxe do laço while é a seguinte:
while (condicao) {
// código a ser executado
}
Uma outra sintaxe, ainda utilizando o conceito do faça enquanto (do while), é a seguinte:
do {
// código a ser executado
} while (condicao);
Vamos exemplificar com uma condição estabelecida, ainda com pouca complexidade, para que possamos entender o funcionamento do laço de repetição while. Veja o exemplo abaixo:
let contador = 0;
while (contador < 5) {
console.log(contador);
contador++;
}
O código acima irá imprimir no console os números de 0 a 4. Isso acontece porque a variável contador
é inicializada com o valor 0. A condição do laço é contador < 5
, ou seja, enquanto o valor da variável contador
for menor que 5, o laço será executado. A cada execução do laço, o valor da variável contador
é incrementado em 1. Quando o valor da variável contador
for igual a 5, a condição do laço será falsa e o laço será encerrado.
O laço while é muito útil quando não sabemos quantas vezes o laço será executado. Por exemplo, se quisermos que o usuário digite um número entre 1 e 10, podemos utilizar um laço while para garantir que o usuário digite um número válido. Veja o exemplo abaixo:
let numero = Number(prompt("Digite um número entre 1 e 10:"));
while (numero < 1 || numero > 10) {
numero = Number(prompt("Digite um número entre 1 e 10:"));
}
O código acima irá solicitar que o usuário digite um número entre 1 e 10. Caso o usuário digite um número menor que 1 ou maior que 10, o laço será executado novamente, solicitando que o usuário digite um número válido. O laço será executado até que o usuário digite um número válido.
O While irá executar a repetição apenas caso a condição seja verdadeira. Já o Do While irá executar a repetição pelo menos uma vez, independente da condição ser verdadeira ou falsa.
Considere a seguinte situação:
O usuário, previamente, já inseriu um dado para uma variável que será validada no laço de repetição. Neste caso, o mais indicado é o while
, pois a condição será testada antes de executar o bloco de código.
Por outro lado, se o usuário ainda não inseriu nenhum dado, o mais indicado é o do while
, pois o bloco de código será executado pelo menos uma vez, independente da condição ser verdadeira ou falsa.
Veja a diferença na prática:
let genero = "F";
while (genero != "F" && genero != "M") {
genero = prompt(`Informe o gênero (M/F): `).toUpperCase();
}
Neste exemplo, o
while
será executado apenas se a condição não for atendida, ou seja, se o valor previamente atribuído para a letgenero
não for "F" ou "M".
No exemplo seguinte, não foi atribuído nenhum valor ainda para a let genero
. Assim, o do while
será executado pelo menos uma vez, pois será a primeira vez que será atribuído valor para a let genero
e, assim, o do while
se encarregará de validar se o valor inserido atende a condição estabelecida.
let genero = "";
do {
genero = prompt(`Informe o gênero (M/F): `).toUpperCase();
} while (genero != "F" && genero != "M");
O que não pode ocorrer é o seguinte código:
let genero = "F"; do { genero = prompt(`Informe o gênero (M/F): `).toUpperCase(); } while (genero != "F" && genero != "M");Este código está incorreto, pois já há um valor atribuído para a let
genero
e, mesmo assim, odo while
será executado, desconsiderando o valor já atribuído para a letgenero
.
Todo o conteúdo que já trabalhamos até aqui na disciplina de Programação será aplicado ao trabalharmos com estruturas de repetição. Os temas que aparecerão aqui repetidamente são:
- if... else (e if... else aninhado)
- operador ternário (e operador ternário aninhado)
- switch... case
- variáveis e operadores (muitas operações matemáticas!)
- e, principalmente, Arrays!!
Colocando em prática o conhecimento apresentado sobre Arrays, vamos para uma pequena lista de exercícios.