Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема6+Область определения переменных и время жи....doc
Скачиваний:
0
Добавлен:
27.04.2019
Размер:
556.03 Кб
Скачать

9

Процедуры и функции.

Любая программа на Visual Basic является процедурой или функцией. Вы уже использовали процедуры обработки событий, в которые вставлялись операторы, выполняющие заданные действия.

Visual Basic позволяет выделить повторяющиеся фрагменты программы и сделать из них функциональные блоки (кирпичики). Эти блоки можно использовать без их повторного написания и отладки, собирая из них требуемую программу. Организовать функциональные блоки в Visual Basic можно в виде процедур (procedure) и функций (function).

Процедура содержит в первой строке ключевое слово Sub и имеет вид

Sub имя процедуры (список аргументов)

операторы

End Sub

Функция содержит в первой строке ключевое слово Function и имеет вид

Function имя функции (список аргументов) As тип

операторы

имя функции = выражение

End Function

Процедуры и функции пользователя помещаются в раздел general кода формы или в отдельный модуль кода (.bas). Для размещения процедуры или функции используется команды меню (щелчок мыши по пункту Главного меню Tools и далее щелчок мыши по элементу раскрывающегося списка Add procedure...). Появляется окно для задания процедуры (переключатель Sub) или функции (переключатель Function) и ее имени (текстовое окно Name). После щелка по кнопке ОК заготовка процедуры появляется в разделе general.

Ключевое слово Public в заголовке процедуры используется, чтобы объявить процедуру общедоступной, т.е. дать возможность вызывать ее из всех других процедур всех модулей любого проекта. Ключевое слово Private используется, чтобы закрыть процедуру от всех модулей, кроме того, в котором она описана. По умолчанию процедура считается общедоступной. Ключевое слово Static означает, что значения локальных (объявленных в теле процедуры) переменных будут сохраняться в промежутках между вызовами процедуры.

Список аргументов определяет данные, которые передаются в процедуру и функцию из другой программы (входные аргументы) или наоборот передаются из нее в другую программу (выходные аргументы).

Пример процедуры:

Sub SubDemo (Rlen As Single, Rwid As Single, Area As Single)

'заголовок процедуры SubDemo с тремя аргументами- Rlen-длина, Rwid-ширина и Area-площадь

Area = RLen * Rwid ' расчет площади

End Sub

Пример функции:

Function FunDemo (RLen As Single, Rwid As Single) As Single 'заголовок функции FunDemo с двумя аргументами- Rlen-длина и Rwid-ширина

FunDemo = RLen * Rwid ' расчет площади и присвоение имени функции вычисленного значения

End Function

Обратите внимание, что в процедуре для вычисления и записи результата используется аргумент Area (выходной аргумент). В функции для записи результата используется имя функции FunDemo.

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

Для использования процедуры и функции нужно в каком-либо месте программы написать обращение. Обращение (запуск) к процедуре или функции производится по-разному:

Обращение к процедуре является отдельным оператором с использованием ключевого слова Call (Вызов).

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

Пример обращения к процедуре:

Private Sub Command1_Click()

Dim A As Single, B As Single, C As Single

A = Val(InputBox("Введите значение длины прямоугольника"))

B = Val(InputBox("Введите значение ширины прямоугольника"))

Call SubDemo (A, B, C)

MsgBox "Площадь прямоугольника равна " & Str(C)

End Sub

Пример обращения к функции:

Private Sub Command2_Click()

Dim A As Single, B As Single, C As Single

A = Val(InputBox("Введите значение длины прямоугольника"))

B = Val(InputBox("Введите значение ширины прямоугольника"))

C = FunDemo (A, B) * 2

MsgBox "Удвоенная площадь прямоугольника равна " & Str(C)

End Sub

Обратите внимание, что при обращении к процедуре и функции записываются значения аргументов (при обращении к процедуре - A, B, C; при обращении к функции - A, B. Им с использованием окна ввода InputBox задаются конкретные значения). Имена аргументов при обращении могут быть любыми (могут не совпадать с именами списка аргументов при записи процедуры или функции).

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

1. Количество значений аргументов при обращении равно количеству аргументов при записи процедуры или функции

(При записи процедуры было 3 аргумента - Rlen, Rwid, Area; при обращении тоже 3 - A, B, C. При записи функции было 2 аргумента - Rlen, Rwid; при обращении тоже 2 - A, B).

2. Соответствие значений аргументов и аргументов определяется их последовательностью в списках (А соответствует Rlen, В - Rwid, С - Area).

3. Тип значений аргументов при обращении к процедуре и функции должен совпадать с типом аргументов при записи процедуры и функции (При записи процедуры аргументы Rlen, Rwid, Area и при записи функции аргументы Rlen, Rwid определены типа Single. Используемые при обращении значения A, B, C также определены как Single).