Карта курса → Модуль 1 → Урок 1.5

Функции — создаём свои команды

Написал один раз — вызываешь сколько хочешь.

Урок 1.5 — Функции

🎣 Старт

Ты уже умеешь строить стену. А если нужно 10 разных стен в разных местах? Копировать код 10 раз?

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

Функция — это как рецепт крафта. Один раз записал рецепт кирки — и крафтишь сколько угодно кирок, не вспоминая каждый раз расположение ингредиентов.

🧠 Теория: Функции

def имя(): — создаём функцию

Ключевое слово def (от «define» — определить) создаёт новую команду:

def построй_дом():
    поставь_стены()
    поставь_крышу()
    поставь_дверь()

Теперь построй_дом() — твоя личная команда. Один раз написал — строишь дома везде:

построй_дом()   # дом №1
вперёд()
построй_дом()   # дом №2
вперёд()
построй_дом()   # дом №3

Параметры — настраиваемые функции

Хочешь стены разного размера? Добавь параметры:

def построй_стену(ширина, высота):
    for строка in range(высота):
        for блок in range(ширина):
            поставь_блок()

построй_стену(10, 5)   # стена 10×5
построй_стену(3, 20)    # башня 3×20

Параметры — как ингредиенты в рецепте. Разные ингредиенты → разный результат.

return — результат функции

Функция может не только делать что-то, но и возвращать результат:

def площадь(a, b):
    return a * b

результат = площадь(10, 5)   # результат = 50

Аналогия: функция = рецепт крафта. Параметры = ингредиенты. return = результат крафта.

🧩 Квиз +10 XP
Что делает ключевое слово def?
A Удаляет переменную
B Создаёт новую функцию (команду)
C Запускает цикл
D Выводит текст на экран
🧩 Квиз +10 XP
Что вернёт вызов удвой(5)?
def удвой(x):
    return x * 2
A 5
B 2
C 10
D Ошибку

🔧 Практика: Создаём функции

Задача 1: Создай функцию линия, которая строит линию заданной длины.

 линия(длина):
    for i in range(длина):
        поставь_блок()
        ()

линия()
💡 Подсказка

Чтобы создать функцию, нужно ключевое слово из трёх букв. После каждого блока черепашка шагает вперёд. Вызвать функцию можно с любым числом.

✅ Решение
def линия(длина):
    for i in range(длина):
        поставь_блок()
        вперёд()

линия(5)

Задача 2: Функция с return — посчитай площадь стены.

def площадь_стены(ширина, высота):
     ширина * высота

блоков = площадь_стены(10, )
print(блоков)
💡 Подсказка

Чтобы функция вернула результат, используй ключевое слово из 6 букв. Второй параметр — любое число (высота стены).

✅ Решение
def площадь_стены(ширина, высота):
    return ширина * высота

блоков = площадь_стены(10, 5)
print(блоков)   # 50
🧩 Квиз +10 XP
Можно ли вызвать функцию внутри другой функции?
A Да, это основа программирования
B Нет, будет ошибка
C Только если функция маленькая
D Только в Python 4

🏗️ Сборка: Свои команды в действии

Ты только что создал свои первые функции. Теперь у тебя есть линия() и площадь_стены() — команды, которых не существовало до тебя.

Знаешь что? print() — тоже функция. Просто её написал кто-то до тебя. А range(), которую ты использовал в прошлом уроке? Тоже функция! Кто-то её создал, чтобы тебе не пришлось.

Программирование — это создание новых инструментов из существующих. Как крафт в Minecraft: из базовых ресурсов → сложные предметы.

👹 Босс: Автоматическая ферма +100 XP

Создай функцию, которая строит грядку заданного размера и засаживает её:

 построй_грядку(длина, ширина):
    for ряд in range(ширина):
        for блок in range(длина):
            вскопай()
            ()
            вперёд()
        следующий_ряд()

построй_грядку(, )
💡 Подсказка

Функция начинается с def. После вскопай() нужно посадить семена. Вызвать функцию можно с любыми размерами грядки.

✅ Решение
def построй_грядку(длина, ширина):
    for ряд in range(ширина):
        for блок in range(длина):
            вскопай()
            посади()
            вперёд()
        следующий_ряд()

построй_грядку(8, 4)

💭 Итоги

Теперь ты знаешь:

  • def — создаёт новую функцию
  • ✅ Параметры — делают функцию настраиваемой
  • return — возвращает результат
  • ✅ Функция = написал один раз, используешь везде

Функции в реальном мире:

  • 📱 Каждая кнопка в приложении = вызов функции
  • 🖨️ print() — тоже функция (просто написана кем-то до тебя)
  • ⛏️ Весь Minecraft = тысячи функций, вызывающих друг друга

Fun fact: Функция range(), которую ты уже использовал — это тоже функция! Кто-то её написал, чтобы тебе не пришлось. 🤯

Ты прошёл все основы Модуля 1! Алгоритмы, переменные, условия, циклы, функции — это фундамент любого языка программирования. Дальше — структуры данных и паттерны.