2
respostas

Dúvidas em loop do while

OK. Não é o escopo desta aula, mas fui pesquisando e alterando.

Coloquei um loop do while para continuar enquanto o nome não estivesse em branco. Funcionou perfeitamente, ou quase.

Percebi que a tela só renderiza quando sai do loop. Por que não exibe o IMC logo após eu inserir a altura, já que os cálculos são feitos todos corretamente?

in<meta charset="UTF-8">

<script type="text/javascript">
    function pulaLinha(n){
        for (i = 0; i<n; i++){
            document.write("<br>");
        }
    }

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

    function arredonda(valor, casas){
        var divisor = Math.pow(10, casas);
        return (Math.round(valor * divisor) / divisor);
    }

    function calculaImc(peso, altura, casas){
        return (arredonda((peso / (altura * altura)), casas))
    }

    var nome;
    var peso = 0;
    var altura = 0;
    var imc = 0;

      do{
          nome = prompt("Qual o seu nome?")
          if (nome) {
              peso = prompt("Me diga seu peso")
              altura = prompt ("Me diga sua altura");
              imc = calculaImc(peso, altura, 2);
              mostra(nome + ", seu IMC  : " + imc, 2);
          }


      } while (nome)

</script>sira seu código aqui
2 respostas

Olá Luiz, tudo bem?

Sinto muito pela demorar em te retornar.

Seu código precisa de condições dentro do ´if´ e no while. Perceba que if (nome) e while (nome) não é necessariamente uma instrução.

Podemos fazer as seguintes alterações:

if (nome != "")

while (nome == "")

Estamos simplesmente informamos a forma que o código deve funcionar, no if: se o nomefor diferente de vazio, não perguntaremos ao usuário o peso e altura. No while: enquanto o nomefor fazio perguntaremos ao usuário p nome dele.

Se algo não ficou claro, ou tenha alguma dúvida, fique tranquilo para perguntar.

Um forte abraço!

Oi Ana.

Agradeço sua ajuda e tempo perdido comigo.

Minha vivência nunca foi Java, Javascript, HTML, CSS, isso tudo que faz parte desses cursos que estou vendo. Vim do COBOL, Pascal, C, C++, Dataflex e agora aprendendo um pouco de R (muito pouco) e Python.

Gosto de experimentar aquilo que não está no manual e depois perguntar por que deu certo ou errado. O if (nome) deu certinho. Parece que foi considerado que nome vazio (null) seria false e qualquer conteúdo seria true. Não sei se procede isso, mas funcionou assim.

Minha questão é sobre a renderização: "Percebi que a tela só renderiza quando sai do loop. Por que não exibe o IMC logo após eu inserir a altura, já que os cálculos são feitos todos corretamente?"

Essa é a questão que eu gostaria de resolver.