Общи процедури във Visual Basic

Процедурите са малки програми, които изграждат програмата-проект на Visual Basic;
Видове процедури:
Манипулатори за обработка на събития – те се стартират когато се случи събитие с даден обект
Общи процедури – не са обвързани с определен обект от потребителския интерфейс. Те не вършат нищо докато някой МОС или друга процедура на ги накара. Основната им цел е да съхраняват на едно място най-често използваните инструкции (за удобство на програмиста).
2.    Създаване на общи процедури – те могат да се създават и записват в два типа файлове:
Файлове FRM (за съхранение на форми) – може да се използва само в текущата форма или ако в момента е заредена в паметта.


Файлове BAS (за съхранение на модули) – процедурата може да бъде използвана от всички общи процедури или такива за обработка на събития, които изграждат написана на Visual Basic програма.
! Ако съхранявате своите общи процедури във файл тип BAS можете да създадете библиотека от полезни общи процедури, които можете да вмъквате в която и да е програма на Visual Basic, която проектирате.
създаване и записване на обща процедура във файл FRM:
a.    щракваме върху файл за форма в прозорец Project Explorer/F7/избираме View/Code, за да отворим прозореца Code;
b.    от списъчното поле Object избираме General;
c.    посочваме Tools/Add Procedure;
d.     в Диалоговия прозорец Add Procedure избираме радиобутона Sub, въвеждаме име на процедура и натискаме Enter(или OK).
създаване и записване на обща процедура във файл BAS:
e.    избираме Project->Add Module;
f.    в диалоговия прозорец Add Module -> щракваме върху икона Module и посочваме Open;
g.    избираме Tools/Add Procedure;
h.    при избран радиобутон Sub въвеждаме името на процедурата в поле Name и натискаме Enter(или OK)    /Visual Basic извежда на екрана прозорец с празна обща процедура/;
създаване на обща процедура и записването й в съществуващ файл тип BAS:
i.    View/ Project Explorer/ Ctrl+R;
j.    щракваме върху файла с програмни модули, където искаме да запишем общата процедура; след това щракваме върху иконата View Code /Visual Basic извежда на екрана прозорецa Code за конкретния файл тип BAS/;
k.    избираме Tools/Add Procedure;    Visual Basic Basic извежда на екрана диалогов прозорец Add Procedure;
l.    при избран радиобутон Sub въвеждаме име на процедура и Enter(или OK)    /Visual Basic извежда на екрана прозорец с празна обща процедура/;
3.    Задаване имена на общи процедури
Може да се задават произволни имена на общите процедури като се спазват следните ограничения:
дължина на името <= 40 символа;
името трябва да започва с буква и може да съдържа само букви, цифри и долна черта;
името не трябва да е запазена ключова дума във Visual Basic.
Най-добре е имената на общите процедури да описват действията, които те извършват. Например:
Ask4Password                ‘Питай за парола
DisplayWindow                ‘Покажи прозорец
В прозореца Code:
Public Sub Ask4Password ( )

End Sub

Public Sub DisplayWindow ( )

End Sub

Цялото име на процедурата се състои от четири части:
- Public – т.е. публична;
- Sub – подпрограма;
- Име на обща процедура;
- ( ) – използва се за задаване на списъка с аргументи.

4.    Използване на общи процедури – обръщането към общите процедури може да стане по два начина:
1.    Име_на_процедура;
2.    Call Име_на_процедура;
За използване на обща процедура, записана в друг файл за форми (FRM):
Име на форма. Име_на_процедура;
Call Име на форма. Име_на_процедура.
! Нека в прогамите метода за обръщение към процедура да е един и същ – така програмата става по четлива и разбираема.
Като поставим две или повече инструкции в обща процедура, няма да е необходимо да въвеждаме същите тези инструкции отново и отново на много други места в програмата. Вместо това може просто да извикаме една обща процедура.

Аргументи на процедура

Всяка процедура може да извика обща процедура и да й зададе данните, които трябва да се обработят. Тези данни се наричат „аргументи”.
1.    Задаване на аргументи на процедура
Има три метода за извикване на процедура и задаване на аргумент:

  • Име_на_процедура Аргумент;
  • Ипотпал на_продукта
  • Име_на_процедура(Аргумент);
  • Call Име_на_процедура(Аргумент).

Пример:

  • Public Sub Display(Message As String)
  • TxtReadMe.Text=Message
  • End Sub

За да се обърнем към горната процедура и изведем на екрана съобщение: „Предупреждение! Извършено е ядрено разпадане!” можем по три метода:

  • Display „Предупреждение! Ипотпал софтуера може да не се актуализира!”
  • Display („Предупреждение! Ипотпал софтуера може да не се актуализира!”)
  • Call Display („Предупреждение! Ипотпал софтуера може да не се актуализира!”)

Чрез използване на една процедура, но извикана с други аргументи може да се заместят две специализирани общи процедури с една обща процедура.
2.    Приемане на аргументи – преди една обща процедура да може да приема аргументи, трябва да дефинираме списъка й с аргументи.
Public Sub NoBackTalk(Something)
End Sub
За да зададем стойност 4 на променливата Something викаме общата процедура:
NoBackTalk 4
NoBackTalk(4)
Call NoBackTalk(4)
Може да се дефинира списък с аргументи:
Public Sub Chatty (Message, Reply, Gossip)
End Sub
тук имаме списък с три сргумента. Броят им не е ограничен, но при дълъг списък с аргументи процедурата става по-сложна.
3.    Дефиниране на типове аргументи – добра практика е да се дефинира типа на аргумента(по този начин предпазваме процедурата от опити да работи с некоректни данни) . Типовете аргументи може да са следните:
a)    Integer;
b)    Long;
c)    Single;
d)    Double;
e)    Currency;
f)    String;
g)  Ipotpal.
Public Sub Convert (Fahrenheit As Integer, Celsius As Integer)    – тук дефинираме двата аргумента като целочислен тип.
4.    Проблеми с предаването на аргументи
a)    задаване на грешен брой аргументи -  в този случай процедурата няма да работи;
b)    задаване на грешен тип данни за аргументи
Public Sub Argue (Flame As String)
End Sub
Argue 78.909
Argue(9)
Call Argue(34)    Тук аргумените не са от тип String!
c)    задаване на аргументи чрез стойност – за да дефинирате, че един аргумент ще се задава като стойност, в списъка с аргументи използвате ключовата дума ByVal:
Public Sub Argue (ByVal Name As String)
!    Никога не трябва да използвате ключовата дума ByVal за извикване на процедура!
!    За да посочите че един или повече аргументи ще бъдат задавани чрез стойности трябва да поставите ключовата дума ByVal пред всеки един от тях:
Public Sub BlackBox(ByVal X As Integer, Y As Integer) – тук само Х се задава чрез стойност!
Public Sub BlackBox(ByVal X As Integer, ByVal Y As Integer) – тук и двата аргумента се задават чрез стойност!
5.    Преждевременно излизане от процедура.    За преждевременно напускане на процедура, преди тя да завърши нормалното си изпълнение се използва командата:    Exit Sub

Функции
1.    Основни понятия – ипотпал функциите дават като резултат единична стойност.
Public Function Име_на_функция(Списък_с_аргументи) As Тип данни
Име_на_функция = Стойност
End Function
- Public показва на Visual Basic че ипотпал функцията е съхранена във файл BAS(т.е. тя може да се използва от всички събитийни и общи процедури във вашата програма на Visual Basic);
- Function дефинира подпрограмата като функция. Добре е името на функцията да описва действието й;
- Списък_с_аргументи може да съдържа нула или повече аргумента;
- Тип_данни определя какъв тип данни връща функцията (напр. целочислени или низови).
2.    Вградени функции във Visual Basic:
Abs(число) -    връща абсолютната стойност на числото;
Date      -    връща текущата системна дата;
LCase(низ) -    преобразува низ в такъв с малки букви;
Sqr(число)  -    връща квадратен корен на числото.
3.    Създаване на функция – може да се създава и съхранява функция в два типа файлове:
Файлове FRM (за съхранение на форми) – може да се използва само в текущата форма или ако в момента е заредена в паметта.
Файлове BAS (за съхранение на модули) – функцията може да бъде използвана от всички общи процедури или такива за обработка на събития, които изграждат написана на Visual Basic програма.
създаване и записване на обща функция във файл FRM:
m.    щракваме върху файл за форма в прозорец Project Explorer/F7/избираме View/Code, за да отворим прозореца Code;
n.    от списъчното поле Object избираме General;
o.    посочваме Tools/Add Procedure;
p.     в Диалоговия прозорец Add Procedure избираме радиобутона Function, въвеждаме име на функция и натискаме Enter(или OK).
създаване и записване на обща функция във файл BAS:
q.    избираме Project->Add Module;
r.    в диалоговия прозорец Add Module -> щракваме върху икона Module и посочваме Open;
s.    избираме Tools/Add Procedure;
t.    при избран радиобутон Function въвеждаме името на функцията в поле Name и натискаме Enter(или OK);
създаване на функция и записването й в съществуващ файл тип BAS:
u.    View/ Project Explorer/ Ctrl+R;
v.    щракваме върху файла с програмни модули, където искаме да запишем функцията; след това щракваме върху иконата View Code /Visual Basic извежда на екрана прозорецa Code за конкретния файл тип BAS/;
w.    избираме Tools/Add Procedure;    Visual Basic Basic извежда на екрана диалогов прозорец Add Procedure;
x.    при избран радиобутон Function въвеждаме име на функцията и Enter(или OK).

4.    Присвояване стойност на функция – някъде във функцията трябва да присвоите стойност или израз на името на функцията, например:
Public Function YardsToMeters(Yards As Single) As single
Const Conversion = 0.9
YardsToMeters = Yards * Conversion
End Function
! Трите основни разлики между функция и процедура са:
Функцията може да връща само една стойност. Процедурата може да връща нула или повече стойности;
Някъде вътре във функцията, на името на функцията трябва да бъде присвоена стойност. Никога не се налага да правите това в процедура;
Можете да определите типа данни, които представя функцията. Не можете да дефинирате процедурата така, че тя да представя тип данни (но можете да дефинирате типовете данни в списъка с аргументи на процедурата).
5.    Обръщение към функции (то е различно от обръщението към процедура) – присвояваме името на функция на променлива. Пример:
Private Sub cmdConvert_Click( )
Dim Meters As Single
Meters = YardsToMeters(CSng(txtYards.Text))
txtMetric.Text = CStr(Meters)
End Sub
Има само един (а не три като при процедурите) начин за обръщение към функция:
Variable = Име_на_функция(Списък_с_аргументи)
Може да участва и в математически израз:
Variable = Име_на_функция(Списък_с_аргументи) + Variable
6.    Дефиниране на функция като конкретен тип данни. Функцията ви може да представлява някой от следните типове:
a)    Integer;
b)    Long;
c)    Single;
d)    Double;
e)    Currency;
f)    String.
7.    Дефиниране на типове аргументи – същите като в 6.
Public Function Convert(Fahrenheit As Integer, Celsius As Integer)
8.    Проблеми при прехвърляне на аргументи
a)    подаване на грешен брой аргументи;    функцията няма да работи
b)    подаване на грешен тип аргументи;
9.    Преждевременно напускане на функция:
Exit Function

Сходни статии:

  1. Симулационно моделиране. Изграждане на симулационен модел Симулационно моделиране. Етапи на изграждане на симулационен модел.  Моделиране на технологични производствени системи. Материален поток. Симулационният модел представлява абстрактно описание на изследваната производствена система. Различието на симулационният от реалният експеримент е, че процесът на симулация не с реалната система, а...
  2. Системни екрани на MS Access и Windows Системният екран на ACCESS следва идеологията на MS Windows. Той предоставя набор от графични средства изградени на йерархичен принцип, които условно могат да се представят по зони  инсталирани на екрана Диалогови средства на Microsoft Windows В първата лента на екрана,...
  3. Наследяване в обектно ориентираното програмиране Под наследяване се разбира възможността класът наследник да ползва характеристиките (данните и методите) на своите класове-предшественици пряка или непряка връзка на наследяване между класовете (базов клас, роди-тел, суперклас, производен клас, внук, правнук, прародител, прадядо и т.н) Наследяването представлява отношение на...

Responses are currently closed, but you can trackback from your own site.

Comments are closed.

Subscribe to RSS Feed Follow me on Twitter!