005. Ejercicios de lógica de programación

En este capítulo estamos trabajando con números y fechas, los ejercicios que vamos a hacer son los siguientes.

1. Conversión de números de base binaria a decimal

Vamos a crear una función que convierta números de base binaria a decimal y viceversa.

      const convertirBinarioDecimal = (
        numero = undefined,
        base = undefined
      ) => {
        if (numero === undefined)
          return console.log("No ingresaste el número a convertir");

        if (typeof numero !== "number")
          return console.log("El parámetro número tiene que ser un número");

        if (base === undefined) return console.log("No ingresaste una base");

        if (typeof base !== "number")
          return console.log("La base ingresada no es un número");

        if (base === 2) {
          return console.log(
            `${numero} base ${base} = ${parseInt(numero, base)} base 10`
          );
        } else if (base === 10) {
          return console.log(
            `${numero} base ${base} = ${numero.toString(2)} base 2`
          );
        } else {
          return console.log("El tipo de base a convertir no es válido");
        }
      };

      convertirBinarioDecimal();
      convertirBinarioDecimal(100, 2);
      convertirBinarioDecimal(4, 10);
      convertirBinarioDecimal(4, 100);

2. Monto final

Vamos a programar una función que devuelva el monto final después de aplicar descuento a una cantidad dada.

      const aplicarDescuento = (monto = undefined, descuento = 0) => {
        if (monto === undefined) return console.log("No ingresaste el monto");

        if (typeof monto !== "number")
          return console.log("No ingresaste un número");

        if (monto === 0) return console.log("El monto no puede ser cero");

        if (Math.sign(monto) === -1)
          return console.log("El monto no puede ser negativo");

        if (typeof descuento !== "number")
          return console.log("El descuento no es un número");

        if (Math.sign(descuento) === -1)
          return console.log("El descuento no puede ser negativo");

        return console.log(
          `${monto} - ${descuento}% = ${monto - (monto * descuento) / 100}`
        );
      };
,
      aplicarDescuento(100, 10);
      aplicarDescuento(100, 100);
      aplicarDescuento(100, 20);

3. Cuantos años han pasado

Vamos a programar una función que, dada una fecha válida,determine cuantos años han pasado hasta el día de hoy. Para este ejercicio vamos a utilizar el formato timestamp, que significa cuantos milisegundos han pasado del 1 de enero de 1970 hasta ahora. Lo que interesaría sería convertir ambas fechas a valores timestamp, hacer la operación aritmética que tengamos que hacer, y esto, nuevamente volverlo a convertir a la unidad de tiempo que necesitemos nuevamente (segundos, horas…).

      const calcularAnios = (fecha = undefined) => {
        if (fecha === undefined) return console.log("No mandaste la fecha");

        if (!(fecha instanceof Date))
          return console.log("El valor que ingresaste no es una fecha válida");

        // Variable expresada en milisegundos
        let hoyMenosFecha = new Date().getTime() - fecha.getTime();

        // Transformación de milisegundos a una fecha entendible
        let aniosEnMilisegundos = 1000 * 60 * 60 * 24 * 365;

        let aniosHumanos = Math.floor(hoyMenosFecha / aniosEnMilisegundos);

        return Math.sign(aniosHumanos) === -1
          ? console.log(
              `Faltan ${Math.abs(
                aniosHumanos
              )} años para el ${fecha.getFullYear()}`
            )
          : Math.sign(aniosHumanos) === 1
          ? console.log(
              `Han pasado ${aniosHumanos} años desde ${fecha.getFullYear()}`
            )
          : console.log(`Estamos en el año actual: ${fecha.getFullYear()}`);
      };

      calcularAnios(new Date());
      calcularAnios(new Date(1972, 2, 14));
      calcularAnios(new Date(1872, 2, 14));
      calcularAnios(new Date(2050, 2, 14));
Scroll al inicio