
- •1.Общая характеристика языка Паскаль
- •2.Основные элементы языка Паскаль
- •3.Структура программы на языке Турбо Паскаль
- •4.Технология программирования
- •6.Понятие типа данных в Турбо Паскаль
- •Простые типы данных
- •Численные (арифметические) выражения
- •Логические выражения
- •Символьные выражения
- •1. Оператор присваивания.
- •2. Оператор ввода данных.
- •3. Оператор вывода данных.
- •3. Операторы повторений
- •2.2 Оператор цикла с постусловием
- •2.3. Оператор цикла со счетчиком
- •25. 7.11. Что такое вложенные циклы?
- •29.Строковый тип данных в языке Pascal
- •30.Строковые операции
- •4.2. Описание и вызов процедур.
- •4.3. Описание функции.
- •4.4. Формальные и фактические параметры.
- •Параметры-значения.
- •Параметры-переменные.
- •Параметры-константы.
- •Параметры-процедуры и параметры-функции.
- •4.5. Область действия имен.
- •4.6. Процедуры и функции без параметров.
- •4.7. Рекурсивные процедуры и функции.
- •4.8. Предварительно-определенные процедуры.
- •Описание множественного типа данных Паскаля
- •Операции над множественными типами Паскаля
- •Операции отношения множественных типов Паскаля
Параметры-константы.
Так как аргументы, передаваемые в процедуру или функцию , размещаются в стеке, то в случае передачи значением массива большого размера, может произойти переполнение стека. В языке Турбо Паскаль 7.0 введен описатель CONST, который может задаваться для формальных параметров подпрограмм. Аргумент, соответствующий такому параметру, передается по ссылке, подобно параметру с описателем Var, но в самой процедуре(функции) запрещается присваивать этому аргументу новое значение.
PROCEDURE <имя процедуры> (CONST <имя константы>: <тип>; ...);
FUNCTION <имя функции> (CONST <имя константы> : <тип> ; ...): <тип результата> ;
Параметр-константу нельзя передавать в качестве параметра в другую подпрограмму.
Параметры-процедуры и параметры-функции.
Для объявления процедурного типа используется заголовок подпрограммы , в котором опускается имя процедуры(функции).
Например:
TYPE
|
Ниже приведен пример использования функции 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.
Если подпрограмма имеет параметры, то идентификаторы из списка формальных параметров являются локальными для этой процедуры(функции) и глобальными для каждой подпрограммы в ней (если таковые имеются) .
наверх