Процедуры

Процедура – это часть программы, которая не выполняется в естественном порядке, а вызывается специальным способом.

В различных языках программирования допускаются внешние и внутренние процедуры. Внешняя процедура не содержится внутри любой другой процедуры, может вызываться из произвольных мест программы и транслироваться отдельно, независимо от других фрагментов программы. Это дает возможность разбить решаемую задачу на логические, по возможности, слабо связанные между собой части и вести их разработку независимо разными людьми. Передача информации между процедурами осуществляется путем передачи аргументов из вызывающей процедуры в вызываемую. В вызываемой процедуре каждому аргументу в порядке их передачи соответствует параметр, тип и организация которого должны совпадать с типом и организацией аргумента. После передачи аргументов в теле процедуры выполняются задуманные действия и результат этих действий может быть передан обратно в место вызова с помощью того же механизма. Этот результат включается в список параметров вызываемой процедуры (следовательно и в список аргументов вызывающей). Иногда для описания этого механизма употребляют термины фактический параметр (вызывающая процедура) и формальный параметр (вызываемая). Внутренняя процедура содержится внутри некоторой другой процедуры и на ее употребление накладываются существенные ограничения. В языках Cи Basic допустимы только внешние процедуры.

По своей организации процедуры принято разделять на подпрограммы и функции.

Подпрограмма – это процедура, которая может возвращать произвольное число (от 0 до любого) параметров (результат выполнения) и для ее вызова применяется специальная инструкция.

C

Формально в языке нет понятия подпрограмма, опредено лишь понятие функция. Однако последняя легко преобразуется в подпрограмму и для ее вызова применяется инструкция вида:

<имя_процедуры>([список_аргументов]);

Пример. Подпрограмма умножения матриц.

MultMatrix(a, b, c, m, l, n);

Здесь:

a – левая матрица,

b – правая матрица,

c – матрица-результат,

m – число строк левой матрицы и результата,

i – число столбцов левой=числу строк правой,

n – число столбцов правой и результата.

Basic

Имеется 2 инструкции вызова:

call <имя_подпрограммы>([список_аргументов]) или

<имя_подпрограммы> [список_аргументов]

Пример. Подпрограмма умножения матриц.

call MultMatrix(a, b, c, m, l, n ) или MultMatrix a, b, c, m,l, n

Функция – это процедура, в которой выделяется один из возвращаемых объектов (основной результат выполнения). Он не включается в список параметров процедуры. Его значение присваивается имени функции. Таким образом, вызов функции может включаться в произвольное выражение и не требует специальной инструкции. Примером могут служить большинство встроенных функций языка.

Пример вызова.

Basic:y=sqr(x*x+z*z)+abs(x-z)

C: y=sqrt(x*x+z*z)+fabs(x-z);

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

Пример. Функция printf(<управляющая_строка>[, <список_аргументов>);

<управляющая строка> является первым обязательным параметром.