Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Usando os comandos dessa aula na aula passada

Tentei o comando "if" na aula passada, mas não estou conseguindo ter o mesmo resultado que o dessa aula. Não sei se é por causa dos símbolos que podem estar errado, porque pesquisei na internet como eles devem ser. Enfim segui o código, se encontrarem o erro avisem.

<meta charset="UTF-8">

<script>

function doc(frase){document.write(frase+'<br>');}
function imc(peso, altura){var imc = peso/ (altura*altura); 
 return(Math.round(imc));}

var nomePe = prompt("Informe seu nome.");
var pesoInfo = prompt(nomePe+" ,informe seu peso.");
var alturaInfo = prompt(nomePe+" ,informe sua altura.");
var imc = imc(pesoInfo,alturaInfo);

doc(nomePe+",o seu IMC é "+ imc);

if(imc < 19){
doc("Obs: você está abaixo do peso.");}
if(19 < imc < 25){
doc("Obs: você tem o peso ideal.");}
if(25 <= imc < 30){
doc("Obs: você tem sobrepeso.");}
if(30 <= imc < 40){
doc("Obs: você tem obesidade do tipo I.");}
if(imc > 40){
doc("Obs: você tem obesidade mórbida.");}
</script>
1 resposta
solução!

Fala Gabriel! Tudo bem contigo?

Desculpe a demora em dar um retorno!!!

Vamos supor que os seguintes valores foram meus resultados:

  • Cassio
  • 98 kg
  • 1.90 m

Supor não... estou pesado sim rsrs

Enfim... meu IMC gerado foi 27. Vamos ver o percurso ele está fazendo

Primeiro ele confere se meu imc (27) é menor que 19. Não é! Logo não entrará nessa condicional

if(imc < 19){
doc("Obs: você está abaixo do peso.");}

Partimos para a segunda. 19 é menor que meu imc (27) ? Bateu!!! Já vai lançar o texto e nem vai comparar com o 25. Mais a frente explicarei o porquê.

if(19 < imc < 25){
doc("Obs: você tem o peso ideal.");}

A terceira condicional vai perguntar se 25 é menor ou igual a meu imc (27). Bateu novamente e também não olhará a segunda comparação menor que 30 (que também estaria correta).

if(25 <= imc < 30){
doc("Obs: você tem sobrepeso.");}

A quarta condicional questiona se 30 é menor ou igual a meu imc (27). Agora está fora, mas ele olha para o lado e vê que meu imc é menor que 40, logo, lançará o texto também

if(30 <= imc < 40){
doc("Obs: você tem obesidade do tipo I.");}

A quinta e última vai comparar se meu imc (27) é maior que 40. Com certeza não (ainda bem rsrs) e vai ignorar essa condicional.

if(imc > 40){
doc("Obs: você tem obesidade mórbida.");}

Então temos três resultados dentro de um mesmo resultado.

Isso acontece porque temos condicionais que "não se conversam", a grosso modo dizendo. Seria interessante colocarmos todos dentro de uma sequencia de condicionais e utilizando o parceiro do if, que seria o else.

if(imc < 19){
    doc("Obs: você está abaixo do peso.");
} else if(19 < imc < 25){
    doc("Obs: você tem o peso ideal.");
    } else if(25 <= imc < 30){
        doc("Obs: você tem sobrepeso.");
        } else if(30 <= imc < 40){
            doc("Obs: você tem obesidade do tipo I.");
            } else if(imc > 40){
                doc("Obs: você tem obesidade mórbida.");
            }

Ok! Agora está gerando somente um resultado que estou com o peso ideal, mas está errado, pois me encaixo no sobrepeso.

Quando vamos fazer comparativos temos que fazer dois tipos de comparação em uma mesma condicional. Exemplo:

  • meu imc é maior ou igual a 25 e meu imc é menor que 30

Veja que temos dois comparativos e ambos tem que ser verdade, uma vez que estou utilizando o operador lógico (e)

Dessa forma, esse exemplo acima ficaria

    } else if(imc >= 25 && imc < 30){
        doc("Obs: você tem sobrepeso.");

Agora está dentro do parâmetro!!!

Tente fazer essa mesma lógica os demais como exercício, Gabriel!

Espero ter ajudado e bons estudos!!!