При каком подходе программа разбивается на подпрограммы

Подпрограммы являются одной из четырех форм программных модулей, из которых могут быть составлены программы. Другие формы — это пакеты, задачные модули и настраиваемые модули.

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

Ссылки: вызов подпрограммы 6.4, вызов процедуры 6.4, вызов функции 6.4, задачный модуль 9, настраиваемый модуль 12, описание подпрограммы 6.1, пакет 7, процедура 6.1, тело подпрограммы 6.3, функция 6.5.

6.1. ОПИСАНИЕ ПОДПРОГРАММЫ

Описание подпрограммы объявляет процедуру или функцию в зависимости от указанного начального зарезервированного слова.

описание-подпрограммы ::= спецификация-подпрограммы;спецификация — подпрограммы ::= procedure идентификатор [раздел-формальных-параметров] | function обозначение [раздел-формальных-параметров] return обозначение-типаобозначение ::= идентификатор | знак-операции знак-операции ::= строковый-литералраздел-формальных-параметров ::= (спецификация-параметра )спецификация-параметра ::= список-идентификаторов : вид обозначение-типа [:= выражение]вид ::= [in] | in out | out

Спецификация процедуры определяет ее идентификатор и ее формальные параметры (если они есть).

Pascal. Подпрограммы

Спецификация функции определяет ее обозначение, ее формальные параметры (если они есть) и подтип возвращаемого значения ( подтип результата). Обозначение, являющееся знаком операции, используется для совмещения операций. Последовательность символов, представляющая знак операции, должна представлять операцию, принадлежащую одному из шести классов совмещаемых операций, определенных в разд. 4.5 (пробелы недопустимы, а относительно букв ограничений нет).

Спецификация параметра с несколькими идентификаторами эквивалентна последовательности спецификаций с одним параметром, как поясняется в разд. 3.2. Каждая спецификация одного параметра описывает формальный параметр. Если вид явно не задан, то предполагается вид in.

Если спецификация параметра оканчивается выражением, то оно является выражением по умолчанию формального параметра. Выражение по умолчанию допустимо только в спецификации параметра вида in (независимо от явного или неявного его указания). Тип выражения по умолчанию должен совпадать с типом соответствующего формального параметра.

Не допускается использование имени, обозначающего формальный параметр, в выражении по умолчанию, если спецификация этого параметра дана в том же разделе формальных параметров.

Предвыполнение описания подпрограммы предвыполняет соответствующий раздел формальных параметров. Предвыполнение раздела формальных параметров не дает другого эффекта.

Примеры описания подпрограмм:

Вызов подпрограммы «М98»


procedure TRAVERSE_TREE; procedure INCREMENT(X : in out INTEGER); procedure RIGHTINDENT(MARGIN : out LINESIZE); — CM. 3.5.4 procedure SWITCH(FROM, TO : in out LINK); — CM. 3.8.1function RANDOM return PROBABILITY; — CM. 3.5.7function MINCELL(X : LINK) return CELL; — CM. 3.8.1 function NEXTFRAME(K : POSITIVE) return FRAME; — CM.

3.8 function DOTPRODUCT(LEFT,RIGHT: VECTOR) return REAL; — CM. 3.6function»*»(LEFT,RIGHT : MATRIX) return MATRIX; — CM. 3.6

Примеры параметров с выражениями по умолчанию:

procedure PRINT_HEADER( PAGES : in NATURAL; HEADER : in LINE := (1 .. LINE’LAST => ‘ ‘); — CM. 3.6 CENTER : in BOOLEAN := TRUE);

Примечание. Вычисление выражений по умолчанию начинается при определенных вызовах подпрограмм, как пояснено в разд. 6.4.2 (выражения по умолчанию не вычисляются при предвыполнении описания подпрограммы).

Читайте также:
Виды детских игровых программ

Все подпрограммы могут быть вызваны рекурсивно и являются реентерабельными. Ссылки: вид 6.2, вызов подпрограммы 6.4, выражение 4.4, вычисление 4.5, идентификатор 2.3, имя 4.1, обозначение типа 3.3.2, операция 4.5, описание 3.1, Предвыполнение 3.9, пред-выполнение не имеет другого эффекта 3.9, процедура 6, совмещение 6.6, 8.7, список идентификаторов 3.2, строковый литерал 2.6, формальный параметр 6.2, функция 6.5.

Пред. Уровень выше След.
5.9. ОПЕРАТОРЫ ПЕРЕХОДА Начало 6.2. ВИДЫ ФОРМАЛЬНЫХ ПАРАМЕТРОВ

Источник: www.ada-ru.org

Подпрограммы, их назначение и классификация

Возможность применения подпрограмм относит язык программирования к классу процедурных языков.

Подпрограммы обеспечивают возможности реализации принципов структурного программирования, заключающиеся в следующем:

– программа разбивается на множество мелких подпрограмм;

– каждая подпрограмма отлаживаются отдельно независимо от других подпрограмм;

– подпрограмма может быть использована в основном блоке программы, в любой другой подпрограмме и быть включенной в библиотеку готовых подпрограмм.

Структурное программирование привело к идее разделения труда программиста. Каждый программист выполняет отдельный модуль, не зная общих размеров проекта. Он может использовать программы, созданные другими программистами, иногда не зная даже их внутреннего устройства.

Наличие подпрограмм позволяет вести разработку программ сверху вниз – такой подход называется нисходящим программированием. Сначала выделяются несколько подпрограмм, решающие самые глобальные задачи (например, организация ввода данных, главная часть и завершение), потом каждая из них детализируется на более низком уровне, разбиваясь, в свою очередь, на небольшое число других подпрограмм, и так до тех пор, пока вся программа не окажется реализованной. Надо отметить, что небольшие подпрограммы значительно проще отлаживать, а это повышает надежность всей программы.

Важная характеристика подпрограммы – это возможность их повторного использования. Чтобы подпрограмма при обращении к ней выполнялась каждый раз с новыми данными, она записывается в общем виде. Имена (идентификаторы) в основной программе и в подпрограмме независимы друг от друга.

В языке ТР существуют два вида подпрограмм: процедура (Proctdure) и функция (Function).

Все подпрограммы подразделяются на стандартные (встроенные) и определенные пользователем.

Стандартные (встроенные) подпрограммы мы уже встречали, они являются частью языка и вызываются по имени без предварительного описания. Стандартные процедуры и функции представляют собой программы, написанные в машинных кодах и хранящиеся в специальных библиотеках (стандартных модулях). Доступ к этим библиотекам можно организовать из своих программ. Эти стандартные подпрограммы вызываются и подключаются к программам пользователя посредством указания их имени.

Примеры вызова стандартных процедур и функций.

1. Write(x 1, x 2, …,xn) – стандартная процедура, в скобках записываются параметры вывода.

2. SIN(x) – стандартная функция, в скобках стоит один параметр (аргумент математической функции sin x).

3. ClrScr – стандартная процедура, параметры отсутствуют.

Подпрограммы пользователя

Наряду с возможностью использования встроенных подпрограмм Паскаль предоставляет возможность создания собственных, пользовательских подпрограмм. Правила «хорошего тона» в программировании предполагают использование подпрограмм пользователя. Это обеспечивает возможность реализации принципов структурного программирования.

Читайте также:
Полезные программы для инженера

При вызове подпрограмм пользователя работа основной программы на некоторое время приостанавливается, и начинает работать вызванная подпрограмма. Она обрабатывает данные, переданные ей из основной программы. После завершения работы подпрограммы результаты счета явно (функция) или неявно (процедура) возвращаются в основную программу.

Передача данных из основной программы в подпрограмму и возврат результата выполнения в подпрограмму осуществляется с помощью параметров.

Параметр – это переменная, которой присваивается некоторое значение из определенного заранее диапазона значений. Различают два вида параметров:

формальные параметры – параметры, определенные в заголовке подпрограммы;

фактические параметры – это выражения, задающие конкретные значения при обращении к подпрограмме.

При обращении к подпрограмме ее формальные параметры замещаются фактическими, переданными из основной программы.

Механизм передачи параметров рассмотрим ниже.

Оформление и вызов процедур

Процедура (Procedure) имеет такую же структуру, как и программа. А вот структура заголовка процедуры имеет другой синтаксис:

Название «формальные» эти параметры получили в связи с тем, что в этом списке заданы только имена для обозначения исходных данных и результатов работы процедуры, а при вызове подпрограммы на их место будут подставлены конкретные значения имен.

Вызов процедуры в основной программе осуществляется по формату:

Вызов процедуры помещается в той точке программы, где необходимо выполнить процедуру.

Пример 6.1. Рассмотрим пример оформления и вызова процедурыдлявычисления площади треугольника, заданного длинами своих сторон a, b, c по формуле Герона.

Назовем процедуру Surface. Имена переменных (идентификаторы) выберем в соответствии с формулой (6.1).

Procedure Surface (a, b, c: real; Var s: real);

входные выходные

Формальные параметры

В нашем случае формальными параметрами являются:

a, b, c: real; Var s: real.

Входные параметры – это параметры, значения которых передаются в процедуру из основной программы. У нас это длины сторон треугольника (a, b, c).

После выполнения процедуры результаты ее, называемые выходными параметрами, передаются в основную программу в то место, откуда был сделан вызов процедуры. А затем продолжается выполнение основной программы. Перед выходными параметрами в списке формальных параметров стоит зарезервированное слово Var. У нас выходной параметр один, это S, площадь треугольника.

В простейшем случае заголовок процедуры может и не содержать формальных параметров.

Процедура не может выполниться сама. Ее необходимо вызвать (обратиться к ней) по имени и указать фактические параметры в строгом соответствии с формальными параметрами.

В качестве примера приведем три фрагмента программы, в которой используется описанная выше процедура Surface. Для вызова процедуры надо указать ее имя, а в скобках – фактические параметры.

1). Surface (1, 3.45, 3.56, S-face);

При таком обращениик процедуре входные параметры получают значения a = 1, b = 3,45, c = 3,56. При этих значениях процедура выполняется, т.е. вычисляется площадь треугольника. Выходной параметр S будет передан в основную программу переменной S-face, где ее можно использовать для дальнейших расчетов.

2) Surface (Xmin, Ymin, Zmin, S); в скобках указаны

3) Surface (alfa-1.3, x+y, 4.5, S1); фактические параметры

Механизм передачи параметров во втором и третьем случаях аналогичен первому.

Читайте также:
Программа мои документы туризм

Имена (идентификаторы), описанные в процедуре, называются локальными и действуют только в ней. В нашем случае это переменная Р.

Имена, описанные в основной программе, называются глобальными и действуют во всей программе и в любой процедуре (если они не описаны там заново).

Пример 6.2. Вычислить пло-щадь выпуклого четырехуголь-ника, заданного длинами сторон AB, BC, CD, DA и диагональю DB.

Для решения этой задачи используем подпрограмму Surface из примера 6.1, к которой обратимся дважды для вычисления площадей треугольников S 1 и S 2.

Источник: infopedia.su

При каком подходе программа разбивается на подпрограммы

При создании средних по размеру программ используется структурное программирование, идея которого заключается в том, что структура программы должна отражать структуру решаемой задачи, чтобы алгоритм решения был ясно виден из исходного текста.

С этой целью в программирование введено понятие подпрограммы — набора операторов (команд), выполняющих нужное действие и не зависящих от других частей исходного кода. Программа разбивается на множество подпрограмм, каждая из которых выполняет какое-то действие, предусмотренное исходным заданием.

Подпрограммой называется группа операторов, к которой обращаются из основной программы несколько раз.

Комбинируя подпрограммы, удается сформировать итоговый алгоритм используя блоки кода (подпрограммы), имеющих определенную смысловую нагрузку. Обращаться к этим подпрограммам можно по их имени.

Принято различать два вида подпрограмм — процедуры и функции. Отличаются они тем, что процедура просто выполняет группу операторов, а функция вдобавок вычисляет некоторое значение и передает его в программу.

Когда в программе необходимо выполнить какое-то стандартное действие происходит вызов процедуры. Процедура выполняет действие и возвращает управление обратно программе, которая ее вызвала. В ходе работы процедуры могут вызвать другие процедуры. Прием когда подпрограмма вызывает саму себя называют рекурсией.

Очень важная характеристика подпрограмм — это возможность их повторного использования.

Чтобы работа подпрограммы имела смысл, ей надо получить данные из внешней программы, которая эту подпрограмму вызывает. Данные передаются подпрограмме в виде параметров или аргументов, которые обычно описываются в ее заголовке так же, как и переменные.

Вы уже использовали стандартные процедуры и функции при составлении программ. Теперь пришло время научиться создавать свои процедуры и функции.

Процедуры состоят из трех частей: заголовка, тела процедуры, завершения процедуры.
SUB имя (список параметров)
тело процедуры — список операторов
END SUB
SUB hello (s$)
PRINT «Привет, «, s$,»! Как твои дела?»
END SUB

REM приветствие
name1$=»Саша»
name2$=»Вася»
REM процедуру можно вызвать так
CALL hello(name1$)
REM а можно вызвать так
hello(name2$)
REM или даже так
hello(«Марина»)
END

В результате выполнения программы на экране будет выведено:
Привет, Саша! Как твои дела?
Привет, Вася! Как твои дела?
Привет, Марина! Как твои дела?
Параметры, которые указываются в заголовке подпрограммы, называются формальными. Они нужны только для описания тела подпрограммы. А параметры (конкретные значения), которые указываются в момент вызова подпрограммы, называются фактическими параметрами. При выполнении операторов подпрограммы формальные параметры как бы временно заменятся на фактические.

Источник: laska-samp.biz

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru