1
resposta

Função para somar dentro do while!

Oi pessoal! Tudo bem?

Consegui completar o exercício e na tentativa de reduzir o código aconteceu algo bem esquisito. Criei uma função para fazer a soma do contador, logo abaixo da função mostra, para enxugar a repetição do código.

Talvez nem precisasse nesse contexto, mas quis experimentar. Quando abri no navegador, nada carregou e ele continuou processsando o script (acredito que o entrou num loop infinito).

Por que a gente não pode colocar uma função dentro do if que está no while nesse caso? O if precisa de um número de referência por causa da sua condição?

Vocês podem ver meu código abaixo:

// Código com a função soma - esse não funciona :( //

<script type="text/javascript">

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

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

    function soma(valor) {
        valor = valor + 1;
    }

    var numero = 30;

    while(numero <= 40) {

        if( numero == 33 || numero == 37 )   {
                soma(numero);
        } else {
            mostra(numero);
            soma(numero);
        }
    }

    mostra("FIM");
</script>


// Código sem a função soma - esse funciona :) //

<script type="text/javascript">

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

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

    var numero = 30;

    while(numero <= 40) {

        if( numero == 33 || numero == 37 )   {
            numero = numero + 1;
        } else {
            mostra(numero);
            numero = numero + 1;
        }
    }

    mostra("FIM");

</script>
1 resposta

Olá Isabela!

Esse loop infinito acontece porque você substituiu a linha de incremento do contador numero = numero + 1; por soma(numero);, então não tem acréscimo no contador.

É só adicionar a linha numero = numero + 1; fora do bloco do if..else (mas ainda dentro do while) que é para funcionar.

Espero ter ajudado! Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software