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

Sobre usar while e mostra

Bom dia, gente! Tenho uma dúvida. Eu posos usar

 while(contador <= 100);

    mostra(contador + 2);"

ou eu preciso colocar

 while(contador <= 100) {
        mostra(contador);
        contador = contador + 2;"

e por que? O código que eu tinha feito é esse:

<meta charset="UFT-8">

<script>

function pulaLinha(){
    document.write("<br>");
}

function mostra(texto){
    document.write("texto");
    pulaLinha;
}

var contador = 0;

while(contador <= 100);

    mostra(contador + 2);

mostra("FIM");


</script>
2 respostas

Oi Ita, tudo bem? Bom dia!

O seu primeiro código gera um loop infinito, ou seja, o programa fica travado pois o while nunca para de executar. Mas por que isso acontece?

while(contador <= 100) {
    mostra(contador + 2);
}

Veja que a única instrução para o loop é enviar para a função mostra o contador somado com 2. Mas esse contador nunca irá mudar, ele sempre continuará o mesmo. O contador começa com 0, correto? Então ele entrará no loop, já que 100 é maior que 0. E então, ele irá enviar para a função mostra o valor 2, já que 0 + 2 = 2.

E ele vai repetir essa instrução infinitamente, já que não adicionamos nenhum valor para o contador. Para ele não ter um loop infinito, precisamos fazer da seguinte maneira:

 while(contador <= 100) {
        mostra(contador);
        contador = contador + 2;
}

Assim, nosso loop envia para a função mostra() o contador, que no início será 0, e depois, ele acrescenta 2 unidades no contador, e envia novamente para a função mostra(), mas agora com valor 2, e assim por diante, até ser maior que 100 e ele sair do loop!

Precisamos sempre estar modificando nossa variável em loops, se não ele se torna infinito e trava nosso programa.

Uma outra observação é que na sua função mostra(texto), em vez de exibir a variável texto que está sendo passada como parâmetro, você está exibindo um texto literal ("texto"). Para corrigir isso, sua função deve ser:

function mostra(texto){
    document.write(texto);
    pulaLinha;
}

Assim, mostraremos na tela apenas a variável recebida, que é a variável texto, e não um texto literal. Deu pra entender?

Espero ter ajudado, abraços =)

solução!

Entendii! Precisei desenhar aqui na minha cabeça, mas entendi. Obrigada!