Estruturas de Repetição
Em Javascript, temos duas estruturas de repetição (também chamados de loops) principais: while e for.
Estruturas de repetição são utilizadas para realizar algum comando inúmeras vezes, enquanto uma condição for verdadeira.
O while em Javascript tem a seguinte sintaxe:
while (condição) {
// faça algo
}
Similar ao if, a nossa condição do loop vai sempre dentro dos ( ). E então usamos { } para delimitar o bloco do nosso while. O código a ser executado deve ir dentro das chaves { }.
Exemplo (contando de 0 a 9).
let i = 0;
while (i < 10)
{
console.log(i);
i++;
}
Perceba que, assim como no if, o primeiro { pode vir na mesma linha que o while e a condição,ou na linha seguinte, é uma decisão de estilo. Particularmente, prefiro deixar tudo na mesma linha.
Lembrando que em loops while, temos que tomar cuidado para não criar loops infinitos, que acontecem quando a condição do loop permanece sempre como true.
O laço for em javascript, é similar ao de linguagens como Java ou C, e é diferente do for do Python por exemplo.
O for tem a seguinte sintaxe:
for (inicialização; condição; expressão_final) {
// codigo vai aqui
}
Existem 3 coisas importantes em um loop for no Javascript: a inicialização, a condição, e a expressão/operação final.
- Na inicialização, podemos declarar e inicializar uma variável, geralmente, declaramos o nosso contador nessa etapa. Ela é executada apenas uma vez, antes de começar a executar o loop.
- A condição é a condição do nosso loop, enquanto a condição for verdadeira, o código dentro do loop será executado. A condição é sempre verificada antes de executar o bloco de código dentro do loop.
- A expressão final é alguma expressão que queremos executar imediatamente após o fim da execução do código dentro do loop. Geralmente, é onde incrementamos o nosso contador.
Com um exemplo ficará mais claro:
Contando de 0 a 9
for (let i = 0; i < 10; i++) {
console.log(i);
}
Vamos “dissecar” esse código:
let i = 0; é a fase de inicialização, aqui declaramos nossa variável, que no caso é o nosso contador.
i < 10; é a condição do nosso laço, enquanto ela for verdadeira, o código dentro do loop (console.log(i)) será executado.
i++ é a expressão final do nosso loop, sempre após o fim do código dentro do loop ela será executada. Ou seja, após executar o console.log(i), fazemos um i++ pra incrementar o contador.
Normalmente, é sempre possível escrever um laço for como while.
Reescrevendo o exemplo acima:
let i = 0; // inicialização
while (i < 10) { // condição (i < 10)
console.log(i);
i++; // expressão final
}
Outro exemplo com for:
Imprimindo numeros pares de 0 a 20 (incluindo o 20).
for (let i = 0; i <= 20; i += 2) {
console.log(i);
}
Tentem compreender esse código, é similar ao anterior, com pequenas variações.
Normalmente, os loops param quando a condição do loop deixa de ser verdadeira, porém, existe um comando especial que pode sair instantaneamente de um loop: o break;.
Ele faz literalmente isso, se usarmos break dentro de um loop, seja ele um loop for ou while, o loop acaba imediatamente, independente da condição continuar sendo verdadeira ou não.
Um exemplo:
// loop pra imprimir de 0 a 5, porem para quando chega no 3.
for (let i = 0; i <= 5; i++) {
console.log(i);
if (i == 3) {
break;
}
}
Outro exemplo:
// tipico loop infinito, true sempre será true
let i = 321;
while (true) {
if (i % 42 == 0) {
// se achar um numero divisivel por 42, para
console.log(i);
console.log('eita');
break;
}
i++;
}
E é assim que podemos usar o break. Para sair imediatamente de um loop.
Porém, é importante usar com cautela, pois loops sem break só terminam de uma forma: quando a condição de execução do loop se torna falsa! Porém, break muda um pouco isso, introduzindo outras formas de terminar o loop.
Exercicios
Agora, podem resolver os exercicios propostos 3, 4, 5 e 6!