Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чернов Шафеева.doc
Скачиваний:
47
Добавлен:
21.05.2015
Размер:
1.39 Mб
Скачать

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

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

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

2.7.1. Определение процедур и функций

Если в программе используются процедуры или функции, то их описа­ние должно предшествовать основному блоку программы.

Описание состоит из заголовка и тела процедуры (функции), которое обычно следует за за­головком.

Заголовок процедуры описывается строкой:

PROCEDURE <имя>(<список формальных параметров>);

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

PROCEDURE SUMMA(A1,A2:REAL; B1,B2:INTEGER; VAR S1,S2:REAL); Допускаются процедуры без параметров:

PROCEDURE <имя>;

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

За заголовком процедуры следует раздел описаний подпрограммы (ме­ток, констант, типов, переменных, а также описаний вложенных процедур и функций) и блок операторов.

Структура описания заголовка функции имеет вид

FUNCTION <имя>(<список формальных параметров>):<тип>;

Формальные параметры записываются с указанием их типа, кроме того, ука­зывается тип самой функции. За заголовком следует раздел описаний и блок выполняемых операторов.

Пример

FUNCTION STEP(x,y: REAL): REAL;

VAR a,b:real;

BEGIN

... ...

END;

После описания блока процедуры или функции следует оператор END, за которым ставится точка с запятой.

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

<имя функции>:=<выражение>;

например: STEP:=<выражение вещественного типа>.

2.7.2. Вложенные подпрограммы

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

Любые идентификаторы для описания переменных, констант, типов, а также

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

Переменные, описанные в разделе описания основной программы, на­зываются глобальными. Область действия глобальных переменных  основ­ная программа и ее подпрограммы.

Имена называются нелокальными, если они описаны не в самой под­рограмме, а в охватывающем ее блоке (или во внешней подпрограмме).

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

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