Шаг 39.
Способы передачи параметров

    На этом шаге мы познакомимся со способами передачи параметров: по значению и по ссылке.

    В некоторых случаях требуется из подпрограммы возвращать вычисленное значение в основную программу. Например, изменим нашу программу так, чтобы вычисленные значения площадей были доступны в основной программе. На первый взгляд, достаточно изменить заголовок первой процедуры следующим образом:


     Procedure Place_Cr (z,Sk:Real);

а обращение к этой процедуре из основной программы:


     Place_Cr(r,Sk);

чтобы решить поставленную задачу (не забудьте описать переменную Sk в основной программе).


Измените соответствующим образом заголовки и вызовы процедур, дополните основную программу выводом значений переменных Sk и Sp, после чего выполните программу. Прокомментируйте полученный результат.

   

    Полученный результат объясняется тем, что изменения переменных в процедуре не ведут к изменению соответствующих переменных в основной программе, так как из основной программы в процедуру были переданы копии фактических параметров. Такой способ передачи параметров называется передачей параметров по значению.

    Для решения поставленной задачи нужно в процедуру передавать адреса расположения этих переменных в памяти. Но откуда мы можем узнать, по какому адресу расположена в памяти та или иная переменная? Это нам знать совсем не надо, потому что мы должны "сказать" компьютеру, чтобы он передал в процедуру не копию формального параметра, а его адрес. В этом случае изменение значения формального параметра в процедуре приведет к автоматическому изменению фактического параметра в основной программе. Такая передача параметров называется передачей параметров по ссылке. Компьютер передает в процедуру адрес переменной, а не копию в том случае, когда перед именем переменной в заголовке процедуры находится служебное слово Var. С учетом сказанного заголовок процедуры будет выглядеть следующим образом:


Procedure Place_Cr (z: Real; var Sk:Real);
а все остальное остается без изменения.

    Приведем измененный текст программы:


Рис.1. Пример передачи параметров по ссылке

Текст этой программы можно взять здесь.

    Таким образом:



    Следующий шаг посвящен организации функций пользователя.


Предыдущий шаг Содержание Следующий шаг