Треки
/
Ruby
Ruby
/
Вправи
/
Лазанья
Лазанья

Лазанья

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

Вступ

Ця вправа навчить нас базових складників мови Ruby. Тут буде багато матеріалу, але не варто хвилюватися, якщо щось видасться надто складним: ми розглянемо все набагато глибше в міру просування треком.

Одна з ключових речей, які варто зрозуміти про Ruby, полягає в тому, що це обʼєктно-орієнтована мова і що усе в Ruby є обʼєктом. Числа, рядки тексту (англ. string), масиви, усе це обʼєкти.

Змінні та константи

Ми зазвичай користуємося обʼєктами, даючи їм імена за допомогою змінних або констант.

Змінні завжди записують у зміїному регістрі. Змінна протягом свого існування може посилатися на різні обʼєкти. Наприклад, my_first_variable можна визначати й перевизначати багато разів за допомогою оператора =:

my_first_variable = 1
my_first_variable = "Some string"
my_first_variable = SomeComplexObject.new

Константи ж передбачають лише одне присвоєння. Вони мають починатися з великої літери й зазвичай пишуться великими літерами, а слова розділяються підкресленнями. Наприклад:

MY_FIRST_CONSTANT = 10

# Redefining not allowed
# MY_FIRST_CONSTANT = "Some String"

Класи

Ruby організовано в класи. Класи визначають за допомогою ключового слова class, після якого йде назва класу. Обʼєкти зазвичай створюють шляхом побудови примірників класів за допомогою методу .new. Наприклад:

# Define the class
class Calculator
  #...
end

# Create an instance of it and assign it to a variable
my_first_calc = Calculator.new

Методи

Одиниці функціональності інкапсульовані в методах, подібно до функцій в інших мовах.

Метод можна визначити з позиційними аргументами, ключовими аргументами (які визначають і викликають за допомогою синтаксису :) або взагалі без аргументів.

Методи або неявно повертають результат останньої виконаної інструкції, або можуть явно повернути обʼєкт за допомогою ключового слова return.

class Calculator

  # Positional arguments
  def add(num1, num2)
    return num1 + num2 # Explicit return
  end

  # Keyword arguments
  def multiply(num1:, num2:)
    num1 * num2 # Implicit return
  end
end

Методи викликають за допомогою синтаксису .:

calc = Calculator.new
calc.add(1, 3)
calc.multiply(num1: 2, num2: 5)

Вказівки

У цій вправі ми напишемо трохи коду, який допоможе приготувати чудову лазанью за улюбленою кулінарною книгою.

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

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

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

Lasagna::EXPECTED_MINUTES_IN_OVEN
# => 40

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

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

lasagna = Lasagna.new
lasagna.remaining_minutes_in_oven(30)
# => 10

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

Визначте метод Lasagna#preparation_time_in_minutes, який приймає як параметр кількість шарів, які ми додали до лазаньї, і повертає, скільки хвилин ми витратили на підготовку лазаньї, за умови, що на кожен шар іде 2 хвилини.

lasagna = Lasagna.new
lasagna.preparation_time_in_minutes(2)
# => 4

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

Визначте метод Lasagna#total_time_in_minutes, який приймає два іменовані параметри: параметр number_of_layers - це кількість шарів, які ми додали до лазаньї, а параметр actual_minutes_in_oven - це кількість хвилин, яку лазанья перебуває в духовці. Функція має повернути, скільки хвилин загалом ми витратили на приготування лазаньї, тобто суму часу підготовки в хвилинах і часу в хвилинах, який лазанья на цей момент провела в духовці.

lasagna = Lasagna.new
lasagna.total_time_in_minutes(number_of_layers: 3, actual_minutes_in_oven: 20)
# => 26
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Ruby Exercism

Час розпочати Лазанья?

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