ГлавнаяУрокиИнформатика 9 класс

§ 1.3. Запись вспомогательных алгоритмов на языке Python

Прочитай параграф о процедурах, функциях и рекурсии в Python и ответь на 10 вопросов.

Два блока кода: сверху описание процедуры linia с командой print, снизу основная программа с вызовами linia(20); оранжевая стрелка от строки вызова ведёт вверх в тело процедуры, синяя возвращается на следующую строку программы.
Рис. 1. Описания подпрограмм стоят выше основной программы: к моменту вызова команда def уже выполнена.

Программу в двадцать строк ещё можно держать в голове целиком, программу в тысячу — уже нет. Поэтому большую задачу делят на части: каждая часть решает свой кусок работы, получает имя и записывается отдельно от остального текста. Такой отдельно записанный кусок называют вспомогательным алгоритмом, а в языке программирования он превращается в подпрограмму. Описать её достаточно один раз, а пользоваться ею можно сколько угодно раз и из любого места.

Выгода не только в экономии строк. Один раз проверенную подпрограмму дальше берут, не вспоминая, что у неё внутри: хватает имени и знания о том, какие данные ей нужны и что она отдаёт. И ошибку в такой программе ищут по частям — сначала убеждаются, что подпрограмма работает верно сама по себе, и лишь потом смотрят на программу целиком.

В 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 показывают, какие именно команды входят в тело подпрограммы?

Чем функция отличается от процедуры?

← § 1.2. Запись вспомогательных алгоритмов на языке Паскаль§ 1.4. Обработка одномерных массивов целых чисел на языке Паскаль →