КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
End FunctionПояснения синтаксиса: Public. Этим словом объявляют в стандартном модуле процедуру или функцию, которая должна быть доступна всем процедурам и функциям всех контейнеров проекта. В форме это слово применять нельзя. Private. В этом случае процедура или функция доступна только в пределах того контейнера, где она объявлена. Действует по умолчанию. Static. Все переменные, объявленные в в процедуре или функции станут статическими, то есть сохранят значения после завершения ее работы и выхода из нее. Exit SubилиExit Function.Эти инструкции осуществляют досрочный выход из процедуры или соответственно функции.
Синтаксис аргументов сам по себе является достаточно развитым:
[Optional] [ByVal / ByRef] [ParamArray] _ИмяАргумента [()] [AsТип][= ЗначениеПоУмолчанию]
ИмяАргумента – это имя переменной, массива, элемента управления или формы (в последних двух случаях тип принимает значения Control или Form). В случае массива после имени массива ставится пара скобок ( ), внутри которых не указываются границы значений индексов, что позволяет использовать одну процедуру (функцию) для разного числа элементов массива в каждом конкретном случае. Тип может быть Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (только переменной длины), Variant, пользовательский тип или Control и Form. Список аргументов определяет связь по данным между вызывающей процедурой (процедура, из которой происходит вызов) и вызываемой процедурой. Пример объявления процедуры вычисления площади прямоугольника по заданным значениям сторон:
Sub D (Длина As Single, Высота As Single, _ Площадь As Single) Площадь = Длина * Ширина End Sub
Пример обращения к процедуре:
D w1, h1, s1 D w2, h2, s2 s = s1 + s2
Пример объявления функции вычисления площади прямоугольника по заданным значениям сторон:
Function Df (Длина As Single, _ Высота As Single) As Single Df = Длина * Ширина End Function
Пример обращения к функции:
s = Df(w1, h1) + Df(w2, h2)
Пример процедуры формирования вектора из сумм элементов столбцов матрицы:
Sub MatrVektor (A() As Single, B() As Single, _ MaxI As Integer, MaxJ As Integer) Dim J As Integer, I As Integer For J = 1 To MaxJ A(J) = 0 For I = 1 То MaxI А(J) = А(J) + B(I,J) Next Next End Sub
Изменяя значения аргументов данную процедуру можно использовать для работы с матрицами произвольного размера. А вот пример функции для вычисления среднего значения элементов одномерного массива:
Function FunSumVector (A( ) As Single, _ MaxI As Integer) As Single Dim Sum As Single, I As Integer Sum = 0 For i=1 To MaxI Sum = Sum + A(I) Next FunSumVector = Sum/MaxI End Function
В следующем примере функция Celsius пересчитывает градусы Фаренгейта в градусы Цельсия. Когда функция вызывается процедурой Command1_Ckick, переменная, содержащая значение аргумента, передается функции. Результат вычислений возвращается вызывающей процедуре и выводится в окно сообщения.
Sub Command1_Ckick() Dim t As Single t = InputBox( _ "Введите температуру в градусах Фаренгейта“) MsgBox "Температура равна " & _ Celsius(t) & " градусов Цельсия" End Sub Function Celsius(ГрадФар As Single) As Single Celsius = (ГрадФар - 32) * 5 / 9 End Function
Поясним назначение зарезервированных слов, применяемых при определении аргументов: Optional.Это слово должно предшествовать имени того аргумента, который является необязательным. После необязательного аргумента могут следовать только необязательные же аргументы. Нельзя использовать необязательные аргументы совместно с массивом аргументов (ParamArray). ByVal.Значение аргумента, которому предшествует это слово, будет передаваться в процедуру или функцию по значению (передается его копия). Если аргументом окажется внешняя относительно процедуры переменная, то никакие манипуляции с этим аргументом в теле процедуры или функции не изменят значения этой внешней переменной. Такой способ применяется для входных данных. При обращении к процедуре или функции соответствующий аргумент может быть выражением. ByRef.Передача значения аргумента будет производиться по ссылке (передается физический адрес аргумента). Значение внешней переменной, переданной процедуре в качестве этого аргумента, может быть изменено операторами процедуры. Этот режим передачи аргументов по ссылке принят по умолчанию и используется для выходных параметров. При обращении к процедуре или функции соответствующий аргумент может быть только переменной. ParamArray. Массив аргументов. Таковым может быть объявлен только последний аргумент в списке, при этом он будет представлять собой переменную типа Variant, содержащую в себе массив. Этим способом можно передавать в процедуру или функцию значительные объемы данных. При использовании массива аргументов нельзя применять свойства Optional, ByVal и ByRef. ЗначениеПоУмолчанию. Допустимо только для необязательного аргумента. Задает значение, которое будет автоматически присвоено аргументу в случае его отсутствия.
|