Na programação de computadores, é muito comum o uso de loops.

Mas primeiro, o que é um loop? Um loop é uma estrutura de controle que realiza uma sequência de instruções. Essas instruções são repetidas de novo, de novo, e de novo, até que a condição determinada seja alcançada. 

Existem vários tipos de estruturas de loop, como for, for in, for each, while, do... while, e nesse artigo nós vamos entender como, de fato, usar o while e quando usar o do...while, tópico que por muitas vezes pode ser um pouco confuso para quem está iniciando no mundo da programação.

Sintaxe do laço While

Vamos primeiro, então, entender como esse dois laços funcionam individualmente.

A sintaxe do loop while é assim:

while (condição) {
  instrução
}

Ou seja, esse loop começa avaliando a condição.

É feita essa verificação e caso essa condição retorne true (verdadeira) ele irá executar a instrução dentro das chaves, caso essa condição seja avaliada e retorne false (falsa), a instrução dentro do bloco não será executada e assim o loop acaba.

Exemplo prático com While

Agora que sabemos, em teoria, como o laço while funciona, vamos colocar em prática escrevendo um código que irá “contar” até 10:

// Primeiro vamos criar uma variável com valor 1
var i = 1;
 
// Aqui é feito a condição do laço
while ( i <= 10 ) {
    // Para exibir a variável i no console
    console.log( i );
   
    // Incrementando +1 para a variável i a cada repetição
    i++;
}

O output esperado para esse código, e você pode fazer o teste na sua máquina, é:

// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
//10

Primeiro vamos lembrar que While é uma palavra que vem do inglês e significa enquanto. Se nós tentarmos “traduzir” esse código para o português, teríamos algo parecido com isso:

enquanto (variável i for menor ou igual a 10 ) {
	imprima o valor da variável i no console;
	some mais um no valor da variável i;
}

Então, assim, o código começa com a variável i tendo o valor de 1. Ao passar pelo laço pela primeira vez sua condição é verificada, e, já que, 1 é menor que 10, a condição retorna true, assim o primeiro número é impresso no console. //1, logo após essa impressão é incrementado +1 a variável i, que agora, passa a ter o valor 2.

Novamente a condição será avaliada, e, como o valor 2 continua sendo menor que 10, a condição novamente será verdadeira e a instrução será executada.

Isso se repetirá e o loop acabará quando a variável i chegar ao valor de 10, o que faz com que a condição retorne falsa e o loop não aconteça mais.

Do… While sintaxe

do {
  // instrução
} while (condição);

O laço do/while é relativamente parecido com o laço while e, por vezes, isso acaba gerando confusão. Mas repare que diferente do laço while, o do/while começa executando a instrução antes de verificar ela e isso acaba fazendo uma grande diferença na prática.

Isso significa que, essencialmente, toda declaração será executada pelo menos uma vez, mesmo que a condição do while seja falsa.

Para entender mais na prática, agora vamos reescrever aquele código que “conta” até 10, mas primeiro faremos isso com as mesmas condições usadas no laço while:

// Primeiro vamos criar uma variável com valor 1
var i = 1;
do {
// Incrementando +1 para a variável i a cada repetição
   i++
// Para exibir a variável i no console
   console.log(i)
// Aqui é feita a condição  
} while (i <= 10);

Nesse caso, o output esperado é:

// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
//10
//11

Diferente do primeiro código, usando o laço while e usando a mesma condição while (i <= 10) , o resultado foi diferente.

Mas, por que isso?

Primeiro, vamos lembrar que Do também é uma palavra que vem do inglês e significa fazer/realizar. Vamos “traduzir” o código para o português novamente para entender o que aconteceu.

realize {
		some mais um a variável i
		imprima o valor de i no console
} enquanto (variável i for menor ou igual a 10 ) 

Repare que a variável i é incrementada antes de ser impressa no console, então o primeiro número impresso acaba sendo o 2. 

Outra diferença entre os resultados é que o último número impresso no laço while foi o 10, enquanto no laço do/while foi o 11. Isso acontece porque, no laço do/while, quando a variável i é incrementada e passa a ter o valor de 10, ela passa novamente pelo do { instrução } antes que a verificação de que a condição agora irá retornar falsa seja feita e o loop seja quebrado.

É importante entender a diferença entre os dois laços e quando usá-los justamente porque se você não souber, pode obter resultados completamente diferentes do que achou que teria e até prejudicar uma aplicação maior.

Reescrevendo o código para que, utilizando a estrutura do/while , seja feito um programa que “conte” até 10:

var i = 0;

do {
   i++
   console.log(i)
} while (i <= 9);

Assim, foi alterado o valor inicial da variável i e uma alteração na condição do while foi feita. Dessa forma, se você testar na sua máquina, terá o resultado esperado:

// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9
//10

Entender como as estruturas funcionam facilita para que possamos atender suas necessidades de forma mais eficiente.

Conclusão

De forma bem resumida, as duas estruturas, while e do/while funcionam basicamente como a dinâmica do bom policial e mau policial.

O bom policial bate na porta primeiro e entra depois, o mau policial entra primeiro e bate na porta depois.

O loop while executa o loop enquanto a condição for verdadeira. O loop Do... While executa o loop primeiro e depois verifica a condição.

Espero que o artigo tenha ajudado nos seus estudos. Até a próxima!

Veja também…

Expression vs Statement em JavaScript

O Princípio Que Mudou Minha Forma de Programar