2
respostas

LOOP SEM SENTIDO NO CÓDIGO

Bom, como parte de um dos exercício do curso de Lógica de Programação I, eu tive que fazer um código que mostrava na tela os números, na ordem decrescente, de 20 à 0, porém o código está entrando em Looping e eu não sei por que, só sei que quando eu tiro o "=" da linha "while(numeroInicial >= numeroFinal){" o looping desaparece, porém o código ignora o ELSE, que deveria ser ativado pelo 0 na variável "numeroInicial".

<script>

    function mostra(msg){
        document.write(msg + "<br>")
    }

    var numeroInicial = parseInt(prompt("Digite aqui o número inicial, ou seja, o número que irá iniciar a ordem descrescente!"))
    var numeroFinal = parseInt(prompt("Digite aqui o número final da ordem decrescente!"))

    while(numeroInicial >= numeroFinal){
        if(numeroInicial == numeroFinal){
            mostra(numeroInicial);
            mostra("FIM");
        } else{
            mostra(numeroInicial);
            numeroInicial = numeroInicial - 1;
        }
    }

</script>
2 respostas

Da pra fazer sem esse "if" e "else".

Utilizei apenas o "while" enquanto os números forem maiores vou escrevendo, quando atinge o numero igual no contador, ele cancela o "while" e escreve o FIM.

<meta charset="UTF-8">
<script>

    function mostra(msg){
        document.write(msg + "<br>")
    }

    var numeroInicial = parseInt(prompt("Digite aqui o número inicial, ou seja, o número que irá iniciar a ordem descrescente!"));
    var numeroFinal = parseInt(prompt("Digite aqui o número final da ordem decrescente!"));

    while(numeroInicial >= numeroFinal){
            mostra(numeroInicial);
            numeroInicial = numeroInicial - 1;

    }     
    mostra("FIM");


</script>

Oi Guilherme tem um erro de lógica no seu exercício, meu número inicial =20 e meu final é 0. Aí vai pra essa linha:

while(numeroInicial >= numeroFinal){

Entra no While, aí tem essa condição:

if(numeroInicial == numeroFinal){

que vai dar false, e vai pro else, vai imprimir 20 e vai decrementar pra 19 ok.Aí vamos para o final lá quando o numeroInicial tiver valendo 1:

while(numeroInicial >= numeroFinal){

1>=1==true;

if(numeroInicial == numeroFinal){

1==1==true; mostra(1); mostra("FIM");

E o while continuará rodando pq vc não pediu pra ele parar e também pq o número chegou em 1 o que ainda satisfaz a condição do while, para interromper esse laço você pode utilizar a instrução break;

Ficando assim:

while(numeroInicial >= numeroFinal){
        if(numeroInicial == numeroFinal){
            mostra(numeroInicial);
            mostra("FIM");
            break;
        } else{
            mostra(numeroInicial);
            numeroInicial = numeroInicial - 1;
        }
    }

Espero ter ajudado e bons estudos.