Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


За исключением объявления переменных, типов и т.п. в контейнере весь код программы VB состоит из процедур и функций.



В программе на языке VB можно использовать несколько видов процедур и функций. Вот некоторые из них:

событийная процедура - обработчик события. Код этой процедуры выполняется автоматически, если с объектом происходит событие, с которым эта процедура связана;

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

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

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

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

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

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

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

Вызов процедур и функций

Чтобы код функции или процедуры общего назначения был исполнен, она должна быть вызвана.

Вызов процедуры осуществляется вставкой в программу строки, которая начинается с ее имени. Сразу после имени должны следовать разделенные запятой аргументы процедуры, если таковые предусмотрены.

ИмяПроцедуры [Список значений аргументов]

Другой способ вызова процедуры (оставлен для совместимости со старыми версиями VB) заключается в использовании ключевого слова Call, при этом за ним должно следовать имя процедуры и заключенный в скобки список аргументов.

Call ИмяПроцедуры [(Список значений аргументов)]

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

X = A + ИмяФункции ([Список значений аргументов])

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

Объявление процедур и функций

Процедура (функция) не может быть определена внутри какой-либо процедуры или функции.

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

[Private/Public][Static] Sub ИмяПроцедуры _

[(Список аргументов)]

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

[Exit Sub]

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

End Sub

Синтаксис объявления функции выглядит несколько иначе:

[Private/Public][Static] Function ИмяФункции _

[(Список аргументов)] [As Тип]

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

[ИмяФункции = Выражение]

[Exit Function]

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

[ИмяФункции = Выражение]

End Function

Пояснения синтаксиса:

Public. Этим словом объявляют в стандартном модуле процедуру или функцию, которая должна быть доступна всем процедурам и функциям всех контейнеров проекта. В форме это слово применять нельзя.

Private. В этом случае процедура или функция доступна только в пределах того контейнера, где она объявлена. Действует по умолчанию.

Static. Все переменные, объявленные в в процедуре или функции станут статическими, то есть сохранят значения после завершения ее работы и выхода из нее.

Exit Sub или Exit Function. Эти инструкции осуществляют досрочный выход из процедуры или соответственно функции.

Синтаксис аргументов сам по себе является достаточно развитым:

[Optional] [ByVal / ByRef] [ParamArray] _ ИмяАргумента [()] [As Тип][= ЗначениеПоУмолчанию]

ИмяАргумента – это имя переменной, массива, элемента управления или формы (в последних двух случаях тип принимает значения Control и Form). В случае массива после имени массива ставится пара скобок ( ), внутри которых не указываются границы значений индексов, что позволяет использовать одну процедуру (функцию) для разного числа элементов массива в каждом конкретном случае.

Тип может быть Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String (только переменной длины), Variant, пользовательский тип или Control и Form.

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

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

Sub D (Длина As Single, Высота As Single, _

Площадь As Single)

Площадь = Длина * Ширина

End Sub

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

D w1, h1, s1

D w2, h2, s2

s = s1 + s2

Пример объявления функции вычисления площади прямоугольника по заданным значениям сторон:

Function Df (Длина As Single, _

Высота As Single) As Single

Df = Длина * Ширина

End Function

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

s = Df(w1, h1) + Df(w2, h2)

Пример процедуры формирования вектора из сумм элементов столбцов матрицы:

Sub MatrVektor (A() As Single, B() As Single, _


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-08-31; Просмотров: 585; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.013 с.)
Главная | Случайная страница | Обратная связь