Подпрограмма — это повторяющаяся группа операторов, оформленная в виде самостоятельной программной единицы. Она записывается однократно, а в соответствующих местах программы обеспечивается лишь обращение к ней по имени.
Подпрограммы решают три важные задачи, значительно облегчающие программирование:
1. избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты, т.е. сократить объём программы;
2. улучшат структуру программы, облегчая понимание при разборе;
3. уменьшают вероятность появления ошибок, повышают устойчивость к ошибкам программирования и непредвиденным последствиям при модификации.
В этих разделах описываются д анные, используемые только внутри подпрограммы и являющиеся промежуточными при её выполнении. Такие данные называются локальными. В подпрограмме могут участвовать переменные, описанные в главной программе. Эти данные называются глобальными , их значения и подпрограмма, и главная программа берут из общей памяти.
Подпрограммы, процедуры и функции
Подпрограммы делятся на две категории: процедуры и функции.
Процедура — подпрограмма, имеющая любое количество входных и выходных данных.
Любая процедура начинается с заголовка, который является её обязательной частью. Он состоит из служебного слова Procedure, за которым следует имя процедуры, а в круглых скобках — список формальных параметров. После заголовка могут идти те же разделы, что и в программе.
Procedure (формальные параметры);
локальные переменные
тело процедуры
Процедура может быть описана без параметров и с параметрами. Параметры -это данные из заголовка процедуры, как передаваемые её на обработку, так и получаемые в виде результатов.
Для удобства передачи данных в процедуру и получения из неё результата используются формальные и фактические параметры.
Формальные — условные обозначения в описании процедуры — описываются в её заголовке. Фактические — с которыми требуется выполнить процедуру — перечисляются при вызове процедуры. Формальные и фактические параметры должны соответствовать по количеству, типу и порядку следования. Формальные параметры описываются только в заголовке процедуры и больше нигде.
Формальные параметры разделяют на параметры — значения и параметры переменные. Параметры — переменные, в отличие от параметров — значений возвращают измененное значение параметра в главную программу. Измененные, произведенные с параметрами — значениями в главную программу не передаются.
Чаще всего, параметры, соответствующие входным данным, будут являться параметрами — значениями, а те, в которых получается результат, будут параметрами — переменными.
Параметры переменные отмечают в заголовке процедуры словом var:
Procedure (параметры — значения; var параметры — переменные);
Пример 1. Рассмотрим написание процедуры, вычисляющей сумму двух целых чисел ( S = A +B) и вызов ее в главной программе:
Источник: forinformatics.blogspot.com
#5 PYTHON: ФУНКЦИИ И ПРОЦЕДУРЫ
Pascal. Процедура (PROCEDURE)
В Паскале подпрограммы называются процедурами и функциями и описываются в разделе с тем же названием.
Процедура имеет такую же структуру, как и программа, но с двумя отличиями:
Все имена, описанные в программе до процедуры, действуют во всей программе и в любой ее подпрограмме (если они там не описаны заново). Они называются глобальными, в отличие от локальных имен, описанных в процедуре и действующих лишь в ней.
Данные для обработки могут передаваться процедуре через глобальные имена или через аргументы процедуры. В процедуре каждый аргумент имеет свое имя – формальный параметр, описываемый в заголовке процедуры по схеме:
procedure имя (список описания формальных параметров)
Описание формальных параметров может иметь вид:
список имен:тип
var список имен:тип
В первом случае говорят о параметрах – значениях (как правило, их используют для передачи входных данных), во втором – о параметрах – переменных (используют для результатов работы процедуры). В простейшем случае заголовок процедуры может содержать только имя процедуры.
Оператор вызова структуры имеет вид:
имя процедуры (список выражений);
Эти выражения называются фактическими параметрами. Их список должен точно соответствовать списку описаний формальных параметров процедуры. Во время вызова процедуры параметру – значению присваивается значение фактического параметра. Фактическим параметром здесь может быть любое выражение соответствующего типа.
Фактический параметр, соответствующий параметру переменной, должен быть переменной того же типа.
Пример: составим программу, которая с помощью строки символов разделит экран на части, где напечатает таблицу квадратных корней для чисел 1, 2, . 10 и таблицу натуральных логарифмов для чисел 1, 2, . 5.
Печать строки символов оформим как процедуру. Так как никакую информацию передавать из процедуры в программу не надо, то аргументы процедуры (вид и количество символов) будут описаны как параметры – значения.
program section; var x: integer: procedure line (a: integer; c: char); var j: integer; begin for j: =1 to a do write(c); writeln end; begin line (35, ‘-‘); writеln(‘таблица квадратных корней’); line (35, ‘-‘); for x: =1 to 10 do writeln(x: 8, sqrt(x): 8: 4); line (35, ‘-‘); writеln(‘таблица натуральных логарифмов’); line (35, ‘-‘); for x:=1 to 5 do writeln(x:8, ln(x):8:4); line (35, ‘*‘); end.
Источник: itteach.ru
Формальные и фактические параметры
Подпрограмма (англ. subroutine) — поименованная или иным образом идентифицированная часть компьютерной программы, содержащая описание определённого набора действий. Подпрограмма может быть многократно вызвана из разных частей программы. В языках программирования для оформления и использования подпрограмм существуют специальные синтаксические средства.
Подпрограммы изначально появились как средство оптимизации программ по объёму занимаемой памяти — они позволили не повторять в программе идентичные блоки кода, а описывать их однократно и вызывать по мере необходимости. К настоящему времени данная функция подпрограмм стала вспомогательной, главное их назначение — структуризация программы с целью удобства её понимания и сопровождения.
• Выделение набора действий в подпрограмму и вызов её по мере необходимости позволяет логически выделить целостную подзадачу, имеющую типовое решение. Такое действие имеет ещё одно (помимо экономии памяти) преимущество перед повторением однотипных действий: любое изменение (исправление ошибки, оптимизация, расширение функциональности), сделанное в подпрограмме, автоматически отражается на всех её вызовах, в то время как при дублировании каждое изменение необходимо вносить в каждое вхождение изменяемого кода.
• Даже в тех случаях, когда в подпрограмму выделяется однократно производимый набор действий, это оправдано, так как позволяет сократить размеры целостных блоков кода, составляющих программу, то есть сделать программу более понятной и обозримой.
Вызов подпрограммы выполняется с помощью команды вызова, включающей в себя имя подпрограммы. В большинстве современных языков программирования команда вызова представляет собой просто имя вызываемой подпрограммы, за которым могут следовать фактические параметры (см. ниже).
В следующем примере на языке Паскаль подпрограмма subprog вызывается из основной программы трижды:
// Описание подпрограммы subprog
begin // начало тела подпрограммы
end; // конец тела подпрограммы
subprog; // 1-й вызов
subprog; // 2-й вызов
subprog; // 3-й вызов
Результатом выполнения такой программы станет вывод строки «Hello» и трёх строк «Bye».
Некоторые языки программирования (например, Паскаль, Ада, Модула-2) допускают описание вложенных подпрограмм, то есть помещение подпрограмм внутрь других подпрограмм. Такие вложенные подпрограммы могут использоваться только в той подпрограмме, в которой они описаны. В иных случаях (например, в языке Си) вложение подпрограмм не допускается. Никаких принципиальных преимуществ вложение подпрограмм не даёт, но может быть удобно для более логичной структуризации программы (если какая-то подпрограмма используется только в некоторой другой подпрограмме, логично поместить первую во вторую).
Процедура имеет такую же структуру, как и программа, но с двумя отличиями:
· заголовок процедуры имеет другой синтаксис и включает служебное словоprocedure;
· описание процедуры заканчивается точкой с запятой (а не точкой).
Все имена, описанные в программе до процедуры, действуют во всей программе и в любой ее подпрограмме (если они, там не описаны заново). Они называются глобальными, в отличие от локальных имен, описанных в процедуре и действующих лишь в ней.
Данные для обработки могут передаваться процедуре через глобальные имена или через аргументы процедуры. В процедуре каждый аргумент имеет свое имя -формальный параметр, описываемый в заголовке процедуры по схеме
Описание формальных параметров может иметь вид : или var :
В первом случае говорят о параметрах-значениях, во втором — о параметрах-переменных. В простейшем случае заголовок процедуры может содержать только имя процедуры.
Оператор вызова процедуры имеет вид
Указанные выражения называют фактическими параметрами. Их список должен точно соответствовать списку описаний формальных параметров процедуры. Во время вызова процедуры каждому параметру-значению присваивается значение соответствующего фактического параметра и поэтому их обычно используют для передачи входных данных.
Параметры-переменные следует использовать для представления результатов процедуры.
Пример: составим программу, которая с помощью строки символов разделит ран на части, где напечатает таблицу квадратных корней для чисел 1, 2. 10 и таблицу натуральных логарифмов для чисел 1, 2. 5.
Печать строки символов оформим как процедуру. Так как никакую информацию передавать из процедуры в программу не надо, то аргументы процедуры (вид и количество символов) будут описаны как параметры-значения.
Заметим, что процедура в программе выполняется пять раз.
Программа 18
program section; var х:integer;
for j:=l to a do write(c); writeln end; begin
line(35,’-‘); writeln(‘таблица квадратных корней 1 ); line(35,’-‘);
for x:=l to 10 do writeln(x:8,sqrt(x):8,4); line (35, 1 — 1 ); writeln(‘таблица натуральных логарифмов’); line(35,’-‘);
for x:=l to 5 do writeln(x:8,In(x):8 : 4) ; line(35,’*’); end.
Назначение параметров
Подпрограммы часто используются для многократного выполнения стереотипных действий над различными данными. Подпрограмма обычно имеет доступ к объектам данных, описанным в основной программе (по крайней мере, к некоторым из них), поэтому для того, чтобы передать в подпрограмму обрабатываемые данные, их достаточно присвоить, например, глобальным переменным. Но такой путь не особенно удобен и чреват ошибками.
Для обеспечения контролируемой передачи параметров в подпрограмму и возврата результатов из неё используется механизм параметров. Параметры описываются при описании подпрограммы (в её заголовке) и могут использоваться внутри процедуры аналогично переменным, описанным в ней. При вызове процедуры значения каждого из параметров указываются в команде вызова (обычно после имени вызываемой подпрограммы).
// Описание подпрограммы subprog
begin // начало тела подпрограммы
end; // конец тела подпрограммы
subprog(‘Good bye,’); // 1-й вызов
subprog(‘my love,’); // 2-й вызов
subprog(‘good bye!’); // 3-й вызов
В приведённом примере параметр Line подпрограммы subprog в каждом вызове получает различное значение, благодаря чему выводятся не одинаковые строки, а разные.
Формальные и фактические параметры
Чтобы отличать параметры подпрограммы, описанные в её заголовке и теле, от параметров, указываемых при вызове подпрограммы, первые принято называть формальными параметрами, вторые — фактическими параметрами. Так, в последнем примере параметр Line в заголовке и теле подпрограммы subprog — это формальный параметр, а строка ‘Good bye’ , использованная в первом вызове этой подпрограммы — фактический параметр. При вызове подпрограммы фактические параметры, указанные в команде вызова, становятся значениями соответствующих формальных параметров, чем и обеспечивается передача данных в подпрограмму.
Популярное:
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение.
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою.
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям .
Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе.
Почему 1285321 студент выбрали МегаОбучалку.
Система поиска информации
Источник: megaobuchalka.ru