Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Подпрограммы пользователя




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

Имя подпрограммы и ее параметры записываются в заголовке подпрограммы. Различают формальные параметры – параметры, определенные в заголовке подпрограммы, и фактические параметры – выражения, задающие конкретные значения при обращении к подпрограмме.

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

- отображает полученные результаты в виде диаграмм в графическом окне;

- вычисляет площадь и периметр многоугольника;

- решает задачу по преобразованию векторов;

- изменяет значения свойств объектов.

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

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

 

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

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

2. С помощью команды Tools ®Add Procedure…

Структура пользовательской процедуры:

Sub Имя процедуры ([Список формальных параметров]) Описание локальных переменных Операторы тела процедуры End Sub

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

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

Имя процедуры [Cписок фактических параметров]

 

При вызове процедуры формальные параметры заменяются фактическими в порядке их следования. Количество, типы и порядок следования формальных и фактических параметров должно в точности совпадать!

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

Private Sub A() Cls Font.size=30 FontItalic=true End Sub Private Sub Command1_Click() A Print “Пример процедуры” End Sub

 

Способ передачи аргументов. В VB аргументы могут передаваться двумя способами: либо как ссылки (ByRef), либо как значения (ByVal).

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

Чтобы запретить изменять значение переменных, их передают по значению, т.е. объявляют со словом ByVal. При передаче аргументов по значению вызванная процедура получает копию значения этого аргумента, и изменить его не может. Переменные, объявленные со словом ByVal, обычно – входные параметры. В этом случае ключевое слово ByVal указывается обязательно.

Если некоторый параметр является одновременно входным и выходным, то его нужно передать как ссылку.

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

Function Имя функции ([Список формальных параметров]) AsТип возвращаемого функцией значения Описание локальных переменных Операторы тела процедуры End Function

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

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

Имя функции=Вычисленное значение,

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

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

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

FunctionTangens(x)as double Tangens=sin(x)/cos(x) End Function

можно вызвать s=Tangens(1) или Print Tangens(5*x).




Поделиться с друзьями:


Дата добавления: 2014-12-24; Просмотров: 958; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.