Geralmente, quando temos as repetições que não sejam um loop infnito, temos 3 características que a envolvem:
• Um valor inicial, que no caso da tabuada é o multiplicadoriniciando em 1;
• Uma condição que determine se a repetição deve ser feita ou não, que no nosso caso é quando verifcamos que o multiplicadorainda é menor que 10; • Uma modifcação no valor que cause o fm da repetição, ou seja, que tenha
infuência na condição que é verifcada para a repetição, justamente para que não fque em repetições infnitas. No caso da tabuada, é quando aumentamos o valor do multiplicador a cada repetição, ou seja, o incremento.
Até agora, conseguimos realizar essas repetições através do while, sempre es-crevendo o código necessário para essas 3 características, porém, não há nada que nos induza, quando estamos escrevendo o código do whilea lembrar dessas carac-terísticas.
Justamente com esse intuito, existe o comando for, que nos induz a pensar em tudo antes de montar o código da repetição. A sintaxe, ou seja, o jeito de escrever o comando, pode parecer um pouco estranho no começo, mas vamos entendê-lo aos poucos.
5.7. Aprenda uma forma diferente de mostrar a tabuada: o comando for Casa do Código
for( ; ; ) {
alert("mensagem para repetição infinita"); }
Sintaxe estranha, não? Primeiramente, ao abrir um programa com esse código em um navegador, perceberemos que será feito um loop infnito, ou seja, o forestá fazendo sim uma repetição. Mas quando ele termina? Nunca. Um for( ; ; )é equivalente ao while(true)que vimos no começo do capítulo.
Repare que dentro dos parênteses do comando forhá dois ;(ponto e vírgula), dando a sensação de que há ali um espaço para que algumas três informações sejam dadas. O código a seguir não é válido, é apenas para mostrar onde estão esses três espaços:
for(espaco 1; espaco 2; espaco 3)
Cada um desses espaços espera uma informação para controlar as repetições que acontecerão. Vamos fazer um programa que mostrará 10 alertas, cada um com um número de 1 a 10. Novamente teremos uma repetição, que agora deve ir de 1 até 10. Você lembra como faria isso com o while? Seria um código como o seguinte:
var numero = 1
while(numero <= 10) { alert(numero); numero = numero + 1; }
Pois bem, podemos fazer praticamente idêntico com o for:
var numero = 1;
for(; numero <= 10; ) { alert(numero); numero = numero + 1; }
Preenchemos o segundo espaço com a condição do loop, que será verifcada toda vez para saber se mais uma repetição deve ocorrer.
Qual é a diferença então disso para o já conhecido while? Dentro do for apa-receram os pontos-e-vírgulas, que tornaram a forma de escrever bastante estranha. O resultado fnal será exatamente o mesmo. Então pra que um outro comando de repetição?
Com o for, podemos usar o primeiro espaço antes do ponto-e-vírgula para realizar inicializações. Um exemplo é inicializar a variável numero:
for(var numero = 1; numero <= 10; ) { alert(numero);
numero = numero + 1; }
E agora, o que mudou? Quase nada. Seu código fcou mais legível. A parte que diz var numero = 1é chamada de inicialização do for. Ela será executada apenas uma única vez. A próxima etapa é verifcar se numero <= 10e decidir se deve ou não executar uma repetição.
E o que podemos fazer no terceiro espaço, logo após o segundo ponto-e-vírgula? O que estiver nessa terceira parte será sempre executada. É muito utilizado para exe-cutar o código que aumenta, que incrementa a variável que usamos durante o loop. Nesse caso, pra aumentar o valor da nossa variável numero. Com isso, podemos escrever um comando que imprima de 1 até 10 com esse novo comando da seguinte maneira:
for(var numero = 1; numero <= 10; numero = numero + 1) { alert(numero);
}
Portanto, podemos perceber que o forpossui 3 espaços/pedaços. O primeiro, onde dizemos qual é o valor inicial que queremos. O segundo para defnirmos qual é a condição que determina se as repetições devem ser feitas ou não; essa parte é feita da mesma forma que vimos no while. E o terceiro, que modifca o valor de alguma variável que infua na fnalização das repetições. As três partes são delimitadas pelo
;.
for([inicialização]; [condição para repetir]; [modificação do valor])
O importante aqui é perceber que o que acabamos de fazer com o novo comando, o for, é o mesmo que conseguimos fazer com o while, apenas escrito de uma maneira diferente. Enquanto o forprecisa que escrevamos as 3 características logo no meio dos parênteses do comando, o whileapenas pede a condição.
5.8 Reescrevendo a tabuada com o for
5.8. Reescrevendo a tabuada com o for Casa do Código
Para começar, vamos nos lembrar de como era o código do programa da tabuada, que utilizava o comando while:
<script>
var mostra = function(frase) {
document.write(frase + "<br>"); }; var multiplicador = 1; while(multiplicador <= 10) { mostra(7 * multiplicador); multiplicador = multiplicador + 1; } </script>
Agora, podemos criar o arquivo tabuada_com_for.html, onde vamos criar nosso novo programa que vai fazer exatamente o que o anterior fazia, de uma ma-neira diferente.
Sabendo que o for, precisa primeiro do valor inicial, é fácil identifcarmos que ele é a variável multiplicador, que começa com o valor 1.
<script>
for(var multiplicador = 1; ;) { }
</script>
Agora precisamos preencher as outras duas informações que o forprecisa. A próxima é até quando as repetições devem continuar, que no caso, é a condição que indica que repetições devem ocorrer enquanto o multiplicador for menor que 10.
<script>
for(var multiplicador = 1; multiplicador <= 10; ) { }
</script>
Pronto, só falta dizermos de quanto em quanto o multiplicadoraumentará, que no nosso caso é de 1 em 1. Chamamos isso de incrementar a variável. Para isso, estamos fazendo multiplicador = multiplicador + 1. Sempre que queremos somar 1 àquela variável, temos que repetir o nome da variável, indicando que nela queremos atribuir o valor que estava lá mais 1.
No dia a dia, muitos programadores vão preferir fazer isso de uma forma abrevi-ada. A sintaxe, as regras da linguagem permitem isso. Essa linha pode ser abreviada como multiplicador++. Os dois sinais de soma ao lado da variável nada mais é é do que uma maneira abreviada que o JavaScript entende e que signifca que você quer aumentar o valor daquela variável em 1.
Vamos usar essa nova forma abreviada em nosso programa.
<script>
for(var multiplicador = 1; multiplicador <= 10; multiplicador++) { }
</script>
Pronto, com isso, dissemos que omultiplicadorvai iniciar em 1, as repetições vão acontecer enquanto multiplicadorfor menor que 10 e que a cada repetição, o valor de multiplicadorvai aumentar em 1.
Agora só falta adicionarmos o comportamento necessário para mostrar o resul-tado da tabuada do 7, já que já temos o multiplicadorindo de 1 a 10.
<script>
for(var multiplicador = 1; multiplicador <= 10; multiplicador++) { mostra(multiplicador * 7);
}
</script>
Lembre-se de ter a função mostrano seu arquivo tabuada_com_for.html. Quando você abrir esse arquivo em um navegador, o resultado será exatamente igual ao que tínhamos antes com o while.
Devo usar o while ou o for?
Mas e agora? Qual das duas maneiras devo usar? Resposta simples, a que você preferir e achar mais simples de escrever, pois ambas as maneiras, seja com o for, seja com o while, fazem exatamente o mesmo trabalho. Escolha a forma que você achar mais interessante e fácil de entender e continue com ela. Para a sequência do livro, vamos realizar as repetições de acordo com o caso.