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

DUDA

Hola chicos, revisando de nuevo el curso de lógica de programación 2, me entró una duda: Cuando utilizamos:

function calcularImc(peso,altura) {
        imc = peso / (altura * altura); 
        return(imc);
        }

    var nombre = prompt("Informe su nombre")
    var pesoInformado = prompt(nombre + ", informe su peso")
    var alturaInformado = prompt(nombre + ", informe su altura")
    var imcCalculado = calcularImc(pesoInformado,alturaInformado)
    imprimir(nombre + ", el IMC calculado es " + imcCalculado)

...no utilizamos el parseInt para transformar el texto en números. ¿Eso es porque "10" * 2 = 20 y "10" / 2 = 5 ?, es decir, en la multiplicación y división cuando tenemos un número con un string, el string se convierte a número? Porque en este caso siguiente sí se utilizó el parseInt por ese motivo, pero tiene una suma:

    var victorias = parseInt(prompt("Informe la cantidad de victorias de su equipo de fútbol"));
    var empates = parseInt(prompt("Informe la cantidad de empates"));
    var puntosTotal = victorias * 3 + empates;

    document.write("El total de puntos del equipo es " + puntosTotal);

Muchas gracias.

2 respuestas

Tiene que ver con que JS traduce el + como una concatenación en strings, para los demás operadores no hay tanto problema porque solo pueden hacer operaciones con números.(:

Esto sucede porque js es un lenguaje de tipado debil que en primera instancia no toma el tipo de dato sino el dato en si, lo correcto para que evites tener problemas en tu codigo es que en toda operacion matematica tus variables tenga un dato especifico..... por ejemplo las entradas realizadas por el usuario a traves de un input o prompt toma como tipo de dato predefinido un string, por lo cual el programador debe convertirlo si lo requiere como un numero entero o algun derivado numerico, porque si bien las operaciones matematicas que mencionas arriba se realizan con un resultado correcto no sucedera lo mismo si ese resultado es requerido para verificar un condicional, por jemeplo no es lo mismo preguntar if(num ==10) que if(num === 10), el primero no toma encuenta el tipo de dato sino el valor, mientras que el segundo toma en cuenta los dos y es el que debes utilizar en lenguajes como js, que a diferenci de otros lenguajes no te exoge que identifiques el tipo de dato de una variable o constante.