Главная → Уроки → Информатика 9 класс
Прочитай параграф о процедурах, функциях и рекурсии в Python и ответь на 10 вопросов.
Программу в двадцать строк ещё можно держать в голове целиком, программу в тысячу — уже нет. Поэтому большую задачу делят на части: каждая часть решает свой кусок работы, получает имя и записывается отдельно от остального текста. Такой отдельно записанный кусок называют вспомогательным алгоритмом, а в языке программирования он превращается в подпрограмму. Описать её достаточно один раз, а пользоваться ею можно сколько угодно раз и из любого места.
Выгода не только в экономии строк. Один раз проверенную подпрограмму дальше берут, не вспоминая, что у неё внутри: хватает имени и знания о том, какие данные ей нужны и что она отдаёт. И ошибку в такой программе ищут по частям — сначала убеждаются, что подпрограмма работает верно сама по себе, и лишь потом смотрят на программу целиком.
В Python подпрограмм два вида: процедуры и функции. Различаются они тем, отдают ли они результат наружу.
Кое-какими подпрограммами вы пользовались с первого урока, даже не задумываясь об этом. print, input, int, len — всё это готовые функции языка: у каждой есть имя, каждая получает данные в скобках, и ни одну из них не приходится расписывать заново. Свои подпрограммы устроены точно так же, разница только в том, что описывать их придётся самим.
Разбиение задачи на подпрограммы — это и есть знакомый метод пошаговой детализации: сначала записывают общий план решения, а каждый его пункт, который сам по себе ещё сложен, оформляют отдельным вспомогательным алгоритмом. В Python такой пункт превращается в подпрограмму почти дословно.
Определение. Процедура — подпрограмма, выполняющая некоторые действия; входных параметров у неё может быть сколько угодно, в том числе ни одного.
Описание процедуры выглядит так:
def <имя процедуры>(): <операторы>
Запись начинается со служебного слова def (от английского define — определить). За ним идут имя процедуры, круглые скобки и двоеточие. Команды, которые входят в тело процедуры, записывают со сдвигом вправо — с отступом. Отступ здесь не украшение, а часть языка: именно по нему Python отличает тело подпрограммы от остальной программы. Как только очередная строка снова начинается у самого левого края, тело кончилось.
Пример. Пусть в отчёте надо отделять части текста полоской из чёрточек. Запись '-' * 20 как раз и означает строку из двадцати одинаковых символов.
def linia(): print('-' * 20)
Сама по себе эта запись ничего не печатает: команда def лишь создаёт в памяти объект-процедуру. Чтобы процедура заработала, её вызывают по имени со скобками, и таких вызовов может быть сколько угодно:
print('Отчёт за неделю') linia() print('Понедельник: 12 задач') linia()
Порядок строк важен. К моменту вызова команда def уже должна быть выполнена, поэтому описания подпрограмм ставят выше основной программы (рис. 1). Если поменять куски местами, Python дойдёт до вызова, не найдёт такого имени и остановится с ошибкой.
Полный пересказ по учебнику «Информатика 9 класс», тест из большого пула вопросов и разбор ошибок с ИИ-репетитором. За сданный тест ребёнок получает экранное время — родители задают, сколько минут стоит урок.
Пройти урок бесплатноКак это работаетПравильные ответы и разбор ошибок — в приложении: при пересдаче вопросы меняются, поэтому списать не получится.
Как в Python показывают, какие именно команды входят в тело подпрограммы?
Чем функция отличается от процедуры?