Tracks
/
JavaScript
JavaScript
/
Ejercicios
/
La deliciosa lasaña de Lucian
La deliciosa lasaña de Lucian

La deliciosa lasaña de Lucian

Ejercicio de aprendizaje

Introducción

JavaScript es un lenguaje dinámico que admite estilos orientados a objetos, imperativos y declarativos (por ejemplo, la programación funcional).

Variables

Hay algunas formas principales de asignar valores a nombres en JavaScript: usar variables o constantes. En Exercism, las variables siempre se escriben en camelCase; las constantes se escriben en SCREAMING_SNAKE_CASE. No hay una guía oficial que seguir, y distintas empresas y organizaciones tienen distintas guías de estilo. Puedes escribir las variables como prefieras. La ventaja de escribirlas como se preparan en los ejercicios es que se resaltarán de forma diferente en la interfaz web y en la mayoría de los IDE.

Las variables en JavaScript se pueden definir con la palabra clave const, let o var.

Una variable puede hacer referencia a distintos valores a lo largo de su vida cuando usas let o var. Por ejemplo, myFirstVariable se puede definir y redefinir muchas veces con el operador de asignación =:

let myFirstVariable = 1;
myFirstVariable = 'Some string';
myFirstVariable = new SomeComplexClass();

A diferencia de let y var, las variables que se definen con const solo se pueden asignar una vez. Esto se usa para definir constantes en JavaScript.

const MY_FIRST_CONSTANT = 10;

// Can not be re-assigned.
MY_FIRST_CONSTANT = 20;
// => TypeError: Assignment to constant variable.
Note

💡 En un ejercicio de concepto posterior se explora y explica la diferencia entre la asignación de una constante, el enlace de una constante y el valor de una constante.

Declaraciones de funciones

En JavaScript, las unidades de funcionalidad se encapsulan en funciones, que por lo general se agrupan en el mismo archivo si van juntas. Estas funciones tienen parámetros (así que pueden recibir argumentos) y pueden devolver un valor usando la palabra clave return. Las funciones se invocan con la sintaxis ().

function add(num1, num2) {
  return num1 + num2;
}

add(1, 3);
// => 4

En este ejemplo, el nombre de la función es add. Tiene dos parámetros, num1 y num2. Devuelve un valor: el resultado de la expresión num1 + num2.

Luego se llama a la función add con dos argumentos: 1 y 3. El resultado de la función, el valor devuelto, es 4.

Note

💡 En JavaScript hay muchas formas distintas de declarar una función. Algunas de estas otras formas se ven diferentes a usar la palabra clave function. El track intenta presentarlas de forma gradual, pero si ya las conoces, puedes usar la que quieras. En la mayoría de los casos, usar una u otra no es mejor ni peor.

Exponerlas a otros archivos

Para que una function, una constante o una variable estén disponibles en otros archivos, hay que exportarlas con la palabra clave export. Otro archivo puede luego importarlas con la palabra clave import. Esto también se conoce como el sistema de módulos.

Un gran ejemplo es cómo funcionan todas las pruebas. Cada ejercicio tiene al menos un archivo, por ejemplo lasagna.js, que contiene la implementación. La implementación se exporta desde el archivo con export, lo que la hace disponible para importarla en otro archivo. Además, hay al menos otro archivo, por ejemplo lasagna.spec.js, que contiene las pruebas. Este archivo importa con import las entidades públicas (es decir, las exportadas con export) para así probar la implementación:

// file.js
export const MY_VALUE = 10;

export function add(num1, num2) {
  return num1 + num2;
}

// file.spec.js
import { MY_VALUE, add } from './file';

add(MY_VALUE, 5);
// => 15

Instrucciones

La novia de Lucian está de camino a casa, ¡y él no ha cocinado la cena de su aniversario!

En este ejercicio, vas a escribir algo de código para ayudar a Lucian a cocinar una lasaña exquisita de su libro de cocina favorito.

Tienes cuatro tareas relacionadas con el tiempo dedicado a cocinar la lasaña.

1. Define el tiempo esperado en el horno, en minutos

Define la constante EXPECTED_MINUTES_IN_OVEN que representa cuántos minutos debe estar la lasaña en el horno. Debe exportarse. Según el libro de cocina, el tiempo esperado en el horno, en minutos, es 40.

2. Calcula el tiempo restante en el horno, en minutos

Implementa la función remainingMinutesInOven, que recibe como parámetro los minutos actuales que la lasaña lleva en el horno y devuelve cuántos minutos le quedan aún en el horno, según el tiempo esperado en el horno en minutos de la tarea anterior.

remainingMinutesInOven(30);
// => 10

3. Calcula el tiempo de preparación, en minutos

Implementa la función preparationTimeInMinutes, que recibe como parámetro el número de capas que le agregaste a la lasaña y devuelve cuántos minutos dedicaste a prepararla, suponiendo que preparar cada capa te lleva 2 minutos.

preparationTimeInMinutes(2);
// => 4

4. Calcula el tiempo total de trabajo, en minutos

Implementa la función totalTimeInMinutes, que recibe dos parámetros: el parámetro numberOfLayers es el número de capas que le agregaste a la lasaña, y el parámetro actualMinutesInOven es el número de minutos que la lasaña lleva en el horno. La función debe devolver cuántos minutos en total has dedicado a cocinar la lasaña, que es la suma del tiempo de preparación en minutos y el tiempo en minutos que la lasaña ha pasado en el horno hasta el momento.

totalTimeInMinutes(3, 20);
// => 26
Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
JavaScript Exercism

¿Todo listo para empezar La deliciosa lasaña de Lucian?

Regístrate en Exercism para aprender y dominar JavaScript con 37 conceptos159 ejercicios y mentoría humana real, todo gratis.