Треки
/
JavaScript
JavaScript
/
Вправи
/
Смачнюща лазанья Люсіана
Смачнюща лазанья Люсіана

Смачнюща лазанья Люсіана

Навчальна вправа

Вступ

JavaScript належить до динамічних мов, які підтримують обʼєктно-орієнтований, імперативний і декларативний (як-от функціональне програмування) стилі.

Змінні

У JavaScript є кілька основних способів присвоїти значення іменам: за допомогою змінних або констант. На Exercism змінні завжди пишуть у camelCase, а константи - у SCREAMING_SNAKE_CASE. Немає офіційного посібника, якого варто дотримуватися, і в різних компаній та організацій бувають різні посібники зі стилю. Можна писати змінні як завгодно. Перевага писати їх так, як підготовлено у вправах, у тому, що у вебінтерфейсі та більшості IDE вони будуть підсвічуватися по-різному.

Змінні в JavaScript можна визначати за допомогою ключового слова const, let або var.

Змінна може посилатися на різні значення протягом свого життя, якщо використовувати let або var. Наприклад, myFirstVariable можна визначати й перевизначати багато разів за допомогою оператора присвоєння =:

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

На відміну від let і var, змінні, визначені через const, можна присвоїти лише один раз. Так у JavaScript визначають константи.

const MY_FIRST_CONSTANT = 10;

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

💡 У наступній концептуальній вправі ми розглянемо й пояснимо різницю між присвоєнням константі, звʼязуванням константи та значенням константи.

Оголошення функцій

У JavaScript одиниці функціональності інкапсульовані у функціях; зазвичай функції, які належать одна одній, групують в одному файлі. Ці функції мають параметри (тобто можуть приймати аргументи) і можуть повертати значення за допомогою ключового слова return. Функції викликають за допомогою синтаксису ().

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

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

У цьому прикладі функція має назву add. Вона має два параметри: num1 і num2. Вона повертає значення: результат виразу num1 + num2

Потім функцію add викликають з двома аргументами: 1 і 3. Результат роботи функції, повернене значення, - 4.

Note

💡 У JavaScript є багато різних способів оголосити функцію. Деякі з цих інших способів мають інший вигляд, ніж використання ключового слова function. Трек намагається поступово їх подавати, але якщо ці способи вже знайомі, можна використовувати будь-який із них. У більшості випадків жоден із них не кращий і не гірший.

Надання доступу іншим файлам

Щоб зробити function, константу або змінну доступними в інших файлах, їх потрібно експортувати за допомогою ключового слова export. Інший файл може потім імпортувати їх за допомогою ключового слова import. Це також відомо як модульна система.

Чудовий приклад - це те, як працюють усі тести. Кожна вправа має щонайменше один файл, наприклад lasagna.js, який містить реалізацію. Реалізацію експортують із файлу за допомогою export, тож її можна імпортувати в іншому файлі. Крім того, є щонайменше один інший файл, наприклад lasagna.spec.js, який містить тести. Цей файл імпортує публічні (тобто експортовані) сутності, щоб протестувати реалізацію:

// 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

Вказівки

Дівчина Люсіана вже прямує додому, а він ще не приготував вечерю на їхню річницю!

У цій вправі ми напишемо трохи code, щоб допомогти Люсіану приготувати вишукану лазанью з його улюбленої кулінарної книги.

У нас є чотири завдання, повʼязані з часом, витраченим на приготування лазаньї.

1. Визначте очікуваний час у духовці в хвилинах

Визначте константу EXPECTED_MINUTES_IN_OVEN, яка представляє, скільки хвилин лазанья повинна перебувати в духовці. Її потрібно експортувати. Згідно з кулінарною книгою, очікуваний час у духовці в хвилинах становить 40.

2. Обчисліть час, що залишився в духовці, у хвилинах

Реалізуйте функцію remainingMinutesInOven, яка приймає фактичну кількість хвилин, які лазанья вже перебувала в духовці, як параметр і повертає, скільки хвилин лазаньї ще залишилося перебувати в духовці, на основі очікуваного часу в духовці в хвилинах із попереднього завдання.

remainingMinutesInOven(30);
// => 10

3. Обчисліть час підготовки в хвилинах

Реалізуйте функцію preparationTimeInMinutes, яка приймає кількість шарів, які ми додали до лазаньї, як параметр і повертає, скільки хвилин ми витратили на підготовку лазаньї, якщо припустити, що на кожен шар ми витрачаємо 2 хвилини.

preparationTimeInMinutes(2);
// => 4

4. Обчисліть загальний час роботи в хвилинах

Реалізуйте функцію totalTimeInMinutes, яка приймає два параметри: параметр numberOfLayers позначає кількість шарів, які ми додали до лазаньї, а параметр actualMinutesInOven позначає кількість хвилин, які лазанья перебувала в духовці. Функція повинна повернути, скільки хвилин загалом ми працювали над приготуванням лазаньї, що є сумою часу підготовки в хвилинах і часу в хвилинах, який лазанья провела в духовці на даний момент.

totalTimeInMinutes(3, 20);
// => 26
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
JavaScript Exercism

Час розпочати Смачнюща лазанья Люсіана?

Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.