Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Структурные особенности Visual Basic. Подпрограммы. Пример




Educational publication

       
 
Work programme and guidelines for practical training of the discipline «PRINCIPLES OF PERSONAL AND SOCIAL SAFETY»
 
   
Compiler – Lavruk Tetyana Mykolaivna Translated into English by: Deykun O.P. 1st English group Saiko M.A. 1st German group Knysh S.M. 1st English group Okhrimchuk I.V. 1st German group

Приложение VB(проект)- это совокупность экранных форм, исходных(отдельных) модулей, модулей классов и других элементов, с помощью которых решается некоторая задача. Если проект сравнительно прост, то его программный код можно полностью поместить в модуле формы. Но при увеличении сложности проекта код удобнее составлять не одним большим куском, а частями. Эти части называются модулями. Каждый модуль будет храниться в отдельном файле, что удобно при редактировании их кода. Количество программного кода которое может содержаться в модуле ограничено 65,5 тыс строками. Каждый исходный модуль можно добавить в проект командой Project\Add Module.все описания в исходном модуле должны быть с видимостью Public(то есть глобальными). Модуль можно использовать в нескольких формах или даже нескольких проектах. Представление программного кода приложения в виде отдельных компактных модулей–это одно из проявлений модульного принципа программирования (МПП). Другим проявлением МПП является разбиение программного кода уже внутри модуля на отдельные части–подпрограммы: процедуры-события и подпрограммы общего назначения (ПОН) –общие процедуры и функции, не связанные с конкретными событиями объектов и которые разработчик создает по своему усмотрению. Один модуль формы может содержать несколько процедур –событий и подпрограмм общего назначения. ПОН могут размещаться в любых модулях, при этом они выполняют самостоятельные действия и предназначены для многократного использования. Общая структура программного кода модуля формы VB может быть представлена следующей схемой.[<Раздел контейнерных (уровня модуля) описаний>] [<Начало n-й процедуры-события> <Раздел локальных описаний> <Раздел операторов > <Конец n-й процедуры - события>] [<Начало k-й ПОН><Раздел локальных описаний> <Раздел операторов><Конец k-й ПОН>],

В модуле формы общих процедур и функций может и не быть, а в исходном модуле, наоборот, процедур-событий не должно быть. Приведенная структура не является строго обязательной. Так, разделы описаний могут вообще отсутствовать или располагаться внутри блоков операторов, а процедуры-события и ПОН могут размещаться в программном коде в любом порядке. Процедура-событие вызывается в ответ на какое то событие объекта (щелчок мыши по кнопке или изменение значения поля, перемещение мыши, нажатие символа на клавиатуре). Она после запуска программы (загрузки формы) постоянно находится в состоянии ожидания события. Общими процедуры и функции называются потому, что могут быть вызваны явно из любой подпрограммы другого контейнера, если только они небыли объявлены как Private. После выполнения такой подпрограммы происходит автоматический возврат в то место программы, откуда подпрограмма была вызвана. Процедура и функция имеет имя и возможный список формальных параметров (СФормП). Синтаксис описания процедур и функций следующий

[Private |Public][Static] Sub<имя процедуры> [(<СФормП>)]

<Раздел локальных описаний><Раздел операторов>

End Sub

[Private|Public][Static] Function<имя функции>

[(<СФормП>)] [As<Тип>]

<Раздел локальных описаний><Раздел операторов>

End Function

Private или Public –это области видимости. Если область явно не указана, то по умолчанию подпрограмма будет отнесена к классу Public. Наличие в заголовке описания подпрограммы слова Static позволит сохранить значения всех локальных переменных между последовательными вызовами этой подпрограммы. При отсутствии этого слова все значения локальных переменных обнуляются перед обращением к подпрограмме. Процедуры и функции могут иметь формальные параметры, которые могут быть входными и выходными. Входной параметр–это переменная, значение которой должно быть установлено до начала работы подпрограммы и которая участвует в работе подпрограммы. Выходной параметр–это переменная, которая получает свое значение в результате работы подпрограммы. Входные и выходные параметры в списке формальных параметров записываются через запятую с обязательным указанием типа параметра. Разделение на входные и выходные формальные параметры происходит в заголовке подпрограмм с помощью ключевых слов byVal и byRef (поумолчанию). В списке формальных параметров можно определить необязательный параметр, если сопроводить его ключевым словом Optional. Общая процедура вызывается как отдельный оператор со списком фактических параметров СФактП, а функция может вызываться либо из выражения (при этом она возвращает результат работы в имени функции), либо как отдельный оператор, то есть как общая процедура, тогда результат возвращается через выходные параметры. Список фактических параметров–это входные параметры для подпрограммы, которые могут быть переменными, константами, динамическими массивами и выражениями. В списке фактических параметров для необязательного параметра может отсутствовать значение.

Синтаксис оператора вызова подпрограммы:

CallИмя_подпрограммы[(<СФактП>)]

Или бесскобочная форма записи оператора вызова подпрограммы: Имя_подпрограммы[<СФактП>]

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

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

Dim A As Double,B As Double,C As Double, As Double

Private Sub Ромб(ByVal R As Double,ByVal A As Double,Z As Double)

If sin(A)<=0 then

MsgBox "задайте другой угол"

Else

Z=2*R/sin(A)

End if

end Sub

Private Function Parall(ByVal A As Double,ByVal B As Double,ByVal Angle As Double,Z As Double)

If sin(Angle)<=0 then

MsgBox "задайте другой угол", vbCritical, "Ошибка"

Else

Z=A*B*sin(Angle)

End if

End Function

Private Function Triangle(ByVal A As Double,ByVal B As Double,ByVal C As Double)As Double

P#=(A+C+B)/2

P=P*(P-A)*(P-B)*(P-C)

IF P<0 then

MsgBox "неврно заданы параметры",_vbCritical, "Ошибка"

Else

Triangle=Sqr(P)

End if

end Function

Private Sub Form_Load()

A=10^ B=3.1415926/4^ C=7

call Ромб(A,B,Romb#)

MsgBox "сторона ромба=" & Romb,,_"подпрограммы"

Z=triangle(A,Round(B*10),C)

MsgBox "площадь треугольника=" & Z,,_"подпрограммы"

Parall A,C,B,Z

MsgBox "ПлощадьПарал-ма=" & Z,,_"подпрограммы"

End Sub

 





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


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


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



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




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