ТЕМА 5. ИЗГРАЖДАНЕ НА VISUAL BASIC - ПРОГРАМА
С помощта на програмните пакети Excel, Access и Word решаването на различни проблеми от практиката протича по правило интерактивно. Всяка от тези програми съдържа и език за програмиране, чрез който могат да се решат проблеми, за които функционалните средства на продуктите не са достатъчни. Обикновено се търси комбинирано решаване на проблемите, като езикът за програмиране се ползва за по-специализирани решения.
VBA (Visual Basic for Applications) е език за програмиране на приложните програми на MS Office - Excel, Access, Word и PowerPoint. C помощта на това средство се разширяват функционалните възможности на стандартните пакети.
ВЪВЕДЕНИЕ- програмата представлява последователност от команди (оператори), които са разбираеми за компютъра (по-точно за компилатора), чрез които той изпълнява определени задачи.
При създаването на компютърни програми се ползват три елементарни структури, а именно:
» Последователна - отделните оператори се изпълняват последователно един след друг;
Пример: Въвеждане на единична цена
Изчисляване на евентуални разходи и загуби (надбавка)
Сумиране на единична цена и надбавка
Изчисляване на печалба
Формиране на продажна цена
Отпечатване на продажна цена
» Селективна (чрез избор) - операторите се изпълняват при изпълнение на дадено условие;
» Итерационна (циклична) - операторите се изпълняват отново;
ИЗГРАЖДАНЕ НА VISUAL BASIC-ПРОГРАМА- VBA принадлежи към процедурните езици за програмиране, като същевременно е и обектноори-ентиран. Характерното за тези езици е, че програмният код, т.е. операторите, се въвеждат в малки, делни части на програмата, наречени процедури. Оттук следва, че програмата на VBA се състои от една или повече процедури.
Процедурите (подпрограми) имат следния синтаксис:
Sub Име_на_процедура()
Оператори
End Sub
Процедурата винаги започва с ключовата дума Sub и завършва с End Sub. Между тези два оператора се намира тялото на процедурата, т.е. това са оператори, които се изпълняват след стартиране на процедурата.
Има три вида процедури:
а) Синтаксис на Sub - процедури
[Public | Private] SubИме_на_процедура()
Оператори
End Sub
Sub - процедурите се използват, когато трябва да се изпълнява последователност от оператори. Извикването им в повечето случаи не е свързано с настъпването на някакво събитие.
б) Синтаксис на процедури - функции
[Public | Private] Function Име_на_процедуpa (Аргументи) As Тур
Оператори
End Function
Аргументите са стойности, които се предават на функцията за обработка. В частта As Тур се определя типът данни (напр. цяло или дробно число) за резултата от работата на функцията. Функцията винаги връща на извикващата програма резултат в променлива. Името на тази променлива съответства на името на процедурата.
Процедурите-функции са дефинирани от потребителя функции. Те могат да бъдат приравнени към стандартните функции от продуктите на MS Office, напр. Sum () , Max () , Min () , Date () . Процедурите-функции се използват, когато трябва да се направи определено пресмятане, т.е. вместо отново да се изписва последователността от оператори, тя вече е въведена в дадена функция и при необходимост се извиква.
в) Събитийни процедури
Събитийните процедури (Event-процедури) съдържат оператори, които се изпълняват при настъпването на дадено събитие. Събитията обикновено са свързани с контролни елементи (командни бутони, текстови полета) от формуляр. Като събития се определят действия като кликване с мишката, натискане на клавиш от клавиатурата и др.
Синтаксис:
[Private] Sub Име-контролен-елемент_Име-събитие
Оператори
End Sub
Пример:
Private Sub CommandButtonl_Click
MsgBoxf("Hallo")
End Sub
Обяснение: След кликване c мишката върху команден бутон CommandButtonl ще се изпълнят операторите от процедурата, в случая на екрана в кутия за съобщения ще се изпише Hallo. Ключовите думи Public и Private определят областта на приложение (валидност) на процедурите. Ако не е определен типът на процедурата, по подразбиране тя се приема като Public.
ТЕМА 6. ЕЛЕМЕНТИ НА ЕЗИКА ЗА ПРОГРАМИРАНЕ
В електронно-изчислителната техника се използват два основни типа данни: числови данни (числа) и буквено-цифрови данни (знаци, символни низове). Тези два типа данни могат да се използват в програмата като променливи и константи.
Променливи - Работната памет на компютъра се състои образно казано от еднакво големи номерирани клетки, които са лесно достъпни по техния номер (адрес). В една клетка може да бъде записан 1 байт информация. Следващата дефиниция изразява най-съществените характеристики на променливите:
Променливите са клетки от паметта,
» обръщението към които се осъществява по име;
» чиято стойност (съдържание) може да бъде задавана или променяна по време на изпълнението на програмата;
» на които е присвоен определен тип данни (напр. Integer, Single, String). От този тип зависи какъв вид данни могат да се съхраняват в тях.
Имената на променливите са подчинени на следните правила:
» Имената могат да се състоят от букви, цифри и долна черта(_). Всички останали знаци са неприемливи;
» Първият символ на името трябва да бъде буква;
» Максималната дължина на името е 255 символа;
» Не се прави разлика между малки и главни букви. Имената NUM и Num са идентични;
» Служебните (резервирани) думи като напр. Sub,MsgBox, End не могат да бъдат имена на променливи;
» Желателно е да се избират говорящи и смислени имена.
Прим&р: Променлива за съхраняване на оборот не трябва да има име х, а напр. Oborot или obrt.
За какво се използват променливите? По време на изпълнение на програмите въведените данни, както и получените междинни резултати (суми, изчислени части като процент от цяло и др.) трябва да бъдат съхранени за по-нататъшна обработка или за отпечатване, било то на екран, принтер или файл. За тези цели се използват променливи.
Пример: От клавиатурата се въвеждат три числа. За да може те да бъдат използвани в програмата или отпечатани, трябва да се съхранят в променливи.
В следващия пример нагледно са представени променливи и числата, съхранени в тях:
-
На променливите с имена Numl, Num2, Num3 съответно са присвоени стойностите 34,56 и 124
ТЕМА 7.ТИПОВЕ ПРОМЕНЛИВИ
Програмистът на Visual Basic разполага със следните типове променливи:
Тип
|
Знак за този тип
|
Място в паметта
|
Описание
|
Минимална и максимална стойност
|
Byte
|
Няма
|
1 Byte
|
Цяло число
|
0-255
|
Integer
|
%
|
2 Byte
|
Цяло число
|
-32768 до+32767
|
Long
|
&
|
4 Byte
|
Цяло число
|
-2 147 483 648 до + 2 147 483 647
|
Single
|
!
|
4 Byte
|
Дробно число
|
-3.402823Е+38 до -1,401298Е-45 (отрицателни числа) +1.401298Е-45 до 3.402823Е+38 (положителни числа)
|
Double
|
#
|
8 Byte
|
Дробно число
|
-1,79769313486232Е+308 до -4,94065645841247Е-324 (отрицателни числа) +4,94065645841247Е-324 до +1,79769313486232Е+308 (положителни числа)
|
Currency
|
@
|
8 Byte
|
Дробно число
|
-922337203685477,5808 до +922337203685477,5808
|
String
|
$
|
1 Byte
|
Низ от знаци
|
|
Date
|
Няма
|
8 Byte
|
Дата
|
01.01.100r. до 31.12.9999г.
|
Obj ect
|
Няма
|
4 Byte
|
Препратка към обект
|
|
Variant
|
Няма
|
|
Дата/време, число, символ
|
/8.45; 20.45
|
На фона на различните типове прсг/екпиви трябва да се мисли и за въвеждане, съхраняване и обработка на какви данни става дума - цели числа, дробни числа, символни низове или от тип дата/време.
За съхраняване на цели числа Visual Basic предоставя типовете Byte, integer и Long. В компютъра те са представени като 8-, 16- и 32-битови двоични числа и заемат в паметта съответно 1, 2 или 4 байта.
При обработка на дробни числа в програма, трябва да се изберат типове променливи като Single, Double ИЛИ Currency. За числа С максимум 6 цифри е достатъчен ТИП Single (обикновена точност). За точната обработка на числа с повече позиции трябва да се ползва тип Double (двойна точност) или Currency. При използване на тип Currency, числата могат да имат максимум 15 знака в цялата част на числото и максимум 4 знака след десетичната точка. Бързата обработка и голямата точност правят този тип данни много удобен за работа с парични стойности.
ПРИМЕР:
Въведено число
|
Съхраняване
|
Обикновена точност
|
Двойна точност
|
Num! = 451,25
|
451,25
|
|
Num! = 1,2345678
|
1,2345678
|
|
Num! = 0,00123456789
|
1.2345678E-03
|
|
Num# = 0,00123456789
|
|
0,00123456789
|
Num# = 12345678900512
|
|
12345678900512
|
Num#= 12345678900512351234
|
|
1,234567890051235Е+19
|
Решението за използване на един или друг тип променлива зависи от големината на числото, което променливата трябва да приеме. За числа между 1 и 100 е достатъчен тип Byte. За дробни числа с 9 знака (напр. балансови суми) трябва да се избере тип Double с двойна точност.
Трябва да се обърне внимание и на различната скорост за обработка на различните типове. Най-бързо се обработват числата от тип Byte. Най-бавно се работи с изрази, съдържащи 8-байтови променливи.
Забележка: Обемът на заетата памет зависи от типа на променливите, а не от големината на съхранените числа. Съхраненото число 1 в променлива от тип Long заема 4 байта, въпреки че е достатъчен един байт и променлива от тип Byte.
Наред с числовите променливи могат да се използват и текстови или променливи от тип string, когато трябва да се въвеждат знаци или текст. Променливите от този тип могат да поемат до 65 000 знака (букви, цифри, специални символи). Всеки знак заема 1 байт от паметта и се съхранява в ANSI-код.
За данни от тип дата/време се избира тип променлива Date. Малко по-особена е променливата от тип Variant. Чрез определянето на тип за променливите се знае какви стойности се съхраняват в тях. Ако за дадена променлива не се зададе тип, то по подразбиране за нея се определя тип variant.
Характерното за променливите от тип Variant, че в тях могат да се съхраняват различни видове данни, като числа, символни низове, данни от тип дата/време. Променливите от този тип се определят едва след като в тях се запишат съответните данни. Необходимият обем памет за този тип променливи също няма фиксирана дължина и зависи от данните.
Ако в променлива от тип variant се съхраняват числа, Visual Basic употребява най-подходящия тип и възможния минимум памет. Това означава, че малки числа без дробна част ще се запишат в променлива от тип Byte. Ако на същата променлива по-късно в хода на програмата се присвои по-голяма стойност, Visual Basic ще смени типа на променливата от Byte на integer или Long. Ако зададената стойност е много голяма, или се появи и дробна част, тогава ще бъде избран Double - формат.
Пример:
Въведена/ Присвоена стойност
|
Действие
|
Стойност = 20
|
Променливата от тип Variant съдържа числовата стойност 20; съхранява се в Byte - формат.
|
Стойност = "U" & Стойност
|
Чрез знака & към стойността се присъединява (конка-тенира) буквата U. Новото съдържание е U20, т.е. това е дълъг символен низ.
|
Стойност = "ДДС"
|
В променливата се записва символният низ ДДС.
|
Стойност = 10520630,55
|
Символният низ е заменен от дробно число; то ще бъде съхранено в Double-формат.
|
Променливите от тип variant изглеждат практични за употреба. Програмистът не трябва сам да избира тип за променливите, типът се определя автоматично в зависимост от данните. Тази концепция има един много основен недостатък. При разчитане на програмния код програмистът никога не знае с точност от кой тип е дадена променлива и каква стойност съдържа, което я прави непрегледна. При обработката на данните и извършването на операции с тях, използването на променливи от тип variant може да доведе до трудно откриваеми грешки.
От гледна точка на прегледността и отбягване на ненужни грешки в този учебник се дава предимство на предварителното точно и прецизно определяне типа на променливите.
ТЕМА 8. ДЕКЛАРИРАНЕ НА ПРОМЕНЛИВИ
При деклариране на променливите се задава тяхното име и тип. Напр. променливата се нарича Ime и има ТИП String.
След стартиране на готовата програма, операционната система резервира памет за променливите според декларирания за тях тип. С декларациите се определя и видът на данните, които се съдържат в тях. Напр. според декларирането променливата Ime може да съдържа символен низ, но не и число.
Чрез командата Option Explicit се определя и областта на действие (валидност) на използваните променливи в процедурата. Използването на тази команда означава, че Visual Basic ще изисква деклариране на всички използвани променливи и издава съобщения за грешка при недекларирани променливи. След изчистването на този пропуск изпълнението на програмата може да продължи.
Oператорът Option Explicit помага за бързо откриване на недекларирани или грешно записани променливи и затова е препоръчително да се използва във всички програми. За автоматичното включване на оператора в областта за декларации на всички нови формуляри и модули е необходимо да се проведат следните действия:
» Превключване към Visual Basic-Editor;
» Активиране на Tools/Options...;
» Избор на регистър Editor,
» Активиране на контролната кутийка Require Variable Declaration;
» Кликване на ОК
Забележка: Направената настройка не се отразява на другите налични програми.
» За деклариране се използва командата:
Dim Име_променлива [As тур]
» Ако не се зададе [As Тур], променливата се приема от тип Variant.
Примери:
-
Команда
|
Действие
|
Dim Ime As String
|
Променливите Ime, Vnoska, 1, Zena ще бъдат определени като String-, Currency-,Integer-,Single-променливи.
|
Dim Vnoska As Currency
|
Dim 1 As Integer
|
Dim-Zena As Single
|
В една команда могат да се направят повече декларации
-
Dim Num1,Num2 As Integer
|
Num1, Num2 са декларирани като променливи от тип Integer.
|
Dim Rez As Double, BroJAs Integer
|
Rez е декларирана като Double - променлива, a Broj като променлива от тип integer.
|
При деклариране на променливи от тип string трябва да се обърне внимание на следното. По подразбиране текстовите променливи имат различна дължина, т.е. дължината им и съответно резервираната за тях памет зависи от въведените или присвоени данни.
Примери:
DimFamiliaAs String
а) Familia = "Антова"
б) Familia = "Каранджулова"
В случай а) променливата заема 6 байта, а в случай б) 12 байта.
Друга алтернатива е декларирането на променливи с постоянна дължина. В този случай се използва следния синтаксис:
Команда: Dim Име_променлива As String*Length
Пример: Променливата Frame е декларирана с постоянна дължина от 30 знака (байта). Ако символният низ съдържа по-малко знаци, дължината му се допълва с интервали до 30, ако съдържа повече от 30 знака те се отрязват и се съхраняват установените 30.
Dim Frame As String"30
Служебните думи As Тур могат да се заменят със специалния знак за съответния тип:
Dim lme$
Dim Vnoska®
Dim l%
Dim Zena!
ТЕМА 9. ПРИСВОЯВАНЕ НА СТОЙНОСТИ
Много често след извършване на изчисления в дадена програма резултатът се присвоява на променлива по следния начин:
[ Let ] Променлива = Израз
Изразът може да бъде константа, променлива или комбинация от двете.
Аритметичният израз съдържа операнди ; това са числови константи или променливи, свързани чрез математическите оператори +; -; *; /; л. Чрез скоби се определя последователността за извършване на действията.
Операторът за присвояване [=] означава, че стойността отдясно на оператора ще се присвои на променливата отляво. Старата стойност на променливата се губи.
Работа с променливи:
Пример1:
Ключовата дума Let не е задължителна и затова е оградена в квадратни скоби.
Присвояване
|
Действие
|
Num1 = 15 (1)
|
Променливата Num1 получава значение 15.
|
Num2 = 36 (2)
|
Променливата Num2 получава значение 36.
|
Num1 = Num2 (3)
|
На променливата Num1 се присвоява стойността на променливата Num2.
|
Sum = Num1 + Num2
|
На променливата Sum се присвоява резултатът от събиране на стойностите в Num1 и Num2.
|
Msg = "Имате грешка"
|
Променливата Msg ще съдържа константата "Имате грешка".
|
Rez = (Sum1 -Sum2)/12*3
|
На променливата Rez се присвоява резултатът от изчислението на аритметичния израз.
|
Suma = Suma + Num
|
Значението на променливата Num се прибавя към старото значение на Suma. Променливата Suma вече има ново значение.
|
Broj - Broj + 1
|
Стойността в променливата Broj се увеличава с 1.
|
Пример2:
1. Да се пресметне сумата на две числа и резултатът да се покаже на екрана в MsgBox. Решение:
Public Sub PromenliwM
Dim Num1, Num2, Rez As Integer Num1 = 77 Num2 = 101 Rez = Num1 + Num2
MsgBox ("Сумата на числата e:"+ Str(Rez))
End Sub
Забележка: Функцията str () превръща числова стойност в символен низ!
Сподели с приятели: |