📖 Содержание
Часть 1: Мир программирования вокруг нас
Часть 2: Алфавит и словарь программирования
Часть 3: Строим первые программы
Часть 4: Наш удивительный мозг
Часть 5: Творческие проекты
Часть 6: Программирование в реальном мире
Глава 9 из 27
3: Строим первые программы
Глава 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("Пицца готова!")
— Видишь, — сказал Профессор, начиная замешивать тесто, — мы создали три функции. Первые две выполняют отдельные шаги, а третья использует их и добавляет свои действия.
тесто, приготовитьсоус и приготовить_пиццу" 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 функции для своей игры и опиши, какие параметры они принимают и что возвращают.