Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Código não funciona. Porque?

O código é simples, mas não encontro erro. A página não carrega com a tabuada do sete, fica rodando, tenho de fechar com o gerenciador de tarefas. O que pode ser?

<meta charset= "UTF-8">

<script>

var quebraLinha = function () {
    document.write("<br>");
};

var mostra = function(frase){
    document.write(frase);
    quebraLinha();

};

var multiplicador = 1;

while( multiplicador <= 10){

mostra( 7 * multiplicador);

}

</script>
4 respostas

Oi Vania, Faltou incrementar o seu contador, o script estava entrando em loop infinito pois nunca seria maior ou igual a 10 estaria sempre com o valor 1. Basta incrementar o contador no final:

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

Olá João! Deu certo! Obrigada! Então, na prática seria quando incremento.. 10 + 1 = 11 ? O valor máximo da condição somado a 1? Esse é o objetivo do incremento? Tornar a condição possível?

solução!

Olá Vania, quase isso, na verdade nesse caso é o inverso, o objetivo do incremento é não tornar a condição possível, e não necessariamente o valor máximo da condição precisa ser somado a 1! deixa eu tentar explicar. A instrução while é um "loop" em qualquer linguagem, ou seja é um trecho de código que vai se repetir como o proprio nome diz "enquanto" uma determinada condição estiver sendo satisfeita. Vamos traduzir isso no seu código:

var multiplicador = 1;

while( multiplicador <= 10){ 
   mostra( 7 * multiplicador);
}

a variável multiplicador recebe o valor 1, e a condição do seu while é que enquanto o multiplicador for menor ou igual a 10 será executado o trecho mostra( 7 * multiplicador);, isso causa um loop infinito(o trecho será executado infinitas vezes) porque o multiplicador sempre será 1, e 1 é menor que 10, deu pra entender? por isso adicionamos o o trecho incrementador:

var multiplicador = 1;
while( multiplicador <= 10){ 
   mostra( 7 * multiplicador);
   multiplicador = multiplicador + 1;
}

Nesse caso, na primeira vez que o código for executado a variável multiplicador é 1, porém no momento em que executar o trecho: multiplicador = multiplicador + 1; o valor da variável será incrementado em 1, ou seja terá valor o 2, e na segunda vez que o código for executado terá valo 3, depois 4 e assim por diante... e então quando chegar no valor 10 esse trecho para de ser executado, porque não satisfaz mais a condição e o código é finalizado.

Se ficou alguma dúvida não deixe de perguntar, e se tiver resolvido, marca como resolvido pra ajudar outras pessoa também.

Bons estudos. :)

Muito bom João, agora entendi. Ficou claro como funciona. Valeu mesmo!!!