Читайте также: |
|
Функции во многом похожи на процедуры. Существует лишь одно принципиальное отличие — при вызове они возвращают значение. Функция получает один или несколько объектов данных, называемых аргументами, и выполняет с ними некоторые действия. Их результат возвращается функцией. Возможно, это звучит несколько туманно, но на самом деле в функциях нет ничего сложного. Лучше всего рассмотреть работу функций на конкретном примере. Давайте напишем функцию для вычисления кубического корня:
1. Создайте новый проект командой File > New Project.
2. Если модуль My Libгагу отсутствует в проекте, добавьте его — для этого следует щелкнуть правой кнопкой мыши в окне проекта и выполнить команду Add > Module из контекстного меню.
3. Когда появится диалоговое окно Add Module, перейдите на вкладку Existing. Затем найдите файл MyLibrary.Bas и нажмите кнопку Open, чтобы включить модуль в проект.
4. Дважды щелкните на файле MyLibrary.Bas в окне проекта. Открывается окно программы. Вставьте следующий фрагмент в секцию (General)(Declarations):
Public Function CubeRoot
Visual Basic автоматически создает шаблон следующего вида:
Public Function CubeRoot()
End Function
5. Вставьте в шаблон следующий фрагмент (рис. 4.2):
Public Function CubeRoot(x as Double) As Double
If x = 0 Then
CubeRoot = 0
Exit Function
End If
CubeRoot = 10 ^ ((Log(Abs(x)) / Log(10)) / 3)
If x < 0 Then
CubeRoot = -CubeRoot
End If
End Function
Рис. 4.2. Окно программы с функцией для вычисления кубического корня
6. Выполните команду File > Save MyLibrary.
Перед тем как рассматривать данный пример, давайте кратко рассмотрим приведенный выше код. Функция получает аргумент х и пытается вычислить его кубический корень. Тип значения, возвращаемого функцией (в нашем примере Double -числовой тип, который может работать с очень большими и очень малыми, а также дробными числами), указывается в заголовке функции после ключевого слова As. Текст функции заканчивается командой End Function, а не End Sub. Обратите внимание на три строки, в которых присваивается значение переменной CubeRoot. Значение функции возвращается в виде переменной, имя которой совпадает с именем функции (в нашем примере — CubeRoot). Если бы наша функция называлась TimesTwo(), то и значение возвращалось бы в переменной TimesTwo (например, TimesTwo = х*2).
Перед тем как приступать к обработке аргумента, желательно проверить полученные данные. Сначала мы проверяем, равен ли аргумент 0 — как известно, кубический корень из 0 равен 0, поэтому мы можем сразу присвоить переменной CubeRoot возвращаемое значение и выйти из функции, не выполняя дальнейших вычислений. Для выхода из функции применяется команда Exit Function.
Математическое обоснование нас сейчас не интересует. Поверьте мне на слово,
команда CubeRoot = 10 ^ ((Log(Abs(x)) / Log(10)) / 3) возвращает кубический корень аргумента х.
Наконец, мы проверяем, не является ли аргумент функции отрицательным числом. Приведенная выше формула всегда возвращает положительный результат, поэтому для отрицательного аргумента необходимо изменить знак возвращаемого значения на противоположный. В Visual Basic это делается командой
CubeRoot = - CubeRoot
ПОДСКАЗКА Команда Exit Function завершает функцию без выполнения дальнейших вычислений. Все дальнейшие команды при этом игнорируются.
Получив общее представление о функциях, давайте продолжим наш пример и используем нашу функцию на практике.
7. Дважды щелкните на форме Form1 в окне проекта — форма появляется в окне конструктора.
8. Задайте свойству Caption значение Работа с программной библиотекой.
9. Создайте на форме кнопку. Задайте ее свойству Name значение cmdCubeRoot, а свойству Caption — значение Кубический корень.
10. Дважды щелкните на кнопке cmdCubeRoot — открывается окно программы с процедурой события cmdCubeRoot_Click().
11. Вставьте в процедуру следующий фрагмент:
Dim Y As Double
Y = CubeRoot(27)
Print Y
Примерный вид окна программы показан на рис. 4.3.
Рис. 4.3. Код вызова функции CubeRoot
12. Запустите приложение и нажмите кнопку. Примерный вид формы показан на рис. 4.4. В нашем примере возвращаемое значение печатается прямо на форме.
Рис. 4.4. Функция возвращает кубический корень 3
Обычно возвращаемое значение отображается в одном из элементов формы, например в текстовом поле (рис. 4.5). Это делается так:
Рис. 4.5. Измененное окно программы и форма
13. Остановите программу, нажав кнопку [х] в правом верхнем углу формы. Вы снова окажетесь в режиме конструктора.
14. Дважды щелкните на форме Form1 в окне проекта.
15. Создайте на форме текстовое поле, задайте его свойству Name значение txtText1. Удалите текущее содержимое свойства Text.
16. Удалите из процедуры события Click() кнопки cmdCubeRoot последнюю строку (Print Y) и замените ее следующей:
txtText1.Text = Y
Результат показан на рис. 4.6.
Кроме того, можно удалить все содержимое процедуры и ограничиться всего одной строкой:
txtText1.Text = CubeRoot(27)
В этом случае возвращаемое значение присваивается элементу без использования промежуточной переменной.
Рис. 4.6. Новый вариант приложения
ПРИМЕЧАНИЕ Параметры функций должны заключаться в скобки.
Дата добавления: 2015-07-20; просмотров: 77 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Процедуры | | | Обновление программной библиотеки |