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() As Single, 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 ключевые слова;
имя — имя переменной, массива (в случае массива используется имя ( ) без указания границ значения индексов, что позволяет использовать одну функцию для разного числа элементов массива в каждом конкретном случае), элемента управления или формы (в последних дйух случаях тип принимает значения Control и Form).
Тип может быть Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (только переменной длины). Variant, пользовательский тип или Control и Form. As тип необходимо применять для каждого аргумента.
Список аргументов определяет связь по данным между вызывающей (функция, из которой происходит вызов) и вызываемой (функция, которая вызывается) процедурами или функциями. Локальные данные, определенные внутри функции (кроме тех, что определены в списке general для форм), не могут использоваться в других процедурах и.'функциях (например, переменные с одинаковыми именами, но объявленные в разных функциях, хранятся в разных ячейках памяти и изменение переменной в одной из функций не ведет к изменению одноименной переменной и другой функции).
Exit Function вызывает прекращение выполнения функции ц выход из нее в вызывающую программу.
Функция не может быть определена внутри какой-либо процедуры или функции.
Пример функции вычисления площади прямоугольника по заданным значениям сторон:
Function FunDemo (RLen, Rwid) As Single
'заголовок функции FunDemo с “двумя аргументами- Rlen-длина и Rwid-ширина
“тип имени функции определен как Single Dim Area ' объявление локальной
'переменной Area = RLen * Rwid ' расчет площади MsgBox “Площадь равна” & Area ' печать
'результата. FunDemo = Area 'имени функции
'присваивается вычисленное значение End Function
Пример функции для вычисления среднего значения элементов одномерного массива:
Function FunSumVecior (A( )} As Single,
MaxI As Integer) As Single
Dim SumVector As Single, I As Integer
Surn Vector = 0
For 1=1 To MaxI ' верхняя граница индекса 'I определяетсяпередаваемым аргументом процедуры
SumVector =SwnVector + A(I)
Next I
FunSuni Vector = SumVector/MaxI 'имени
'функции присваивается вычисленное значение End Function
Изменяя значения аргументов данную функцию можно использовать для работы с вектором произвольного размера.
Используемые ключевые слова аналогичны рассмотренным выше для процедур.
Приведем примеры заголовков функций с использованием параметров ParamArray и Optional:
Function (‘.ilcSur-i (ByVa;: FirstArg As Integer, par^Array OtnerArqri;;^
Function MyFunc.My^tr As String, Optional MyArgI, Opt--^1’”1”-‘1 MyArg2 )
Обращение к функции является операндом выражения (т.е. в отличии от процедуры для ее вызова не используется специальный оператор), имеет следующий синтаксис
имя функци11([список значений})
список значении - список значений аргументов (соответствует списку аргументов в операторе Function по количеству, порядку следования и типу. если не используется параметр Optional). Кроме того должно выполняться следующее соответствие между списками аргументов и значениями:
Пример 1.
Function Sum (A As Integer, B As Integer) As I n t e g e r
‘список аргументов состоит из переменных • С - А + В Sum = С Knd Function Sub Form_Click ; ) italic X(3) As Integer X<1) - 1 X(2) - 2 X(3) = Sum(X(l), X(1) - X(2))’список значений
‘ включает 'элементы мас,”'ЛЕ^а и выражение Print Х(1) , Х(2), Х(3) End Sub Пример 2. .
Function Sum (A As Integer/ В As Integer) ftg Integer
'список -аргументов состоит из переменных С = А + В Sum = С End Function Sub Forrn_Click () Dim X, Z As Integer X = 5 Z = Sum (X, 4)' список значений включает
' переменную и константу Print X, Z End Sub
Пример 3.Function Sum (A ( ) As Integer) As Integer 'список аргументов включает массив
А(3) = А(1) + А(2)
Sum—А(3)
End Function
Sub Form_Click ()
Static X(3) As Integer
X(1) = 1
X(2) - 2
X.(3 ) = Sum (X() ,)'список значений 'включает массив
Print Х(1), Х(2) , Х(3)
End Sub
Для рассмотренных примеров заголовков функций с параметрами ParamArray и Optional обращения к функциям могут иметь следующий вид:
ReturnValue = CalcSum(4, 3 ,2 ,1) первый аргумент функции FirstArg принимает значение 4, остальные аргументы являются элементами массива и принимают значения OtherArgs(l) = 3, OtherArgs(2) = 2, последнее значение определяет размерность массива (1).
RetVal = MyFunc(“Hollo”, 2, “World”) - В этом обращении заданы все три значения аргумента.
. RetVal = MyFunc (“Test”, , 5) — в этом обращении не задано значение второго аргумента.
RetVal = MyFunc (МуАгд! :-- 7) - в этом обращении зада-но значение второго аргумента с использованием его имени.
Пример программы.
Поместим рассмотренную функцию для определения среднего значения элементов одномерного массива в раздел general (Ьормы и обращение к ней в процедуру обработки события щелчка мыши по форме (рис. 3.19). После запуска программы и щелчка мыши по форме распечатывается среднее значение суммы элементов массива Х (рис. 3.20).
... соответствующее диалоговое окно для выбора таблиц из базы-источника, а затем диалоговое окно для выбора файла назначения. · Выберите соответствующие спецификации и выполните экспортирование. · Microsoft Access выдаст сообщение о результате экспортирования. Запросы. Запрос можно представить себе как точку зрения на данные, включенные в таблицу. Запросы служат для селекции и ...
... мастера на основе одной или нескольких таблиц или запросов. Мастер задает подробные вопросы об источниках записей, полях, макете, требуемых форматах и создает отчет на основании полученных ответов. 1. В окне базы данных выберите Отчеты и нажмите кнопку Создать. 2. В диалоговом окне Новый отчет выберите нужного мастера. 3. Выберите таблицу или запрос, содержащие данные, на ...
... . В начале своего появления сканеры взаимодействовали с программами посредством уникального для каждой модели сканера интерфейса, что серьезно затрудняло включение поддержки работы со сканером в прикладные программы. Для решения этой проблемы был разработан TWAIN - индустриальный стандарт интерфейса программного обеспечения для передачи изображений из различных устройств в Windows и Macintosh. ...
... быть выведены на печать. На экране рисунки могут быть статическими (неподвижными) или динамическими (движущимися). В последнее время машинная графика выделилась в самостоятельный раздел информатики с многочисленными приложениями. Средствами машинной графики создается не только печатная продукция, но и рекламные ролики на телевидении, мультфильмы. Объясним, как кодируется изображение в памяти ...
0 комментариев