Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
467.46 Кб
Скачать

Параметры-константы.

Так как аргументы, передаваемые в процедуру или функцию , размещаются в стеке, то в случае передачи значением массива большого размера, может произойти переполнение стека. В языке Турбо Паскаль 7.0 введен описатель CONST, который может задаваться для формальных параметров подпрограмм. Аргумент, соответствующий такому параметру, передается по ссылке, подобно параметру с описателем Var, но в самой процедуре(функции) запрещается присваивать этому аргументу новое значение.

PROCEDURE <имя процедуры> (CONST <имя константы>: <тип>; ...);

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

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

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

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

Например:

TYPE

TPR1= PROCEDURE( X,Y : REAL; VAR Z : REAL); TPR2= PROCEDURE ; TF1= FUNCTION: STRING; TF2=FUNCTION ( VAR S: STRING) : REAL;

Ниже приведен пример использования функции FF в качестве параметра другой функции RR.

USES CRT; TYPE FUN=FUNCTION (X,Y: REAL): REAL; VAR ... FUNCTION FF (X,Y: REAL): REAL; FAR; ... BEGIN ... END; FUNCTION RR (X,Y: REAL; F : FUN): REAL; FAR; ... BEGIN ... END; PROCEDURE TP (VAR Z : REAL; X,Y: REAL; CONST R: INTEGER); ... BEGIN ... END ; BEGIN ... Z:=RR(3 , 1 , FF); TP (Z,X,Y,R); ... END.

В этом примере используются :

  • X,Y - параметры-значения;

  • Z- параметр-переменная;

  • F- параметр-функция;

  • R- параметр-константа.

наверх

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

Любая подпрограмма представляет собой блок со своей областью описаний. Она может содержать внутри этого блока описания других процедур и функций , а также ращения к ним. Объекты, описанные внутри какого-либо блока, являются по отношению к нему локальными и не доступны внешним блокам. На них можно ссылаться только внутри блока, в котором они описаны. Под объектами понимаются име-на констант, типов, переменных, процедур, функций. Объекты, описанные во внешних блоках и не описанные во внутренних, являются глобальными по отношению к внутренним и доступны как во внешних блоках , так и во внутренних. При совпадении имен глобальных и локальных переменных, локальные переменные отменяют действия глобальных в пределах области своего действия.

На рисунке схематично представлены области действия отдельных идентификаторов:

Y - локальная переменная по отношению к блоку 4, недоступна в блоках 1,2,3.

K, L - локальная переменная для блока 2, недоступна в блоках 1,3,4.

C - глобальная переменная по отношению к блоку 3, недоступна в блоках 1 и 2.

B, D- глобальные переменные для блоков 2,3,4.Доступны в блоках 1,2,3,4.

T - общий тип

Идентификатор А обозначает две разные переменные : А - областью действия которой являются блоки 1 и 2, и переменная А' - область действия которой блоки 3 и 4 . То же самое с именем Х: одна переменная Х - с областью действия 1,2 и 3 блоки и переменная Х', которая действует только в блоке 4.

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

наверх