Функция
подпрограмма
Это понятие впервые встречается на программе «Электроника, программирование и инженерная практика» — примерно 13-14 лет (7-8 класс).
Часть программы с собственным именем: описал шаги один раз — дальше вызывай по имени сколько угодно раз.
Рецепт соуса в конце книги: в каждом блюде пишут «приготовь соус №3», а не переписывают его заново.
Собрать в Scratch свой блок «нарисуй звезду» и вызвать его в трёх местах программы.
Подпрограмма с именем, которую вызывают из любого места кода. Может принимать параметры (что именно обработать) и возвращать результат. Само определение ничего не выполняет — шаги срабатывают только при вызове. Главная польза: код без повторов, исправил в одном месте — починилось везде.
Вынести в скетче Arduino повторяющееся мигание в функцию blink(times) и вызвать её с разными числами повторов.
Подпрограмма с сигнатурой: имя, список параметров, тип результата. Локальные переменные существуют только во время вызова (область видимости); параметры передаются по значению или по ссылке. Чистая функция зависит только от аргументов и не даёт побочных эффектов — её проще всего тестировать. Краевой случай: рекурсия — функция вызывает саму себя и обязана иметь условие остановки.
Написать в Python рекурсивный факториал, затем убрать условие остановки и объяснить по сообщению об ошибке, что произошло.
Частое заблуждение
«Функция выполняется там, где написана». Нет: определение только описывает шаги; выполняются они в момент вызова — или ни разу, если вызова нет.