Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Кузьмины по VB.doc
Скачиваний:
47
Добавлен:
25.05.2014
Размер:
911.36 Кб
Скачать

Процедуры и функции Sub-процедуры

Процедуры – это, как правило, маленькие подпрограммы, которые можно вызывать из других мест программы.

Событийные процедуры

Обработчики событий в VisualBasicреализуются как процедуры. Такие процедуры вVBвсегда привязаны как к совершаемому событию, так и к объекту, над которым это событие совершается. Это отражается в том, что имя процедуры, которое в этом случае формируетVB, складывается из имени объекта и названия события. Фактически весь программный код состоит из некоторого набора таких процедур-событий.

Private Sub Commandl_Click()

Тело процедуры

end Sub

Событийные процедуры вызываются системой при появлении соответствующего события. Если необходимое событие не произойдет, событийная процедура, связанная с этим событием не выполнится ни разу.

Процедуры пользователя

Можно создавать и собственные процедуры не связанные с объектами на форме, если в вашем приложении есть часто повторяющаяся последовательность кодов, - это существенно сократит время набора команды и упростит алгоритм. Для создания собственной процедуры необходимо в общей части кода программы (General/Declaration) ввестиSub, затем задать имя и нажать клавишуEnter. В полученной конструкции набрать свой код программы.

Sub имя()

Тело процедуры

End Sub

Такие процедуры называют еще пользовательскимиилиглавнымипроцедурами.

Вызов процедур

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

Для вызова собственной процедуры, необходимо воспользоваться оператором

Call имя процедуры

или просто записав ее имя, перечислив ее фактические параметры через запятую без скобок.

Примеры.

1) Вычислить сумму гдеf={5;-3;1;2}.

Сначала в разделе Generalсоздается процедура вычисления произведения любого количества любых сомножителей из элементов массива.

Sub proizv(k,z,p)

Dim i as integer

p=1

For i=1 to k

p=p*z(i)

Next

End sub

Здесь k- количество сомножителей,z- имя массива, элементы которого перемножаются,p– параметр, в котором будет храниться значение вычисленного произведения.

Затем в событийной процедуре, например, Command1_Click, создается программный код, в котором используется созданная процедура.

Private Sub Command1_click()

Dim F(4), F1(4), S,p,p1 as single

Dim i as integer

For i=1 to 4

F(i)=val(inputbox(“Введите f”))

F1(i)=sin(f(i))

Next

Proizv 4,f,p1

Proizv 3,f1,p2

S=p1+p2

Print “Сумма произведений равна”; s

End sub

Здесь после ввода в память массивов fиf1дважды вызывается процедураproizv. При этом первый раз в нее передаются фактические значения для формальных параметровkиz, соответственно равны4иf, а результат сохраняется как значение переменнойp1. Во второй раз – значения параметровkиz, соответственно равны3иf1, а результат сохраняется как значение переменнойp2.

  1. Процедура с нулевым списком параметров должна очистить форму и установить размер выводимых на форму символов в 30 пунктов и тип символов курсив.

Процедура

Обращение к процедуре

Обращение к процедуре

Sub a1()

Cls

Font.size=30

Fontitalic=true

End sub

Private Sub Form_Load()

A1

Print “Пример процедуры”

End sub

Private sub form_click()

A1

Print “Привет”

End sub

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