Laço while: dividir por 2
Use while quando você não sabe de antemão quantas voltas serão necessárias.
Enunciado
Uma folha de papel é dobrada ao meio várias vezes. Dado o número n, conte quantas divisões inteiras por 2 são necessárias até que o valor chegue a 1 ou menos. Use divisão inteira (descarte a parte decimal, com Math.floor).
Escreva quantasDivisoes(n), que retorna essa quantidade.
Exemplos:
quantasDivisoes(8)retorna3(8 → 4 → 2 → 1)quantasDivisoes(10)retorna3(10 → 5 → 2 → 1)quantasDivisoes(1)retorna0
Processamento local: nada do que você digita sai do seu navegador.
O conceito
O while repete um bloco enquanto uma condição for verdadeira. Diferente do for, ele é ideal quando você não sabe quantas voltas serão necessárias.
É como encher um balde: enquanto ele não estiver cheio, continue despejando água. Você não sabe quantos copos serão necessários, só sabe quando parar.
let n = 8;
let voltas = 0;
while (n > 1) {
n = Math.floor(n / 2);
voltas++;
}
// voltas vale 3Erros comuns
- Esquecer de alterar a variável da condição dentro do laço: o programa fica preso para sempre (laço infinito).
- Esquecer o
Math.floore dividir números ímpares, ficando com decimais. - Trocar
> 1por>= 1, o que nunca termina para n = 1 a menos que haja outra saída.
Perguntas frequentes
O que é um laço infinito?
É um laço cuja condição nunca fica falsa, então ele não termina. Sempre confira se algo dentro dele muda a condição.
Quando usar while em vez de for?
Use for quando sabe o número de voltas. Use while quando a repetição depende de uma condição que muda durante a execução.
Veja também
Precisa de um sistema ou app sob medida?
A VcInova desenvolve software, aplicativos e integrações para empresas de todo o Brasil.
Fale com a VcInova