Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

End Function




End Sub

Объявление процедур и функций

Вызов процедур и функций

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

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

 

ИмяПроцедуры [Список значений аргументов]

 

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

 

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

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

 

X = A + ИмяФункции ([Список значений аргументов])

 

Чтобы функция могла вернуть значение, ее вызов должен фигурировать в какой-нибудь конструкции, использующей возвращаемое функцией значение (например, в качестве присваиваемой величины в операции присваивания, в качестве условия в конструкции If и т. п.).

Процедура (функция) не может быть определена внутри какой-либо процедуры или функции.

Для объявления процедуры используют следующий синтаксис:

 

[ Private /Public][Static] Sub ИмяПроцедуры _

[(Список аргументов)]

[Инструкции]

[Exit Sub]

[Инструкции]

 

Синтаксис объявления функции выглядит несколько иначе:

 

[ Private /Public][Static] Function ИмяФункции _

[(Список аргументов)] [ As Тип]

[Инструкции]

[ИмяФункции = Выражение]

[Exit 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.

ЗначениеПоУмолчанию. Допустимо только для необязательного аргумента. Задает значение, которое будет автоматически присвоено аргументу в случае его отсутствия.




Поделиться с друзьями:


Дата добавления: 2014-12-07; Просмотров: 670; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.