Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11 / тп / lections / 5_Protsedury_i_funktsii.doc
Скачиваний:
28
Добавлен:
19.05.2015
Размер:
57.34 Кб
Скачать

3. Аргументы. Способы передачи аргументов в vb

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

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single,Y As Single)

End Sub

В общих процедурах количество и порядок используемых аргументов определяется разработчиком.

Cинтаксиса аргумента:

[ByVal/ByRef]ИмяАргумента[()][As ИмяТипа]

В VB аргументы могут передаваться двумя способами:

1) как ссылки (ByRef). В этом случае подпрограмма получает физический адрес памяти передаваемой переменной;

2) как значение (ByVal). В этом случае вызванная подпрограмма получает копию значения.

Для того чтобы передать аргумент как ссылку, следует перед аргументом указать ключевое слово ByRef. Однако, поскольку по умолчанию аргу­менты в Visual Basic именно так и передаются, ByRef можно опус­тить.

Массив в подпрограмму всегда передается в виде ссылки.

Именованные аргументы

Для многих встроенных функций, операторов и методов Visual Basic обеспечивает возможность использования именованных аргументов для упрощения ввода их значений. Обычно аргументы передают в последо­вательности,указанной в заголовке процедуры:

Private Sub Cominandl_Click ()

SomeProcedure 1,2,3

End Sub

Sub SomeProcedure (aOne, aTwo, aThree)

Print aOne,aTwo,aThree 'вывод:123

End Sub

Использование именованных аргументов позволяет передавать часть или все аргументы в любом порядке. Для этого при вызове процедуры указывается имя аргумента и его значение, разделяемые специальным знаком - двоеточием со знаком равенства (:=), например, MyArgument := "someValue". Аргументы разграничиваются запятыми; порядок их следования значения не имеет:

Private Sub Commandl_Click ()

SomeProcedure aThree:=3,aTwo:=2,a0ne:=l

End Sub

Sub SomeProcedure (aOne,aTwo,aThree)

4. Вызов общих процедур и функций

Чтобы код общей функции или процедуры был выполнен, она должна быть вызвана.

Вызов процедуры осуществляется вставкой ее имени в текст программы. Сразу после имени должны следовать аргументы процедуры, если таковые предусмотрены.

ИмяПроцедуры[Аргумент1, Аргумент2, … ,АргументN]

Например, вызов процедуры, которая вычисляет значение sum суммы n элементов одномерного массива x, может выглядеть так:

Сумма n, x, sum

Обратите внимание на то, что список аргументов процедуры не заключен в скобки.

Другой способ вызова процедуры заключается в использовании зарезервированного слова Call (вызов), при этом за ним должно следовать имя процедуры и далее может быть заключенный в круглые скобки список аргументов:

Call ИмяПроцедуры[(Аргумент1, Аргумент2, … , АргументN)]

Например:

Call Сумма (n, x, sum)

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

ИмяФункции([Аргумент1, Аргумент2, … , АргументN])

Например, обращение к функции Сумма1 происходит дважды в выражении:

а * Сумма1(n,x) + Сумма1(m,y).

Соседние файлы в папке lections