Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб8_VisualBasic.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1 Mб
Скачать

Приднестровский государственный университет им. Т.Г. Шевченко

Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 8

Тема: «Разработка приложений с использованием процедур и функций пользователя»

Цель работы:

изучение особенностей использования процедур общего назначения и функций;

закрепление темы при создании приложений.

1. Программные модули. Процедуры и функции

1.1. Программные модули

Программы Visual Basic хранятся в программных модулях, которые бывают трех видов: модуль формы, стандартный модуль и модуль класса.

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

Модули формы могут содержать объявления переменных, констант, типов данных, внешних процедур, используемых на уровне модуля, процедур обработки событий. Они хранятся в файлах, имеющих расширение frm. В модуле можно также ссылаться на другие формы и объекты данного приложения.

Стандартные модули могут содержать объявления глобальных и локальных переменных, констант, типов, внешних процедур и процедур общего характера, доступных для других модулей данного приложения. Они хранятся в файлах с расширением bas.

Используя объектно-ориентированное программирование, в Visual Basic можно создавать новые объекты с разработанными для них свойствами и методами, помещая их в модули классов, хранящихся в файлах с расширением els.

1.2. Процедуры

В Visual Basic, как и во многих других языках программирования, большинство программ создается из блоков – процедур и функций. Весь программный код находится как бы внутри этих процедур. Если возникает необходимость в решении какой-либо задачи в любом месте программы, то вызывается процедура. В Visual Basic нельзя ввести код между процедурами. Код всегда должен находиться внутри процедуры.

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

Каждая процедура начинается зарезервированным словом Sub и заканчивается End Sub. Зарезервированное слово Sub происходит от слова subroutine (подпрограмма), которое является синонимом термина процедура.

Общий синтаксис процедуры:

[Private | Public | Friend] [Static] Sub Имя [(Список_аргументов)]

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

[Exit Sub]

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

End Sub

Всё, что заключено в квадратные скобки, является необязательным.

  • Public – указывает, что процедура доступна для всех других процедур во всех модулях.

  • Private – указывает, что процедура доступна для других процедур только того модуля, в котором она описана.

  • Friend – используется только в модулях классов. Позволяет вызывать процедуру из другого модуля проекта.

  • Static – указывает, что локальные переменные процедуры сохраняются в промежутках времени между вызовами этой процедуры. Не действует на переменные, описанные вне процедуры.

  • Имя – имя процедуры, удовлетворяющее стандартным правилам именования переменных.

  • Список_аргументов – список переменных, разделенных запятой, представляющий аргументы, которые передаются в процедуру при ее вызове.

  • Инструкции – любая группа инструкций, выполняемых в процедуре.

  • Exit Sub – инструкция, позволяющая досрочно выйти из процедуры. Иногда это очень удобно.

Список_аргументов имеет следующий синтаксис:

[ByVal | ByRef] Имя[( )] [As Тип]

  • ByVal – указывает, что этот аргумент передается по значению.

  • ByRef – указывает, что этот аргумент передается по ссылке (по умолчанию).

  • Имя – имя переменной, представляющее передаваемый в процедуру аргумент; должно соответствовать стандартным правилам именования переменных. ( ) – требуются, если Имя является массивом.

  • Тип – тип данных аргумента, передаваемого в процедуру; допускаются типы Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (только строки переменной длины), Object, Variant, определяемый пользователем тип.

Вызов процедуры из другой процедуры можно выполнить одним из следующих способов:

  • использование имени процедуры:

Имя_процедуры

  • использование вызова Call:

Call Имя_процедуры

Например,

Proc

или

Call Proc ' более наглядный вариант

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

Proc 44, 56 ' два числа – это передаваемые аргументы

или

Call Proc(44, 56)

Процедуры, как и переменные, бывают разного типа, т.к. служат для разных целей. Различают процедуры обработки событий и общего назначения, закрытые и общие. Разберем виды процедур подробнее.

Процедуры обработки событий предназначены для обработки событий, связанных с элементами управления. Такие процедуры легко отличить по виду, т.к. её название состоит из имени элемента управления и названия события, которое происходит с этим элементом, а имена эти соединены знаком «_» (подчеркивание). Иногда в процедуру передают параметры – переменные, необходимые для нормальной работы процедуры обработки события.

Замечание. При работе с процедурами обработки событий есть несколько нюансов. Первый: «сделать» процедуру можно как с формы (кликнуть на командной кнопке два раза – создастся процедура обработки ее нажатия), так и в программе (достаточно выбрать в разделе Object (объект) нужный объект, а в разделе Procedure (процедура) нужное событие). Второй: при удалении процедуры из кода элемент управления остается, при удалении элемента управления процедура, ранее описанная для него, также остается. Третий: если удалить элемент управления, для которого ранее были написаны процедуры, а затем поместить на форму такой же (по имени), то «старые» процедуры будут работать с ним, т.к. «новый» элемент будет иметь такое же имя, как и старый.

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

Пример.

Private Sub test(x As Integer, y As Integer)

If x > y Then Print x Else Print y

End Sub

Private Sub Command1_Click()

Call test(2, 3)

End Sub

В данном примере описана процедура общего назначения по имени test, она имеет параметры – целые переменные x, y и ее работа заключается в выводе на форму наибольшего из двух переданных ей чисел. Процедура обработки события «клик» командной кнопки Command1 вызывает процедуру test и передает ей два числа (аргумента) – 2 и 3. После нажатия на командной кнопке на форму будет выведено число 3.

Пример. Ввести значения трех переменных при помощи процедуры Vvod и вывести значения введенных переменных на форму.

Private Sub Vvod(x As Single) ' процедура ввода значений переменных

' x – формальный параметр

x = InputBox("Введите значение переменной:", "Окно ввода")

End Sub

Private Sub Command1_Click()

Dim a As Single, b As Single, c As Single

Call Vvod(a) ' обращение к процедуре Vvod, a – фактический параметр

Call Vvod(b) ' обращение к процедуре Vvod, b – фактический параметр

Call Vvod(c) ' обращение к процедуре Vvod, c – фактический параметр

' вывод введенных значений переменных на форму

Print "Вы ввели три переменных: "; a; b; c

End Sub

Пример. Составить код, в результате которого величина A меняется значением с величиной B, а величина C – с величиной D. (Определить процедуру, осуществляющую обмен значениями двух переменных величин).

Private Sub Obmen(x As Single, y As Single)

Dim t As Single

t = x

x = y

y = t

End Sub

Private Sub Command1_Click()

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

A = InputBox("Введите A=")

B = InputBox("Введите B=")

C = InputBox("Введите C=")

D = InputBox("Введите D=")

Obmen A, B

Obmen C, D

Print "A="; A, "B="; B

Print "C="; C, "D="; D

End Sub

Замечание.

  1. Не допускается определение процедуры внутри тела другой процедуры или функции.

  2. Инструкция Exit Sub приводит к немедленному выходу из процедуры. Выполнение программы продолжается с инструкции, следующей за инструкцией, в которой была вызвана процедура. В теле процедуры допустимо наличие любого числа инструкций Exit Sub.

Закрытые процедуры можно вызвать только внутри формы; используется ключевое слово Private. Процедуры обработки событий являются закрытыми процедурами. Процедуры являются общими (открытыми), если они могут быть вызваны процедурами другой формы/модуля; используется ключевое слово Public. Общая процедура должна содержаться в стандартном модуле или модуле класса.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]