Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
6
respuestas

Condicional IF duda

Buena noche, me encontraba en el ejercicio de calculo de IMC y pese a que me estoy adelantando a lo que aun no he visto, lei sobre condicionales y quise intentar hacerle un arreglo al código, pero no me ha salido X.x la cosa va asi: Quiero agregar un rango y que este me entregue un mensaje busque una tabla de IMC para adultos y quise replicarla, por ende si mi IMC esta entre X y Y entonces yo estoy en X condición física pero mi actual codigo solo me reconoce el primer if en su rango, los otros 6 los omite O.o

<meta charset ="UTF-8">
<h1> Calcular IMC </h1>


<script>
    function imprimirPantalla(frase) {

        document.write(frase);
        document.write("<br><br>");

    }

    function calcularImc(peso,altura){

        return (peso/(altura*altura))  
    }

    nombre = prompt("Ingrese su Nombre")
    pesoPersona= prompt(nombre + ", Ingrese su Peso en Kilos")
    alturaPersona= prompt(nombre + ", Ingrese su Altura en Metros")

    imcPersona = calcularImc(pesoPersona,alturaPersona)

    imprimirPantalla(nombre + ", Su IMC es De: " + Math.round(imcPersona))

    if (imcPersona < 16 ) {
       imprimirPantalla("Usted Se Encuentra En: DESNUTRICION SEVERA")
    }
    if (imcPersona == 16.1 || imcPersona == 18.4 ) {
       imprimirPantalla("Usted Se Encuentra En: DESNUTRICION MODERADA")
    }
    if (imcPersona == 18.5 || imcPersona == 22 ) {
       imprimirPantalla("Usted Se Encuentra: BAJO DE PESO")
    }
    if (imcPersona == 22.1 || imcPersona == 24.9 ) {
       imprimirPantalla("Usted Se Encuentra: PESO NORMAL")
    }
    if (imcPersona == 25 || imcPersona == 29.9 ) {
       imprimirPantalla("Usted Se Encuentra En: SOBREPESO")
    }
    if (imcPersona == 30 || imcPersona == 34.9 ) {
       imprimirPantalla("Usted Se Encuentra En: OBESIDAD TIPO 1")
    }
    if (imcPersona == 35 || imcPersona == 39.9 ) {
       imprimirPantalla("Usted Se Encuentra En: OBESIDAD TIPO 2")
    }
    if (imcPersona > 40 ) {
       imprimirPantalla("Usted Se Encuentra En: OBESIDAD TIPO 3")
    }

</script>
6 respuestas

Buenas, en este caso el uso correcto del if seria de la siguiente forma

<meta charset ="UTF-8">
<h1> Calcular IMC </h1>


<script>
    function imprimirPantalla(frase) {

        document.write(frase);
        document.write("<br><br>");

    }

    function calcularImc(peso,altura){

        return (peso/(altura*altura))  
    }

    nombre = prompt("Ingrese su Nombre")
    pesoPersona= prompt(nombre + ", Ingrese su Peso en Kilos")
    alturaPersona= prompt(nombre + ", Ingrese su Altura en Metros")

    imcPersona = calcularImc(pesoPersona,alturaPersona)

    imprimirPantalla(nombre + ", Su IMC es De: " + Math.round(imcPersona))

    if (imcPersona < 16 ) {
       imprimirPantalla("Usted Se Encuentra En: DESNUTRICION SEVERA")
    }
    if ((imcPersona > 16.1 )&&( imcPersona <= 18.4 )) {
       imprimirPantalla("Usted Se Encuentra En: DESNUTRICION MODERADA")
    }
    if ((imcPersona >= 18.5) && (imcPersona <= 22 )) {
       imprimirPantalla("Usted Se Encuentra: BAJO DE PESO")
    }
    if ((imcPersona >= 22.1) && (imcPersona <= 24.9 )) {
       imprimirPantalla("Usted Se Encuentra: PESO NORMAL")
    }
    if ((imcPersona >= 25) && (imcPersona <= 29.9 )) {
       imprimirPantalla("Usted Se Encuentra En: SOBREPESO")
    }
    if ((imcPersona >= 30) && (imcPersona <= 34.9 )) {
       imprimirPantalla("Usted Se Encuentra En: OBESIDAD TIPO 1")
    }
    if ((imcPersona >= 35) && (imcPersona <= 39.9 )) {
       imprimirPantalla("Usted Se Encuentra En: OBESIDAD TIPO 2")
    }
    if (imcPersona > 40 ) {
       imprimirPantalla("Usted Se Encuentra En: OBESIDAD TIPO 3")
    }

</script>

Buena noche, Gaston os pregunto tenia entendido que && = y || = o por ello crei que la condicion era: si "z" es igual a "xvalor" O "xvalor" imprima, ya que con un y seria algo como: si "z" es igual a "xvalor" Y "xvalor" imprima bueno creo q no me di a entender bien, pero a como lo estoy leyendo como que menos lo entiendo X.x

Igual gracias por el aporte :D

((imcPersona >= 22.1) && (imcPersona <= 24.9 )) en ese caso se esta diciendo que si x es mayor o igual a 22.1 Y x es menor o igual a 24.9 va a decir la sentencia que sigue, en este caso estas tomando todos los valores que hay intermedios entre 22.1 y 24.9 en el caso tuyo solo estaria entrando en los valores 22.1 y 24.9 en el resto no

Hola, Yorman! El detalle está en que tus condiciones tienen error en la sintaxis:

if (imcPersona == 30 && imcPersona == 34.9 )

Tomando como ejemplo una de las que pusiste, tienes que imcPersona debe ser exactamente igual a 30 o 34.9; por lo que el valor que tú llegues a calcular debería ser exactamente uno de esos dos. Lo correcto sería:

if (imcPersona  >=  30 && imcPersona  <= 34.9 )

Para que así puedas lograr tomar todos los valores que están dentro de ese rango.

Con && ambas condiciones deben ser verdaderas para ser tomada en cuenta. Con || sólo una de ellas debe ser verdadera para ser tomada en cuenta.

Espero haber podido aclarar un poco más tu duda, saludos. :)

Compañero Sebastián, gracias por su aporte logre aclarar mi duda :D

Para que tu valor de IMC este dentro del rango que quieres verificar, por ejemplo el de SOBREPESO, se deben cumplir ambas condiciones

IMC mayor/igual que 25 y IMC menor que 30. Por eso utilizas el operador booleano Y y no el O.

Por otro lado, te recomiendo no olvides las buenas practicas... ";" al final de cada linea de código o instrucción.... a veces este simple símbolo genera muchos dolores de cabeza :D.

Saludos!!!