Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_TP.doc
Скачиваний:
10
Добавлен:
22.12.2018
Размер:
1.4 Mб
Скачать

Общая структура подпрограмм

Описать подпрограмму- значить указать ее заголовок и тело.

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

Общий вид:

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

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

Примеры:

PROCEDURE SWAP(VAR X,Y:BYTE);

FUNCTION MAX(A,B:BYTE):BYTE;

PROCEDURE PR;

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

Общий вид процедуры:

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

CONST

TYPE

VAR {раздел описания констант, типов, переменных}

BEGIN

........................

END;

PR1(<список фактических параметров>);

Обращение к процедуре возможно большое число раз. Вызов процедуры на выполнение реализуется посредством оператора PROCEDURE .

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

Структура функции:

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

CONST

TYPE

VAR {раздел описания констант, типов, переменных}

BEGIN

.............................

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

END;

Функция должна иметь тип результата или тип возвращающего значения. Возвращающее значение - результат выполнения функции (оно может быть только одно ). В теле функции обычно перед END; обязательно присутствие оператора присваивания следующего вида:

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

Допустим, F1:= SUM +A[I].

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

Пример: возведение любого числа в любую вещественную степень.

PROGRAM EXAMPLE 23;

VAR

X,Y:REAL;

CH:CHAR;

FUNCTION POWER(A,B:REAL):REAL;

{фактические параметры Х и Y подставляются вместо формальных параметров А и В}

BEGIN

IF A>0 THEN

POWER:= EXP(B*LN(A));

ELSE

IF A<0 THEN

POWER:= EXP(B*LN(ABS(A)));

IF B=0 THEN

POWER:= 1

ELSE

POWER:= 0

END;

BEGIN{MAIN}

REPEAT

WRITELN('Вы желаете выполнить операцию возведения ');

WRITELN('числа Х в степень Y ? (Y/N) ');

READLN(CH);

IF (CH ='Y') OR (CH='Y') THEN

BEGIN

WRITELN('Введите числа Х и Y . Для окончания ввода ');

WRITELN('Нажмите клавиши CTRL +Z ');

READLN(X,Y);

WRITELN( POWER(X,Y):12:10);

{Вызов функции осуществляется при обращении к встроенной процедуре WRITELN , Х и Y в момент обращения к функции являются фактическими параметрами}

END.

Пример:

PROGRAM EXAMPLE _ 24;

TYPE STYPE = STRING[20];

VAR S:STRING[6];

{SV} {Отключение контроля}

FUNCTION PAS(VAR S:STYPE):STRING;

BEGIN

PAS:= S+ '.PAS';

END;

BEGIN{MAIN}

WRITELN('Введите имя файла ');

READLN(S);

END.

При записи фактических параметров:

1) число фактических параметров должно быть равно числу формальных параметров, имеющихся в описании процедуры;

2) каждому формальному должен соответствовать фактический параметр ( при соответствии типов);

3) если фактический параметр является входным данным, то он может задаваться в виде выражения; если он означает результат, то он может быть только именем.

Отличие процедур от функций:

- тип возвращающего значения у функции;

- оператор присваивания у функции;

- название оператора.

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

- интерфейс подпрограммы (информация для ее вызова);

- локальный контекст подпрограммы ( описание типов, констант, переменных);

- операторы, составляющие смысл подпрограммы.