3.3.2 Использование функций и процедур. Передача параметров значением и указателем.

Процедуры и функции
Для облегчения структуры программы целесообразно разделить большую задачу программирования на мелкие подзадачи. Решение подзадач является задачей небольших целых подмодулей - процедур и функций. Такой подход облегчает отладку и администрирование программы. Возможность повторного использования подмодулей уменьшает количество работы программиста.
Процедуры и функции разделяют по их разным методам использования. Функцию используют при помощи ссылки на функцию, а процедуру при помощи процедурной строки. В отличие от процедуры функция возвращает значение, которое в некоторых случаях можно не использовать в дальнейшей программе. Например, если код ошибки не проверяется.
Связь между подмодулями и вызывающим их модулем организуется при помощи параметров. По способу передачи параметров они делятся на две группы:
- передача параметров по ссылке (англ. Call by reference) - в этом случае вызываемый модуль может изменить сохранённые значения параметров передаваемых вызывающим модулем. Технически такой вызов реализован таким образом, что вызывающий модуль передаёт вызываемому адреса передаваемых параметров.
- Передача параметров по значению(англ. Call by value) - вызывающий модуль передаёт вызываемому модулю конкретные значения параметров (их копии). При передаче параметров по значению вызываемый модуль не может изменить сохранённые значения параметров в вызывающем модуле.
Преимуществом передачи параметра по ссылке является то, что даже в случае объёмных данных не будет связанных с копированием затрат. В случае передачи параметра по значению, не надо переживать, что кто-то из данной подпрограммы может нежелательно изменить значение передаваемой переменной.
Пример:
Если у нас объявлена процедура myproc с двумя параметрами и функция myfunc с одним параметром, то их можно запустить следующим образом:
myproc(a,b);
d = myfunc(e/f);
В первой строчке выполняется процедура myproc, во второй - рассчитывается значение функции myfunc и сохраняется в переменную d.
Процедуры и функции часто называют подпрограммами (англ. Routine). Программу, из которой обращаются к подпрограммам, и которая сама таковой не является, называется главной программой (англ. Main program) или вызывающей подпрограммой (потому как в некоторых языках, к примеру, Java, все части кода это подпрограммы).
Дополнительное чтение: http://enos.itcollege.ee/~jpoial/java/i200loeng2.html