Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABC_Pascal.doc
Скачиваний:
2149
Добавлен:
30.03.2015
Размер:
1.12 Mб
Скачать

7.5. Структура подпрограммы-процедуры

Структура подпрограммы-процедуры с параметрами имеет вид

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

{ раздел описания (метки, константы, типы, переменные ) }

BEGIN

{ операторы подпрограммы }

END;

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

Пример программы для вычисления второй и четвертой степеней числа:

PROGRAM PROS;

VAR X, Y, A, A2, A4: INTEGER; {A – исходная переменная,

A2 - A2, A4 - A4 , глобальные переменные}

PROCEDURE STEP24; {процедура без параметров}

BEGIN

A2:=A*A;

A4:=A2*A2;

WRITELN(A:5, A2:5, A4:6);

END;

BEGIN {основная программа}

READ(Y, X);

WRITELN('Число; квадрат; куб');

A := X;

STEP24; {вызов подпрограммы}

A := Y;

STEP24; {вызов подпрограммы}

END.

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

Пример: PROCEDURE P(Y, X: REAL; VAR Z1, Z2: REAL);

где Y, X  параметры-значения, Z1, Z2  параметры-переменные.

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

Чем меньше параметров объявлено параметрами-переменными и чем меньше используется глобальных переменных, тем меньше возможность по­лучения непредвиденных программистом побочных эффектов в программе.

При наличии одноименных переменных в программе и подпрограмме в подпрограмме будут доступны только локальные переменные.

7.6. Передача в подпрограмму массивов и строк

Передача одиночных элементов массивов при вызове подпрограммы не отличает­ся от передачи в неё простых переменных. При передаче всего массива рекомендуется пред­варительно определить его тип, поскольку он не является стандартным. Например:

TYPE ATYPE = ARRAY[1..10] OF REAL;

PROCEDURE R(A: ATYPE);

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

Однако объявить процедуру можно и следующим образом:

PROCEDURE R(A: ARRAY[1..10] OF REAL);

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

Пример описания и передачи строковых переменных:

TYPE INTYPE = STRING[10];

ONTYPE = STRING[30];

FUNCTION R(A: INTYPE): ONTYPE;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]