Laço WHILE
Assim como o for, o while é um laço de repetição: ele executa um bloco de instruções várias vezes, sem que precisemos escrever o mesmo código repetidamente. A diferença é que, no while, a inicialização e a atualização da variável de controle ficam fora da estrutura do laço, e não dentro dela.
O while tem uma única parte obrigatória:
- uma condição, que é testada antes de cada repetição; enquanto ela for verdadeira, o bloco continua executando.
Para que o laço funcione corretamente, normalmente também precisamos:
- definir o valor inicial da variável de controle antes do
while; - atualizar essa variável dentro do bloco, para que a condição deixe de ser verdadeira em algum momento.
O formato do comando while é o seguinte:
while:inicialização;
while (condição) {
// bloco de instruções
atualização;
}
Nesse exemplo, a variável começa com um valor inicial antes do laço. A cada volta, a condição é testada e, se for verdadeira, o bloco é executado — e é dentro dele que a variável precisa ser atualizada. Se você esquecer de atualizar a variável, a condição nunca deixará de ser verdadeira e o laço se repetirá para sempre, travando o programa.
Exemplo 1: criar vários retângulos iguais
Assim como fizemos com o for, podemos usar o while para criar vários objetos iguais. No exemplo abaixo, o laço desenha cinco retângulos em posições diferentes.
whilefunction setup() {
createCanvas(400, 400);
background(255);
let i = 0;
while (i < 5) {
rect(50 + i * 60, 150, 40, 80);
i = i + 1;
}
}
Exemplo 2: criar várias elipses iguais
Também podemos usar o while para criar vários círculos ou outras formas. No exemplo a seguir, o laço desenha cinco elipses alinhadas, parando quando a variável de controle chega a 5.
whilefunction setup() {
createCanvas(400, 400);
background(255);
let i = 0;
while (i < 5) {
ellipse(60 + i * 60, 200, 40, 40);
i = i + 1;
}
}
while é útil quando não sabemos de antemão quantas vezes o laço vai se repetir, já que a condição pode depender de algo que muda durante a execução do programa. Já quando sabemos exatamente quantas repetições queremos, como nos exemplos acima, o for costuma deixar o código mais organizado, pois reúne inicialização, condição e atualização em um só lugar. Tome cuidado: sempre atualize a variável de controle dentro do while, para evitar um laço infinito.