Delphi-6 - среда разработки программного обеспечения для систем промышленной автоматизации. Букреев В.Г - 63 стр.

UptoLike

Составители: 

ем этого правила осуществляется компилятором Object Pascal. Если бы
для предыдущего примера был использован такой заголовок функции:
Function Power (A: Real; var В : Real): Real;
то при втором обращении к функции компилятор указал бы на несоот-
ветствие типа фактических и формальных параметров (параметр обра-
щения Y есть выражение, в то время как соответствующий ему фор-
мальный параметр B описан как параметр-переменная).
Для того чтобы понять, в каких случаях использовать тот или
иной тип параметров, рассмотрим, как осуществляется замена формаль-
ных параметров на фактические в момент обращения к подпрограмме.
Если параметр определен как параметр-значение, то перед вызо-
вом подпрограммы это значение вычисляется, полученный результат
копируется во временную память (стек) и передается подпрограмме.
Важно учесть, что даже если в качестве фактического параметра указа-
но простейшее выражение в виде переменной или константы, все равно
подпрограмме будет передана лишь копия переменной (константы).
Любые возможные изменения в подпрограмме параметра-значения ни-
как не воспринимаются вызывающей программой, так как в этом случае
изменяется копия фактического параметра.
Если параметр определен как параметр-переменная, то при вызове под-
программы передается сама переменная, а не ее копия (фактически в
этом случае подпрограмме передается адрес переменной). Изменение
параметра-переменной приводит к изменению фактического параметра
в вызывающей программе.
В случае параметра-константы в подпрограмму также передается
адрес области памяти, в которой располагается переменная или вычис-
ленное значение. Однако компилятор блокирует любые присваивания
параметру-константе нового значения в тексте подпрограммы.
Итак, параметры-переменные используются как средство связи
алгоритма, реализованного в подпрограмме, с внешним миром: с помо-
щью этих параметров подпрограмма может передавать результаты сво-
ей работы вызывающей программе. Разумеется, в распоряжении про-
граммиста всегда есть и другой способ передачи результатовчерез
глобальные переменные. Однако злоупотребление глобальными связя-
ми делает программу, как правило, запутанной, трудной в понимании и
сложной в отладке. В соответствии с требованиями хорошего стиля
программирования рекомендуется там, где это возможно, использовать
передачу результатов через фактические параметры-переменные.
63