Треки
/
Ruby
Ruby
/
Вправи
/
Конвеєр
Конвеєр

Конвеєр

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

Вступ

Числа

У Ruby найпоширеніші два типи чисел:

  • Цілі числа: числа без цифр після десяткового розділювача (цілі числа). Наприклад, -6, 0, 1, 25, 976 і 500000.
  • Числа з плаваючою комою: числа з однією або кількома цифрами після десяткового розділювача. Наприклад, -2.4, 0.1, 3.14, 16.984025 і 1024.0.

Вони реалізовані через класи Integer і Float.

Ці класи мають методи, які перетворюють значення з одного типу на інший. Цілі числа Integer точні до цілої одиниці, тоді як Float має точність, дробову щодо цілого числа:

  • Integer#to_f: перетворює на нове число з плаваючою комою
  • Float#ceil: округляє вгору до найближчого цілого числа
  • Float#floor: округляє вниз до найближчого цілого числа
  • Float#round: округляє до найближчого цілого числа
  • Float#to_i: усікає до найближчого цілого числа

Умовні конструкції

У Ruby є так звані вирази керування потоком. Вони керують тим, як виконується програма, і приймають правдиве або неправдиве значення.

Існують оператори, які створюють правдиві або неправдиві значення. Їх називають операторами порівняння.

Є два основні керуючі вирази, які визначають, який код виконається, а який ні. Інакше кажучи, яка саме гілка спрацює.

Це if і вираз unless.

Оператори порівняння

Оператори порівняння використовують, щоб порівнювати значення й повертати true або false.

Наведені нижче оператори потребують двох значень одного типу для порівняння. Якщо значення різних типів, компілятор видасть помилку. Ось список операторів і приклад, коли вони дають значення true:

Метод Опис Приклад
< менше ніж 4 < 5
<= менше ніж або дорівнює 4 <= 4
> більше ніж 3 > 1
>= більше ніж або дорівнює 2 >= 2

Оператори рівності й нерівності, на відміну від уже згаданих, можна застосовувати до значень будь-якого типу. Оператор == перевіряє, чи два значення рівні, і це включає перевірку типу значення. != працює так само, але повертає true, якщо значення не рівні, і false, якщо рівні. Ось список операторів рівності й нерівності та приклад, коли вони дають значення true:

Метод Опис Приклад
== дорівнює 4 == 4
!= не дорівнює 5 != 4

Конструкція if

Конструкцію if використовують, щоб перевірити, чи задана умова «правдива» чи «неправдива». Якщо умова правдива, виконається код усередині конструкції if. Конструкція if завершується ключовим словом end.

value = 1
if value == 1
  "1 is equal to 1"
end
# => "1 is equal to 1"

if value > 2
  "1 is greater than 2"
end
# => nil

Конструкція unless

Конструкція unless працює дуже схоже на конструкцію if, але виконує код усередині себе, якщо умова неправдива.

value = 1
unless value == 1
  "1 is not equal to 1"
end
# => nil

unless value > 2
  "1 is not greater than 2"
end
# => "1 is not greater than 2"

Конструкція else

Конструкцію else можна використовувати разом із конструкцією if. Конструкція else виконається, якщо гілка if не виконалася.

value = 1
if value == 1
  "1 is equal to 1"
else
  "1 is not equal to 1"
end
# => "1 is equal to 1"

«Каскадні» конструкції if

Конструкцію elsif можна використовувати разом із конструкцією if. Конструкція elsif виконається, якщо гілка if не виконалася, а умова конструкції elsif правдива. Конструкції elsif можна обʼєднувати в ланцюжок, і виконається перша правдива умова. Наприкінці конструкції if також може бути конструкція else, яка виконається, якщо жодна з попередніх умов не була правдивою.

value = 1
if value != 1
  "1 is not equal to 1"
elsif value > 2
  "1 is greater than 2"
else
  "1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"

Вказівки

У цій вправі ми будемо писати код для аналізу виробництва на складальній лінії автомобільного заводу. Швидкість складальної лінії може бути від 0 (вимкнено) до 10 (максимум).

На найменшій швидкості (1) щогодини виробляється 221 автомобіль. Обсяг виробництва зростає лінійно зі швидкістю. Тож за швидкості 4 вона має виробляти 4 * 221 = 884 автомобілі на годину. Однак вищі швидкості підвищують імовірність випуску бракованих автомобілів, які потім доводиться відкидати. Наступна таблиця показує, як швидкість впливає на успішність:

  • 1 до 4: 100% успішності.
  • 5 до 8: 90% успішності.
  • 9: 80% успішності.
  • 10: 77% успішності.

На нас чекають два завдання.

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

Реалізуйте метод AssemblyLine#production_rate_per_hour, щоб обчислити швидкість виробництва складальної лінії за годину з урахуванням успішності. Зверніть увагу, що метод повертає екземпляр класу Float.

AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4

2. Обчислити кількість робочих автомобілів, виготовлених за хвилину

Реалізуйте метод AssemblyLine#working_items_per_minute, щоб обчислити, скільки готових робочих автомобілів виготовляється за хвилину. Зверніть увагу, що метод повертає екземпляр класу Integer.

AssemblyLine.new(6).working_items_per_minute
#=> 19
Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Ruby Exercism

Час розпочати Конвеєр?

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