Тема проблемен анализ



страница2/3
Дата06.04.2017
Размер0.53 Mb.
#18622
ТипАнализ
1   2   3
ТЕМА 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.

За какво се използват променливите? По време на изпълнение на програмите въведените данни, както и получените междинни резултати (суми, изчислени части като процент от цяло и др.) трябва да бъ­дат съхранени за по-нататъшна обработка или за отпечатване, било то на екран, принтер или файл. За тези цели се използват променливи.



Пример: От клавиатурата се въвеждат три числа. За да може те да бъдат използвани в програмата или отпе­чатани, трябва да се съхранят в променливи.
В следващия пример нагледно са представени променливи и числата, съхранени в тях:








Num1 34

Num2 56



















Num3 124




На променливите с имена 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

1   2   3




©obuch.info 2024
отнасят до администрацията

    Начална страница