Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Продолжаем изучать Visual Basic

Использование аргументов в процедурах событий можно увидеть на примере события MouseMove. Для некоторых событий после имени в скобках указываются аргументы, при помощи которых процедуре передаются необходимые ей значения. Для процедур обработки событий эти аргументы обычно устанавливает Visual Basic. Если выбрать из (Procedure) событие MouseMove, то процедура будет выглядеть так:

Private Sub Commandl MouseMove(Button As Integer,
                               _Shift As Integer,
                               X As Single,
                               Y As Single)
End Sub

Для события MouseMove Visual Basic передает четыре аргумента - состояние кнопок мыши (Button), клавиши (Shift) и координаты X и Y курсора. Если вы сами пишете процедуру, то сами задаете аргументы. Допустим, вы хотите написать процедуру, которая выводит текст.

Sub MyMes()
Print "Эта часть программы находится в разработке."
End Sub

Создание подобной процедуры имеет то преимущество, что при необходимости вывести строку "Эта часть программы находится в разработке." достаточно всего лишь вызвать ее, а не вводить всю строку кода. Теперь процедура вызывается как обычный оператор Visual Basic:

Private Sub Command1_Click()
MyMes
End Sub

В этом примере из процедуры Commandl_click вызывается процедура MyMes. Если исходить из того, что до и после вызова стоят и другие операторы, то при вызове MyMes программа переходит в эту процедуру, выполняет ее операторы и опять возвращается в точку прерывания, в процедуру Commandl_click. Как уже упоминалось, в созданных процедурах могут использоваться и аргументы. Они просто помещаются в скобках в заголовке процедуры с указанием (при необходимости) типа данных. Если добавить аргументы, данный пример можно расширить так, чтобы процедура MyMes выводила не один и тот же текст, а любой другой, задаваемый при вызове процедуры. Определение процедуры может расшириться следующим образом:

Sub MyMes (Message As String) Print " Эта часть программы находится в разработке "S Message End Sub

Нужно изменить также и вызов процедуры:

Private Sub Commandl_Click (")
MyMes "до следующего месяца."
End Sub

В этом примере вызывается та же процедура MyMes. При этом ей дополнительно передается один аргумент.

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

Function UeToRub (Ue As Currency, Kurs As Single) As Currency
Rub = Ue * Kurs 
End Function

Для определения функции используется ключевое слово Function. В конце процедуры вместо End Sub пишется End Function. В данном случае в заголовке функции передаются два аргумента. Вас могут удивить два последних слова в первой строке кода. Объяснение этому очень простое: Visual Basic должен знать тип возвращаемого значения и слова за скобками указывают этот тип. В примере в качестве возвращаемого значения передается денежная величина. Поэтому функцию нужно определять как As Currency. Во второй строке процедуры вычисляется рублевая стоимость, что с математической точки зрения не представляет никаких проблем. Особенность заключается в том, что имя функции используется одновременно как переменная. Это значит, что переменная с именем функции содержит возвращаемое значение. Вызов функции несколько отличается от вызова процедуры:

Private Sub Commandl_Click()
Dim RubRes As Currency
RubRes = Rub(100, 29)
End Sub

В этой процедуре вызывается функция Rub. В качестве аргументов ей передаются значения 100 и 29, являющиеся соответственно ценой, например в долларах, и текущим курсом. Возвращаемое значение, в данном случае 2900, присваивается переменной RubRes. Обратите внимание на различия при вызове функций и процедур. При вызове функций аргументы указываются в скобках. Возвращаемое значение должно быть присвоено переменной, поэтому функция должна вызываться следующим образом:

Возвращаемое_значение =Функция (Аргумент1, Аргумент2....)

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

Процедура Аргумент1, Аргумент2,...

Итак, подведем некоторые итоги. Процедуры - это, как правило, маленькие подпрограммы, которые можно вызывать из других мест программы. Поэтому если в вашем приложении имеется часто повторяющаяся задача, то удобнее всего создать процедуру, которая ее выполняла бы, а затем при необходимости просто вызывать ее - это может существенно сэкономить время. События всегда обрабатываются в процедурах. Функции ведут себя так же, как процедуры. Самое важное отличие - каждая функция всегда возвращает только одно значение.

[Назад] [Вперед]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог