Програмирование на Visual Basic
Информация - Компьютеры, программирование
Другие материалы по предмету Компьютеры, программирование
»енных как Global (см. выше).
Чтобы избежать конфликта в объявлении одних и тех же имен, можно использовать определение Private, т.е. сделать процедуру доступной только в рамках модуля. В этом случае имя процедуры не может совпадать с такими именами, объявленными на уровне модуля, как имена переменных, массивов, констант и имена других процедур данного модуля.
Optional определяет, что аргумент не является обязательным. При его использовании все последующие аргументы в списке аргументов также являются необязательными и для них также необходимо использовать данное ключевое слово. Аргументы, объявленные Optional, должны иметь тип Variant. He может использоваться для аргумента, для которого задан параметр ParamArray.
ByVal определяет, что аргумент передается в процедуру по значению (см. ниже).
ByRef определяет, что аргумент перелается в процедуру по ссылке (см. ниже).
ParamArray относится к последнему аргументу в списке аргументов и определяет, что конечный (заключительный) аргумент является необязательным массивом. Не может использоваться совместно с параметрами ByVal, ByRef, Optional.
Пример.
Sub ReturnTwice(ReturnValue, Optional A) If IsMissing(A) Then функция IsMissing ()
“проверяет передачу аргумента А в процедуру ReturnValue =Null если аргумент не передается,
вычисляемое значение присваивается О Else ReturnValue = A * 2 если аргумент передается,
вычисляется значение от аргумента End If End Sub
Синтаксис оператора обращения к процедуре следующий:
имя процедуры[список значении} или
Call имя процедуры[{список значении)}
где Call ключевое слово;
список значений список значений аргументов (соответствует списку аргументов в операторе Sub no количеству, порядку следования и типу, кроме случая когда используется параметр Optional).
Кроме того должно выполняться следующее соответствие между списками аргументов и значениями:
Аргумент Значение
Переменная | Константа, переменная,
I элемент массива, выражение.
Массив Массив
форма Форма
Элемент управления ; Элемент управления
I
Следующие примеры показывают правильное согласование между списками аргументов и значении:
Пример 1.
Sub Sum (A As Integer, B As Integer, С As Integer)
список аргументов состоит из переменных С = А + В End Sub Sub Form Click ()
Static X(3) AsInteger X(1) = 1 X(2) =2
Call Sum(X(l), X(1) + X(2), X(3))список
-значений включает элементы массиваи выражение
Print Х(1), Х(2), Х(3) End Sub
Пример 2.
Sub Sum (A As Integer, В As Integer, С As Integer)
список аргументов состоит из переменных СА + В End Sub Sub Forrri_Click ()
Dim X, Z As Integer
X = 5
Call Sum(X, 4, Z) список значений включает
переменные и константу Print X, Z End Sub
Пример 3.
Sub Sum (A ( ) As Integer)
список аргументов включает массив
А(3) = А(1) + А(2) End Sub
Sub Form_Click () Static X(3) As Integer
X(1) - 1
X(2) =2
Sum X ( ,)список значений включает массив
Print Х(1), Х(2), Х(3) End Sub
Следует обратить внимание, что в последнем примере обращение к процедуре не содержит ключевого слова Call и отсутствуют скобки, обрамляющие список значений.
Для рассмотренного примера списка аргументов с использованием параметра Optional, обращения могут иметь следующий вид:
Call ReturnTwice(ReturnValue, )
значение ReturnValue равно О
Call ReturnTwice(ReturnValue, 2)
значение ReturnValue равно 4 Пример программы.
Поместим рассмотренную выше процедуру формирования вектора из сумм элементов столбцов матрицы в раздел general формы:
Option Explicit
Sub SubMatrVektor (A() As Single, B() AsSingle, MaxI As Integer, Max.J As Integer) Dim J, I As Integer For J == 1 To MaxJ A(J) -- 0 For I = 1 To MaxI
A(J) = A(J) + B(I, J) Next I Next J End Sub
Private Sub Form_Ciick()
Static X(1 To 2, 1 To 3) As Single, Y(1 To 3) As Single
X(1, 1) = 1
X(1, 2) = 2
Х(1, 3) = 3
X(2, i) = 4
Х(2, 2} = 5
Х(2, 3) = 6
SubMatrVektor Y(), X(), 2, 3
Print Y(li, Y(2), Y(3) End Sub
Результат выводится на форму, показанную на оис.3.18.
Рис. 3.1S
3.6.2.Функции
Синтаксически функция определяется
[Public | Private] [Static] Function имя функции [(список аргументов)} [As тип]
[операторы объявления]
[операторы}
[имя функции = выражение]
[Exit Function] [операторы] [имя функции = выражение] End Function
где Public, Static, Private, Function , Exit Function , End Function
ключевые слова. Function определяет обязательный первый оператор функции. End Function обязательный последний оператор функции:
имя функции образуется в соответствии с общими правилами образования имен и может иметь описатель типа (As тип в конце первой строки относится к имени функции). Имя функции принимает значение и хотя бы один оператор
имя функции = выражение
может присутствовать внутри функции и выполняться при выходе из нее. Если никакое значение не присвоено имени функции, то имя функции принимает значение по умолчанию: числовая функция принимает значение 0, функция, объявленная как String, принимает значение пустой строки нулевой длины (“”), функция, объявленная как Variant принимает значение Empty (значение, которое принимает имя функции, называют возвращаемым значением функции возвращаемое значение).
Список аргументов имеет следующий синтаксис:
[Optional] [ByVal|ByRef][ParamArray] имя[( )][As тип] [.[Optional] [By Val | ByRef][ParamArray] имя[( )] [As тип] ] ... где Optional, ByVal, ByRef, ParamArray и As ключевые слова;
имя имя переменной, массива (в случае массива используется имя ( ) без указания границ значения индексов, что позволяет использовать одну функцию для разного числа элементов массива в каждом конкретном случае), элемента у?/p>