If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Revisão: Repetições

Esta é uma revisão do que vimos até aqui sobre loops.
Quando estamos escrevendo programas, geralmente queremos repetir diversas vezes o mesmo código, ou repeti-lo com alguma pequena variação de cada vez. Para evitar escrever todo esse código, podemos usar um laço. O JavaScript tem dois tipos de laços, o laço while e o laço for.
O laço while é uma maneira de repetir código até que alguma condição seja falsa. Por exemplo, este laço while irá mostrar o valor de y em (30, y) com a condição de que y seja menor que 400. O laço soma 20 ao y a cada iteração, dessa forma o y começa no 40 e vai para 60, 80, 100, 120, etc.
var y = 40;
while (y < 400) {
    text(y, 30, y);
    y += 20;
}
É importante que a condição dentro dos parênteses se torne falsa em algum momento - se não, teremos o que é conhecido como um laço infinito! Isso é o que aconteceria se removêssemos y += 20, pois y teria o valor 40 para sempre, e seria sempre menor que 400. O programa nunca saberia quando parar.
var y = 40;
while (y < 400) {
    text(y, 30, y);
}
O laço for é similar ao laço while, mas com sintaxe mais específica. Programadores inventaram o laço for quando perceberam que estavam fazendo as mesmas três coisas - criando variáveis contadoras (como o y acima), somando a elas uma certa quantidade e checando se elas eram menores que determinado valor. A sintaxe de um laço for tem lugares especiais para cada uma dessas três coisas. Aqui está o laço while acima transformado em laço for:
for (var y = 40; y < 400; y += 20) {
    text(y, 30, y);
}
Laços podem ainda ser aninhados. É muito comum aninhar laços for, especialmente em desenhos 2D, pois isso facilita a criação de formas quadriculadas. Quando aninhamos um laço dentro de outro, estamos dizendo ao programa para "fazer essa coisa X vezes e, para cada vez que você fizer isso, também faça essa outra coisa Y vezes". Pense no desenho de uma grade - nós teríamos que dizer ao programa para "criar uma coluna 10 vezes e, para cada coluna, também criar 15 células dentro dela". Veja como usar laços for aninhados para isso:
for (var col = 0; col < 10; col++) {
    for (var linha = 0; linha < 15; linha++) {
        rect(col*20, linha*20, 20, 20);
    }
}
Quando devemos utilizar o laço for ao invés do laço while? Isso é com você. Muitos programadores preferem laços for, porque com eles é mais difícil criar acidentalmente um laço infinito (porque é mais difícil de esquecermos de incrementar sua variável contadora), mas, algumas vezes, um laço while pode fazer mais sentido. Teste os dois!

Quer participar da conversa?

Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.