На цьому уроці ми створимо функції у Ruby. Кожна функція — це простий блок коду, який робить одну конкретну роботу, але у великій програмі функції можуть робити справжні чудеса.
Функція, як вона є
Функція – це як така собі шайтан-машина, в яку ви подаєте якісь дані на вхід і в кінці отримуєте якийсь результат. Такий собі конвеєр. Тому що функцію можна викликати багато разів і не переписувати купу рядочків коду .
Тож у функції є завжди ім’я, а параметри — це ті дані, які ми передаємо в функцію. Також функція може повертати якесь значення.
Отже, на вхід функції ми закидуємо якісь значення-параметри (або ні, можна і без) і на виході можна отримувати значення. У Ruby вже є багато стандартних функцій, якими ми вже користувалися: to_s, upcase, capitalize. Це означає, що розробники Ruby створили багато функцій для нас, але сьогодні ми створимо власні неповторні функції!

Можливо, ви навіть користувалися функціями у Scratch. У прикладах функцію навчили робити одну просту річ — малювати трикутник. А основна програма вміло викликає функцію багато разів, щоб створити різні фігури з них.

Як створити функцію ?
Приклад простої функції add_numbers, яка додає два числа number1 та number2. І повертає їх суму:
# код функції
def add_numbers(number1, number2)
result = number1 + number2
return result
end
# виклик функції
answer = add_numbers(5, 3)
puts answer
Практика. Функції у Ruby
1: Почнемо з простого. Створимо функції для обчислення площі і периметру прямокутника:
# Периметр прямокутника
def rec_p (a,b)
return (a+b)*2
end 
Самостійно створіть функцію на ім’я rec_s, яка обчислить площу прямокутника за формулою a*b .
Коли вже створили перші функції, то треба перевірити, як вони спрацюють. А для цього викличемо їх для прямокутника зі сторонами 14 і 32, наприклад:
puts rec_s(14,32) # площа
puts rec_p(14,32) # периметрСпробуйте викликати ці функції для прямокутника з іншими сторонами.
Є маленька “підводна” проблема в Ruby: не можна ставити пробіл між методом і дужками, коли передаєте аргументи. Ruby сприймає це як окремий виклик і це викликає помилку.
2: Створіть змінні a та b з якимись цілими значеннями. Викличте функції з першого завдання з параметрами a та b.
3: Спробуйте послідовно розв’язати всі приклади за допомогою функцій та скласти слово.

У вас має вийти термін, який часто використовують в процесі написання великих програм у команді програмістів. Докладніше читайте далі. 💻😎 – це той самий термін.
💻😎 — це коли ваш код переглядають інші програмісти, щоб переконатися, що він працює правильно, його легко читати і в ньому немає багів. Уявіть, що ви написали історію або малюнок, а друг уважно дивиться, підказує, що можна покращити, а що вже дуже добре.
Мета 💻😎 — зробити код якіснішим, щоб інші могли його зрозуміти і щоб програма працювала без проблем.
Простіше кажучи: ви створюєте щось своє, а 💻😎 — це як тест-драйв від інших, щоб ваш «проєкт» був крутішим і безпечнішим.

Функції у Ruby для трикутників
4: Тепер до трикутників. Є таке правило, що всі кути трикутника разом дають 180 градусів. Якщо відомо два кути з 3-х, то як знайти третій ? От для цього і створимо функцію!
Створіть функцію tri_angle з параметрами a1 та a2 (це відомі кути трикутника)
Функція має повертати: 180-a1-a2Задамо в змінні два перших кути і визначимо третій. Самостійно виведіть всі кути такого трикутника на екран.
n=70
m=70
l=tri_angle(n, m)
Спробуйте з різними кутами.

5: Не зупиняймось! Створімо велику функцію для визначення, якого типу наш трикутник: прямокутний, тупокутний чи гострокутний.
Якщо є один кут 90 градусів — прямокутний 🔺.
Якщо є один кут > 90 градусів — тупокутний 🔺.
Інакше (всі кути менше ніж 90 градусів) — гострокутний 🔺.

План:
- Створіть функцію tri_type з параметрами a,b та c – кути трикутника.
- Якщо a == 90 або b або c — повернути “Прямокутний”.
Якщо a>90 або b або c — повернути “Тупокутний”
Інакше —”Гострокутний” - Перевірте роботу функції на змінних з минулого завдання (або стовріть нові):
puts “трикутник з кутами #{n} #{m} #{l} #{tri_type(n,m,l)}”
Спробуйте протестувати з різними змінними, щоб утворилися різні трикутники.
6: Створіть функцію, яка малює трикутник зі смайликів. Параметри : смайлик і розмір трикутника : draw_triangle(“😎”, 5)
😎
😎😎
😎😎😎
😎😎😎😎
😎😎😎😎😎
🔥
🔥🔥
🔥🔥🔥
🔥🔥🔥🔥
🎉
🎉🎉
🎉🎉🎉
🎉🎉🎉🎉
🎉🎉🎉🎉🎉
🎉🎉🎉🎉🎉🎉11. Функції у Ruby
7: Створіть функції, які зможуть розв’язувати різноманітні задачі на рух. Всього має бути 3 функції:
знаходити відстань, якщо відомо час і швидкість
знаходити час за відстанню і швидкістю
знаходити швидкість за відстанню і часом

Ось початок:
def math_GET_s (v,t)
s=v*t
puts "Відстань: #{s}"
endІ виклик: math_GET_s(106, 9)
Також, при діленні, щоб програма працювала для дробових чисел, треба одне з чисел переводити в дробове відразу у функції, наприклад:
t=s.to_f/v
Так, програма працюватиме, для прикладу, коли є відстань у 3 км і швидкість 6 км/год.
Створіть інші функції. Протестуйте їх на задачках з таблиці.(Функції для цього завдання змінювати НЕ ТРЕБА, тільки викликати з правильними параметрами)


Домашня робота
В домашці вам знадобляться функції з класної роботи. Скопіюйте їх собі. Домашку можете робити в одному файлі.
Пам’ятайте, що основна задача функцій : не писати один і той самий код по кілька разів. Функція пишеться ОДИН РАЗ і потім використовується з різними значеннями
1: Створіть функції для визначення площі і периметра трикутника.
Площа трикутника = a*h/2. Де а – сторона трикутника, h — висота трикутника.


Визначте за допомогою цих функцій :

Площу і периметр однієї чіпсині Doritos. Така чіпсина має всі сторони по 40 мм. І висоту 34 мм.

Периметр всіх млинців на картинці.
Сторони млинців : 62, 85 і 108 мм.
Зверніть увагу, що у нас 6 млинців!
2: Перевірте, які ці трикутники (Тупокутні, гострокутні чи прямокутні). Використайте функцію(ми робили її на занятті) і виведіть результат на екран


3: Створіть функцію для визначення типу трикутника. У функції має бути три параметри (три сторони).
Якщо всі сторони рівні, то трикутник рівносторонній.
Якщо дві сторони рівні, а третя не рівна, то трикутник рівнобедрений.
Якщо всі сторони мають різні довжини, то трикутник різносторонній.
Виведіть на екран роботу функції для трикутника кожного виду.


Level Up!
Функції у Ruby
1: Створіть свій власний проєкт, який всередині матиме хоча б одну функцію. Проєкт — це ваша ідея, запрограмована на рубі. 🦄


Не зупиняйтесь у вивченні Ruby! До зустрічі на наступних уроках!
