На этом шаге мы познакомимся со способами передачи параметров: по значению и по ссылке.
В некоторых случаях требуется из подпрограммы возвращать вычисленное значение в
основную программу. Например, изменим нашу программу так, чтобы вычисленные значения
площадей были доступны в основной программе. На первый взгляд, достаточно изменить
заголовок первой процедуры следующим образом:
Procedure Place_Cr (z,Sk:Real);
а обращение к этой процедуре из основной программы:
Place_Cr(r,Sk);
чтобы решить поставленную задачу (не забудьте описать переменную Sk в основной программе).
Полученный результат объясняется тем, что изменения переменных в процедуре не ведут к изменению соответствующих переменных в основной программе, так как из основной программы в процедуру были переданы копии фактических параметров. Такой способ передачи параметров называется передачей параметров по значению.
Для решения поставленной задачи нужно в процедуру передавать адреса
расположения этих переменных в памяти. Но откуда мы можем узнать,
по какому адресу расположена в памяти та или иная переменная? Это нам знать совсем
не надо, потому что мы должны "сказать" компьютеру, чтобы он передал в процедуру
не копию формального параметра, а его адрес. В этом случае изменение значения формального параметра
в процедуре приведет к автоматическому изменению фактического параметра в основной
программе. Такая передача параметров называется передачей параметров по ссылке.
Компьютер передает в процедуру адрес переменной, а не копию в том случае, когда
перед именем переменной в заголовке процедуры находится служебное слово Var.
С учетом сказанного заголовок процедуры будет выглядеть следующим образом:
Procedure Place_Cr (z: Real; var Sk:Real);
а все остальное остается без изменения.
Приведем измененный текст программы:
Рис.1. Пример передачи параметров по ссылке
Таким образом:
Следующий шаг посвящен организации функций пользователя.