Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА_Паскаль.doc
Скачиваний:
7
Добавлен:
08.05.2019
Размер:
1.77 Mб
Скачать

11.3. Описание функции

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

Описание функции имеет следующую структуру:

FUNCTION ИМЯ(СПИСОК ФОРМАЛЬНЫХ ПАРАМЕТРОВ):ТИП_РЕЗУЛЬТАТА;

РАЗДЕЛ ОПИСАНИЙ

BEGIN

РАЗДЕЛ ОПЕРАТОРОВ (тело функции)

ИМЯ:=…

END;

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

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

ИМЯ_ФУНКЦИИ (СПИСОК ФАКТИЧЕСКИХ ПАРАМЕТРОВ).

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

PROGRAM PRIMFUNC;

VAR

A,B:INTEGER;

AF,BF,ABF:LONGINT;

FUNCTION FACT(L:INTEGER):LONGINT; {Началоописанияфункции}

VARI:INTEGER;VP:LONGINT; {Описание переменных функции}

BEGIN {Телофункции}

IF L<0 THEN FACT:=0

ELSE IF L=0 THEN FACT:=1

ELSE

BEGIN

VP:=1;

FACT:=VP; {С именем связывается значению результата вычисления функции}

END;

END; {КОНЕЦ ОПИСАНИЯ ФУНКЦИИ}

BEGIN {НАЧАЛО ОПЕРАТОРОВ ПРОГРАММЫ}

WRITELN('ВВЕДИТЕ ЗНАЧЕНИЯ A И B');

READLN(A,B);

AF:=FACT(A); {Обращение к функции для вычисления А!}

BF:=FACT(B); {Обращение к функции для вычисления В!}

ABF:=FACT(A+B); {Обращение к функции для вычисления (А+В)!}

WRITELN('РЕЗУЛЬТАТЫ AF=',AF, 'BF=',BF,'ABF=',ABF)

END. {КОНЕЦ ПРОГРАММЫ}

Для вызова функции FACT ее просто указали в операторе присваивания. Параметры А, В и выражение (А+В) в момент обращения к функции - это фактические параметры. Каждый из них в момент вызова подставляется вместо формального параметра L в заголовке функции и затем над ним осуществляются нужные действия. Полученный результат присваивается идентификатору функции - именно он и будет возвращен как значение функции при выходе из нее. В программе функция FACT вызывается трижды с разным параметром, поэтому будут получены три разных результата.

11.4. Области действия имен

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

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

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

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

Область действия имени, описанного в программе, этo та часть программы, в которой допустимо его использование. Графически области показаны на рисунке.