Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB. Часть2.doc
Скачиваний:
24
Добавлен:
02.02.2015
Размер:
870.4 Кб
Скачать

11.3 Вызов процедуры

Представленные в описании процедуры действия выполняются при вызове процедуры. Имеется две основные формы оператора вызова процедуры:

  1. с ключевым словом Call в виде:

Call ИмяПроцедуры [(СписокФактическихПараметров)]

  1. непосредственным указанием имени процедуры в виде:

ИмяПроцедуры [СписокФактическихПараметров]

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

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

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

Механизм работы процедуры рассмотрим на примере расчета прибыли на единицу продаваемого товара, которая вычисляется как разность между ценой и себестоимостью. Код программы приведен ниже.

Private Sub cmdВычислить_Click()

Dim curЦена As Currency, _

curСебестоимость As Currency, _

curПрибыль As Currency

curЦена = 25

curСебестоимость = 20

РазностьcurЦена, curСебестоимость, curПрибыль

txtПрибыль = Format(curПрибыль, "0.00 грн.")

End Sub

SubРазность(curA As Currency, curB As Currency, curC As Currency)

curC = curA - curB

End Sub

При щелчке на кнопке «Вычислить» будет выполняться процедура cmdВычислить_Click, которая вызывает в свою очередь процедуру Разность для вычисления прибыли. Полученный результат (5.00 грн.) выводится в текстовое поле txtПрибыль на форме.

Результат зависит от значений фактических параметров curЦена и curПрибыль и порядка, в котором они следуют при вызове процедуры. Если бы порядок изменить, например, вызов процедуры задать в виде:

Разность curСебестоимость, curЦена, curПрибыль

то результат был бы иным (- 5.00 грн.).

11.4. Функции

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

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

Функция вызывается как операнд в выражении путем указания ее имени и списка фактических параметров, которые заключаются в скобки (если имеются входные параметры). Если входные параметры отсутствуют, то указывается только имя функции.

Рассмотренный в предыдущем пункте пример может быть представлен с помощью функции Разность следующим образом:

Private Sub cmdВычислить_Click()

Dim curЦена As Currency, _

curСебестоимость As Currency, _

curЦена = 25

curСебестоимость = 20

txtПрибыль = Format(Разность(curЦена, curСебестоимость), "0.00 грн.")

End Sub

Function Разность(curA As Currency, curB As Currency) As Currency

Разность = curA - curB

End Function