Fala Gabriel! Tudo bem contigo?
Desculpe a demora em dar um retorno!!!
Vamos supor que os seguintes valores foram meus resultados:
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!!!