segunda-feira, 13 de julho de 2015

Diferença entre While e For



Qual a diferença entre os dois? Ambos são loops, mas o For é mais interessante quando o loop é "contado": tem um início e um fim. Já o While é interessante quando não sabemos bem quando ele vai terminar, pois depende de uma variável estar com um valor específico.

Para mostrar os dois casos na prática, usarei como exemplo a tabuada do número 7.

WHILE

Na nossa tabuada o cálculo inicia na multiplicação por 1 e vai até multiplicarmos por 10, então vamos criar uma variável que guarde esse valor, que vamos chamar de multiplicador e iniciará em 1.

<script>
var multiplicador = 1;
</script>

O programa realizará essas multiplicações por 7 enquanto o multiplicador for menor ou igual a 10. Mas antes vamos criar uma função para mostrar o texto em uma nova linha, somente para melhorar a visualização.

<script>
var mostra = function(frase) {
    document.write(frase + "<br/>");
}
var multiplicador = 1;
</script>

O código final ficará assim:

<script>
var mostra = function(frase) {
    document.write(frase + "<br/>");
}
var multiplicador = 1;
while(multiplicador <= 10) {
    mostra(7 * multiplicador);
    multiplicador = multiplicador + 1;
}
</script>

Geralmente, quando temos as repetições que não sejam um loop infinito, temos 3 características que a envolvem:


  • Um valor inicial, que no caso da tabuada é o multiplicador iniciando em 1;
    • Exemplo: var multiplicador = 1;
  • Uma condição que determine se a repetição deve ser feita ou não, que no nosso caso é quando verificamos que o multiplicador ainda é menor que 10;
    • Exemplo: while(multiplicador <= 10) 
  • Uma modificação no valor que cause o fim da repetição, ou seja, que tenha influência na condição que é verificada para a repetição, justamente para que não fique em repetições infinitas. No caso da tabuada, é quando aumentamos o valor do multiplicador a cada repetição, ou seja, o incremento.
    • Exemplo: multiplicador = multiplicador + 1;


FOR

Ao contrário do While, que não há nada que nos induza a lembrar das suas características, o comando For nos induz a pensar em tudo antes de montar o código. Veja a sua estrutura:

for(inicialização; condição para repetir; incremento)

O resultado será o mesmo do que o com o While, apenas escrito de uma maneira diferente. Enquanto o For precisa que escrevamos as 3 características logo no meio dos parênteses do comando, o While apenas pede a condição.

Sabendo que o For precisa primeiro do valor inicial, é fácil identificarmos 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 For precisa. 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 multiplicador aumentará, que no nosso caso é de 1 em 1. Chamamos isso de incrementar a variável. 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.

<script>
for(var multiplicador = 1; multiplicador <= 10; multiplicador = multiplicador + 1) {
}
</script>

Pronto, com isso, dissemos que o multiplicador irá iniciar em 1, as repetições vão acontecer enquanto multiplicador for menor que 10 e que a cada repetição, o valor de multiplicador irá aumentar em 1.

Agora só falta adicionarmos o comportamento necessário para mostrar o resultado da tabuada do 7, já que temos o multiplicador indo de 1 a 10.

<script>
var mostra = function(frase) {
    document.write(frase + "<br/>");
}
for(var multiplicador = 1; multiplicador <= 10; multiplicador = multiplicador + 1) {
    mostra(multiplicador * 7);
}
</script>

Mas e agora? Qual das duas maneiras 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. 
Anterior
Proxima

0 comentários: