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

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

Процедуры и функции

Для облегчения структуры программы целесообразно разделить большую задачу программирования на мелкие подзадачи. Решение подзадач является задачей небольших целых подмодулей - процедур и функций. Такой подход облегчает отладку и администрирование программы. Возможность повторного использования подмодулей уменьшает количество работы программиста.

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

Связь между подмодулями и вызывающим их модулем организуется при помощи параметров. По способу передачи параметров они делятся на две группы:

  1. передача параметров по ссылке (англ. Call by reference) - в этом случае вызываемый модуль может изменить сохранённые значения параметров передаваемых вызывающим модулем. Технически такой вызов реализован таким образом, что вызывающий модуль передаёт вызываемому адреса передаваемых параметров.
  2. Передача параметров по значению(англ. 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