☰ Содержание · Информатика

Подпрограммы: функции и процедуры

Уроки 47–48 · 2 урока · М. Р. Файзиева, Д. М. Сайфуров, Н. С. Хайтуллаева. Информатика и информационные технологии, 9 класс. «Nashriyot uyi Tasvir», Ташкент, 2020
47

Подпрограммы: функции и процедуры

Учебник: с. 91–94
ЦельЗнает понятия подпрограммы, функции и процедуры, пишет и вызывает функцию с параметрами с помощью def и return и объясняет рекурсию и её условие остановки.
Новые слова
функция: именованная подпрограмма, принимающая параметры и способная возвращать результат · funksiyaпараметр: имя в скобках def, которое получает значение, переданное при вызове функции · parametrreturn: возвращает результат в то место, где была вызвана функция · returnрекурсия: функция, которая вызывает саму себя · rekursiya
Объяснение

Когда одна и та же работа повторяется в нескольких местах программы, удобно вынести её в подпрограмму – функцию: код пишется один раз, а ошибка исправляется в одном месте. Функция объявляется с помощью def имя(параметры): и её тело записывается с отступом в 4 пробела; она работает только при вызове: имя(значения). return используется для возврата результата в место вызова; без return функция ничего не возвращает (None) – в учебнике такая подпрограмма называется процедурой. Имя функции не должно совпадать со встроенными именами, такими как max, len, print, иначе они «скрываются». Если функция вызывает саму себя, это рекурсия: например, n! = n · (n − 1)!, 0! = 1. Для рекурсии нужно условие остановки (if n == 0: return 1), иначе вызовы никогда не прекратятся и появится RecursionError.

Примеры
Функция и процедура: def kvadrat(x): ⏎     return x * x ⏎ print(kvadrat(7)) kvadrat(7) возвращает 49. def salom(ism): ⏎     print("Salom,", ism + "!") ⏎ salom("Lola") salom("Lola") выводит на экран Salom, Lola! и ничего не возвращает.
Рекурсия: def fakt(n): ⏎     if n == 0: ⏎         return 1 ⏎     return n * fakt(n - 1) ⏎ print(fakt(5)) fakt(5) = 5 · fakt(4) = … = 5 · 4 · 3 · 2 · 1 · fakt(0), fakt(0) = 1, результат равен 120. Подпрограмма, не возвращающая значения: def salom(): ⏎     print("Salom") ⏎ x = salom() ⏎ print(x) В x попадает None.
Работа в классе

«Функция – это машина»: класс изображает функцию как «машину»: один ученик называет параметр (например, 7), ученик-«машина» выполняет правило (возведение в квадрат) и возвращает результат (49); затем правила меняются.

Упражнения
1
Что возвращает функция f(x) = 2 * x + 1 при f(4)?
2
Напишите функцию yuza(a, b), возвращающую произведение двух чисел, и выведите yuza(6, 7).
3
Чему равно рекурсивное fakt(4)?
4
Назовите два преимущества использования функций.