4
respostas

Por que entrei no Loop?

<meta charset = "UTF-8">

<script>

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

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

var contador = 30;

while (contador <= 40) {
    if (contador == 33) {
        mostra();
    }

    if (contador == 37) {
        mostra();
    } else {

        mostra(contador);
        contador = contador + 1;
    }
}

mostra("FIM");

 </script>
4 respostas

Boa tarde Guilherme!

Fiz as alterações assinaladas no código e funcionou!

<meta charset = "UTF-8">

<script>

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

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

var contador = 30;

while (contador <= 40) {
    if (contador == 33) {
        // mostra tem o parâmetro frase para receber!!
        mostra(contador);
    }

    if (contador == 37) {
        // mostra tem o parâmetro frase para receber!!
        mostra(contador);
    } else {

        mostra(contador);

    }

    // o contador estava sendo acrescido dentro do if/else - então nunca chegava ao 33, 37 ....
    contador = contador + 1;
}

mostra("FIM");

 </script>

Eu resolvi fazer esse código para verificar o que acontecia... Fiz o do autor original e nada apareceu, travou a página. Fiz o da correção e todos os números apareceram... É, inclusive o 33 e o 37. Então, resolvi deixar só "contador" sem estar dentro da função mostra... e, apesar de ter excluído o número 37, continuou imprimindo o número 33... O que houve?!

while (contador <= 40) {

if (contador == 33) {
    contador;
}

if (contador == 37) {
    contador;
} 
else {

    mostra(contador+ ", ");

}
contador = contador + 1;

}

Olá Bruna,

Se você não quiser que o número 33 seja exibido, ele deve entrar no mesmo if que esta o 37, pois pelo if do 37, se o contador não for igual a 37 ele vai mostrar, 33 não é igual a 37.

if (contador == 37 || contador == 33) {
        // mostra tem o parâmetro frase para receber!!
        contador;
    } else {

        mostra(contador+ ", ");

    }

EDIT Para melhor entendimento, dentro do que foi ensinado(sem utilizar o que ainda não foi exibido), acredito que o seu código ficaria melhor assim:

<meta charset = "UTF-8">

<script>

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

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

    mostra("==========INICIO==========");

    var contador = 30;

    while (contador <= 40) {
        if (contador != 33){
            if (contador != 37){
                mostra("número " + contador);
            }            
        }

        contador = contador + 1;
    }

    mostra("==========FIM==========");

 </script>

Bruna,

dê uma olhada na resposta que dei ao seu problema, na sua própria postagem: https://cursos.alura.com.br/forum/topico-questoes-sobre-if-e-else-135000