"Информатика. (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Процедура — именованная часть программы, в которой собраны команды для отдельной задачи. Её описание позволяет не копировать одинаковые команды по всей программе, а вызов запускает их именно там, где они нужны. Параметры дают процедуре возможность работать с разными данными: при каждом вызове им передают подходящие аргументы. После выполнения команд процедуры программа обычно продолжает работу со следующей команды после вызова.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Процедура — именованная часть программы, выполняющая заданную последовательность команд. Её выделяют отдельно, чтобы не переписывать одинаковые действия в нескольких местах. Если нужно изменить эти действия, достаточно поправить описание процедуры, а не искать каждую копию.
Вызов процедуры — команда, которая запускает выполнение процедуры в нужном месте программы. Вызов связывает основную программу с уже описанными действиями. Благодаря этому одну процедуру можно запускать тогда, когда возникает соответствующая задача.
Параметр процедуры — величина, через которую процедуре передают данные. Параметр указывают в описании, чтобы команда могла использовать входные данные, а не только заранее заданные значения. Это позволяет повторно применять процедуру для разных ситуаций.
Аргумент — конкретное значение или переменная, указываемые при вызове процедуры вместо параметра. Например, если параметр обозначает имя пользователя, аргументом при одном вызове будет «Аня», а при другом — «Илья». Так процедура получает данные для конкретного запуска.
Сначала находят последовательность действий, которая повторяется в программе, и дают ей имя, например «ВывестиСообщение». Команды записывают один раз в описании процедуры, а в остальных местах ставят её вызов. Так поступают потому, что копии одних и тех же команд легко случайно изменить по-разному. При описании процедуры программа запоминает, какие действия относятся к этому имени, но ещё не выполняет их.
Когда выполнение программы доходит до вызова, управление переходит к командам процедуры. Они выполняются в заданном порядке, как обычные команды алгоритма. После этого управление возвращается к основной программе и работа продолжается с команды, следующей за вызовом. Такой порядок нужен, чтобы процедура была частью общего алгоритма, а не заменяла его целиком.
Если процедура должна работать с данными, в её описании задают параметры, например имя пользователя. При вызове указывают аргумент: конкретное имя, которое нужно использовать именно сейчас. Например, вызовы «Приветствие(Аня)» и «Приветствие(Илья)» передают процедуре разные данные, хотя её команды остаются теми же. Значение аргумента связывается с соответствующим параметром, поэтому внутри процедуры можно выполнить похожую работу для каждого пользователя.
Применяя процедуру, сначала выясняют, какие данные ей нужны, и сопоставляют их с параметрами. Затем записывают вызов с подходящими аргументами, после чего проверяют, соответствует ли результат задаче. Такой порядок помогает не забыть входные данные и заметить ошибку, если процедура получила не то значение. Например, для вычисления периметра важно передать обе стороны прямоугольника, а не только одну.
Одну процедуру можно вызывать несколько раз в разных местах алгоритма. Например, программа может вывести сообщение, выполнить другое действие, а затем снова вызвать процедуру вывода. Повторные вызовы нужны, когда одинаковая операция должна происходить в нескольких шагах, а аргументы позволяют менять её данные. Из таких шагов складывается более длинный алгоритм, в котором повторяющиеся действия не приходится описывать заново.
| Элемент | Где находится | Назначение | Что указывается |
|---|---|---|---|
| Описание процедуры | В программе | Задаёт действия процедуры | Имя, параметры и команды |
| Имя процедуры | В описании и вызове | Позволяет обратиться к нужным действиям | Название, выбранное программистом |
| Параметры | В описании процедуры | Обозначают данные, нужные процедуре | Имена величин |
| Вызов процедуры | В основной программе | Запускает команды процедуры | Имя процедуры и, если нужно, аргументы |
| Аргументы | При вызове процедуры | Передают данные параметрам | Конкретные значения или переменные |
| Возврат к основной программе | После команд процедуры | Продолжает выполнение общего алгоритма | Следующая команда после вызова |
Таблица помогает различать части процедуры и понимать, где искать каждую из них в программе. При проверке вызова сопоставь аргументы с параметрами в описании. Затем проследи, куда управление перейдёт после выполнения команд.
Условие. В нескольких местах программы требуется вывести одно и то же сообщение. Нужно избежать повторной записи одинаковых команд. Будем считать, что текст сообщения каждый раз одинаков.
Ответ. Команду вывода достаточно описать один раз, а затем вызывать процедуру во всех нужных местах. Если текст понадобится изменить, его можно будет поправить в одном описании.
Условие. Одна процедура должна выводить приветствие для разных пользователей. Значит, в тексте приветствия меняется имя, а само действие остаётся похожим. Нужно показать данные для двух вызовов.
Ответ. В процедуру передаются аргументы «Аня» и «Илья» при двух разных вызовах. Процедура выполняет одно и то же действие, но подставляет данные соответствующего пользователя.
Условие. Процедура вычисляет периметр прямоугольника по двум сторонам. Используем формулу P = 2 × (a + b), где a и b — длины сторон. Нужно выбрать параметры и проследить два вызова для разных прямоугольников.
Ответ. Нужны два параметра — a и b, а аргументы при вызовах: сначала 3 и 5, затем 4 и 7. После каждого вычисления управление возвращается к команде основной программы, следующей за вызовом.
Можно написать описание процедуры и ожидать, что её команды сразу выполнятся. Но описание только задаёт действия, а запуск происходит при вызове, поэтому проверь, есть ли вызов в нужном месте программы. Если действия должны произойти дважды, для каждого запуска нужен соответствующий вызов.
Параметр и аргумент легко перепутать, потому что оба связаны с передачей данных. Параметр записывают в описании, а конкретный аргумент — при вызове; проверяй, где именно находится рассматриваемое имя или значение. Например, «имя» может быть параметром, а «Аня» — аргументом.
Ещё одна ошибка — передать слишком мало или слишком много аргументов либо выбрать данные неподходящего типа. Так бывает, когда вызывающий код составляют, не сверившись с параметрами процедуры. Проверь число и смысл аргументов: каждому параметру должно соответствовать подходящее значение.
После выполнения процедуры иногда ошибочно считают, что программа завершилась. Обычно она возвращается к команде, которая стоит после вызова, и продолжает работу. Чтобы проверить себя, проследи выполнение по порядку и найди следующую команду основной программы.
Для понимания процедур нужно знать, как записываются команды и как программа выполняет их последовательно. Также пригодятся умения работать с переменными: параметры обозначают данные, а аргументы передают конкретные значения или переменные. Поэтому при разборе процедуры важно следить и за порядком команд, и за тем, какие данные получает каждый параметр.
Процедуры особенно полезны, когда в программе повторяются действия или сложную задачу нужно разделить на более простые части. Каждая процедура может отвечать за отдельную операцию, а основная программа задаёт порядок её вызовов. Так алгоритм становится понятнее и его легче изменять.
Зачем выделять команды в процедуру, если их можно просто записать в программе?
Если одни и те же команды нужны в нескольких местах, их удобно записать один раз в процедуре. Так программа становится короче, а изменить повторяющееся действие можно в одном месте.
Чем описание процедуры отличается от её вызова?
Описание задаёт имя процедуры и команды, которые она должна выполнить. Вызов — это команда в программе, которая запускает эти действия.
Как понять, что нужно передать процедуре при вызове?
Посмотри, какие параметры указаны в описании: каждый из них обозначает нужные процедуре данные. При вызове передай подходящие значения или переменные, соблюдая их количество и тип.
Можно ли вызывать одну и ту же процедуру несколько раз?
Да. Каждый вызов снова запускает команды процедуры, а аргументы могут быть одинаковыми или разными.
Что происходит с выполнением программы после завершения процедуры?
Обычно управление возвращается к основной программе. Она продолжает выполнение с команды, расположенной сразу после вызова процедуры.
§ 42. Применение процедур