НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

13.2. Параметры-переменные

Если перед именем формального параметра стоит ключевое слово VAR, то такой параметр есть параметр-переменная. Примерами таких параметров служат X1 и Х2 в заголовке


Фактический параметр, соответствующий параметру-переменной, может быть только переменной (не константой и не выражением).

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

Пример. При вызове процедуры SQ оператором SQ(P,Q, R,Y,Z) для переменных X1 и Х2 используются непосредственно те ячейки, которые отведены для Y и Z. Поэтому оператор присваивания Х1: = (-B+SQRT(D))/(2*A) засылает полученное значение в ячейку Y.

Под формальные и фактические параметры-значения транслятор отводит разные области памяти. Поэтому результат выполнения процедуры может быть передан только через параметр-переменную.

Пример.


Результаты, выдаваемые процедурой Н:1 и 1; программа печатает 0 и 1.

Разберем этот пример: фактический параметр А соответствует формальному параметру-значению X, а фактический параметр В -' формальному параметру-переменной Y. Под параметры А и X отведены две разные ячейки памяти, а под В и Y - однаи та же ячейка.

При обращении к Н(А,В) из ячейки А пересылается значение О в ячейку X, а в ячейку Y засылается адрес ячейки В, содержащей О, так как в процедуре Н параметр X - это параметр-значение, a Y - параметр-переменная.

При выполнении оператора Х: = Х+1 в ячейку X прибавляется 1 и в ячейке X окажется 1, а в ячейке А по-прежнему - 0.

Выполнение оператора Y: = Y + 1 имеет следующий смысл: "взять число из ячейки, адрес которой находится в Y (т. е. из ячейки В), прибавить 1 и заслать в ту же ячейку (т. е. в В)."

Поэтому в результате выполнения оператора Y: = Y + 1 значение ячейки В станет 1. Оператор печати из процедуры WRITELN (X, Y) выдаст содержимое ячейки X и ячейки Y, т. е. 1 и 1. Оператор печати WRITELN (А, В) в программе напечатает содержимое А, которое осталось равным 0, и содержимое ячейки В, которое равно 1.

Процедуры в паскале допускают рекурсию, т. е. процедур может вызвать сама себя.

Если в процедуре Р есть обращение к процедуре Q, описанной ниже, то перед описанием Р процедура Q декларируется как FORWARD: после заголовка процедуры Q ставится двоеточие, а за чем ключевое слово FORWARD*.

Пример.


* (Обращаем внимание, что в этом случае параметры процедуры описываются только в операторе с FORWARD. В заголовке самой процедуры параметры опускаются. Подробнее о рекурсии сказано в п. 14.3.)

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь