Глава 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 функции для своей игры и опиши, какие параметры они принимают и что возвращают.