Глава 9 з 27

Безкоштовно

3: Будуємо перші програми

⏱️ 40-55 хвилин
📊 beginner

Розділ 9: "Функції: корисні заклинання"

Професор Біт запросив Алісу на кухню, де він збирався готувати піцу.

— Сьогодні ми будемо говорити про функції, — сказав Професор, надягаючи фартух. — І приготування піци допоможе нам зрозуміти цю концепцію.

— Функції? — перепитала Аліса. — Як в математиці?

— У програмуванні функції схожі на математичні, але вони можуть робити набагато більше, — пояснив Професор. — Функція — це набір команд, які виконують певне завдання. Ми даємо цьому набору ім'я, і потім можемо викликати його, коли нам потрібно.

Професор дістав рецепт піци:
— Дивись, весь процес приготування піци можна розбити на окремі завдання: замісити тісто, приготувати соус, натерти сир, викласти начинку, запекти в духовці. Кожне таке завдання ми можемо оформити як окрему функцію.

Він на мить замовк і тихо прочитав:

Какая функция цветка?
Зачем ему цвести и пахнуть?
Чтоб, красоту увидев, ахнуть,
Коснувшись шёлка лепестка!

Какие функции лесов?
Они как будто прячут что-то,
Приберегают для кого-то
Под сенью вековых стволов.

Известных действий и шагов
Набор цикличных повторений,
План из намерений и мнений
Ты в функцию собрать готов.

Рецепт — как функции шаблон:
Едва подумаешь о блюде,
Как мысль твои нейроны будит,
Чтоб в точности свершился он.

Рождаясь с функцией такой:
Дышать, любить, расти, стремиться,
Чтоб уникально проявиться —
Собой рождается любой.

Байт вивів на свій екран приклад коду:

python
def замісити_тісто():
print("1. Насипаємо борошно")
print("2. Додаємо воду")
print("3. Додаємо сіль і дріжджі")
print("4. Замішуємо")
print("5. Даємо постояти 30 хвилин")

def приготувати_соус():
print("1. Подрібнюємо помідори")
print("2. Додаємо спеції")
print("3. Варимо 15 хвилин")

def приготувати_піцу():
замісити_тісто()
приготувати_соус()
print("Розкочуємо тісто")
print("Викладаємо соус")
print("Сиплемо сиром")
print("Викладаємо начинку")
print("Запікаємо 15 хвилин при 220 градусах")
print("Піца готова!")

— Бачиш, — сказав Професор, починаючи замішувати тісто, — ми створили три функції. Перші дві виконують окремі кроки, а третя використовує їх і додає свої дії.

На кухні: функції замісити<em class=тісто, приготуватисоус і приготувати_піцу" class="rounded-lg shadow-md w-full h-auto" loading="lazy" decoding="async" />

— Ключове слово def означає "визначити функцію", — додав він. — Після нього йде ім'я функції та дужки. Всередині дужок можуть бути параметри, але про це трохи пізніше.

— А навіщо потрібні функції? — запитала Аліса, допомагаючи терти сир. — Чому б просто не написати всі команди по порядку?

Логік, що спостерігала за процесом з верхньої полиці, відповіла:
— Функції вирішують кілька важливих завдань:

1. Повторне використання коду — якщо тобі потрібно виконати одну й ту саму дію кілька разів, ти можеш просто викликати функцію, а не копіювати код.
2. Структурування програми — функції роблять код більш організованим і зрозумілим.
3. Абстракція — ти можеш викликати функцію, не замислюючись про те, як саме вона працює всередині.

— Як з рецептом піци! — здогадалась Аліса. — Я можу сказати "приготувати піцу", і це зрозуміло, навіть якщо я не пам'ятаю всі кроки.

— Саме так! — зрадів Професор. — А тепер поговоримо про параметри функцій.

Він написав новий приклад:

python
def привітати(ім'я):
print("Привіт, " + ім'я + "!")

привітати("Аліса") # Виведе: Привіт, Аліса!
привітати("Байт") # Виведе: Привіт, Байт!

— Параметри — це інформація, яку ми передаємо в функцію, — пояснив Професор. — У цьому прикладі функція привітати приймає параметр ім'я і використовує його для створення привітання.

— А можна передавати кілька параметрів? — запитала Аліса.

— Звичайно! — кивнув Професор, дістаючи продукти для соусу. — Ось приклад функції з кількома параметрами:

python
def приготувати_піцу(розмір, начинка, сир):
print("Готуємо піцу розміру", розмір)
print("Начинка:", начинка)
print("Сир:", сир)
# ... решта кроків приготування ...

приготувати_піцу("велика", "пепероні", "моцарела")
приготувати_піцу("маленька", "гриби та оливки", "чеддер")

— Так ми можемо готувати різні піци з різними параметрами, використовуючи одну й ту саму функцію! — вигукнула Аліса.

— Вірно! — підтвердив Професор. — А ще функції можуть повертати результат за допомогою команди return.

python
def додати(a, b):
сума = a + b
return сума

результат = додати(5, 3) # результат дорівнюватиме 8
print(результат)

— Тут функція додати приймає два числа, складає їх і повертає результат, — пояснив він. — Цей результат можна зберегти в змінну або одразу використати.

Байт продемонстрував ще один приклад:

python
def розрахувати_вартість(товар, кількість):
if товар == "яблуко":
ціна = 10
elif товар == "банан":
ціна = 15
else:
ціна = 20

всього = ціна * кількість
return всього

сума = розрахувативартість("яблуко", 5) + розрахувативартість("банан", 3)
print("До оплати:", сума, "гривень")

— Функції можна комбінувати і викликати одну з іншої, — додав Професор, розкочуючи тісто. — Як у рецепті піци, де функція приготуватипіцу викликає функції замісититісто і приготувати_соус.

— А в реальному житті є приклади функцій? — запитала Аліса.

— Безліч! — відповіла Логік. — Будь-яка повторювана послідовність дій може бути представлена як функція. Наприклад:

  • Ранковий ритуал: умитися, почистити зуби, одягнутися

  • Рецепт у кулінарній книзі

  • Інструкція зі збирання меблів

  • Маршрут до школи
  • — У природі теж є аналоги функцій, — додав Професор. — Наприклад, бджоли виконують певний "танець", щоб повідомити іншим бджолам, де знаходиться нектар. Це як функція з параметрами: напрямок і відстань до квітів.

    Коли піца була готова і відправлена в духовку, Професор продовжив:
    — Функції — це один із способів організації коду. Вони дозволяють створювати модульні програми, де кожен модуль відповідає за своє завдання. Це робить код більш зрозумілим, більш надійним і його легше змінювати.

    — Як конструктор LEGO! — здогадалась Аліса. — Кожна деталь виконує свою роль, а разом вони створюють складну модель.

    — Відмінне порівняння! — похвалив Професор. — І як у конструкторі, ти можеш створювати свої власні деталі-функції для вирішення конкретних завдань.

    Завдання

    Уяви, що ти створюєш гру "Пригоди в лісі". Напиши кілька функцій, які можуть знадобитися в такій грі. Наприклад:

    python
    def зібратиягоди(типягід, кількість):
    print("Ти зібрав", кількість, тип_ягід)
    return кількість * 5 # очки за збір ягід

    def зустріти_тварину(тварина):
    if тварина == "вовк":
    print("Обережно! Це вовк!")
    return "втекти"
    elif тварина == "заєць":
    print("Це просто заєць. Він нешкідливий.")
    return "продовжити шлях"
    else:
    print("Ти зустрів", тварина)
    return "спостерігати"

    Придумай ще 2-3 функції для своєї гри і опиши, які параметри вони приймають і що повертають.