learning visually - datastore3.data.bg/qlayer/tarkan/lvbv1.pdfУрок 8 Обекти за...

80
1

Upload: others

Post on 08-Oct-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

1

Page 2: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

2

Learning Visual BasicVisually

Daners Co.

Page 3: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

3

Съдържание:

Урок 1 Въвеждане в програмна среда Visual Basic 6 стр.

Урок 2 Деклариране на променлива 16 стр.

Урок 3 Работа с математически операторите на VB 22 стр.

Урок 4 Условни оператори 28 стр.

Урок 5 Използване на цикли 36 стр.

Урок 6 Използване на модули и процедури 44 стр.

Урок 7 Тип масив 51 стр.

Урок 8 Обекти за файлова система и работа с форми 59 стр.

Урок 9 Работа с колекции 63 стр.

Урок 10 Текстови фаилове 69 стр.

Урок 11 Обработка на низове 74 стр.

Page 4: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

4

УводMicrosoft Visual Basic е програмна среда , използвана за създаването на

програми за Microsoft Windows.За основа на програмата , която ще разглеждаме в тазикнига е програмната среда Basic.С времето и с нуждите на пазара езика се развива и сетрансформира в сегашния си вид ,Visual Basic.Този език е лесен за използване исъздаване на ефективни приложения , което го прави широко използван в бизнессредите и учебните заведения.От мнозина Visual Basic e смятан повече като забавянена учебния процес. Но тук смятам , че заедно ще можем да опровергаем този катоизползваме Visual Basic като основа за по нататъчното ни развитие като програмисти.

Page 5: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

5

Урок 1Въвеждане в програмна среда

Visual Basic

Page 6: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

6

В този урок ще се запознаем основно с Visual Basic и ще направим всички ниизвестната програма Hello World, разбира се ще я побългарим и ще добавим някоиосновни кодове и конструкции.Как да стартираме Visual Basic?

Нека сега стартираме Visual Basic.Това става по следния начин(разбира се аконе сте дефинирали различна папка при инсталацията на VB):

Start -> (All) Programs -> Microsoft Visual Studio 6.0 -> Microsoft Visual Basic 6.0

Появява ни се Фиг.1.1.1:

Page 7: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

7

Какво е проект?Колекция от фаилове използвани за създаване на приложения.

За сега ще работиме само с Standart EXE , за това изберете го и натиснетеOpen(Фиг 1.1.2).Сега нека разгледаме поотделно всеки елемент.

Project Explorer - Списак отформи и модули в текущияпроект.Properties Window - Списакот свойства на селектиринияконтроли илиформа.Свойствата биватразлични като вид на обекта ,големина , текст, цвят.Form - Обект ,който по късноще се превърне впрозорец.Използва се запоставяне на различни обектии е основата напотребителския интерфейс.Form Layout Window -Позволява ви да зададетеместоположение запоявяването на формата следстартирането и.Toolbox - Осигурява комплектот инструменти коитоизползвате по време създаванена проекта.Също така можетеда създадете свои категориикато селектирате Add Tab отменюто си.

Page 8: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

8

CommandButton (Команден Бутон) - Всички сме го виждали до сега исме го използвали в хилядите Windows програми.Тук също ще ни едоста полезен.Text (Текстово поле) - Текстово поле се използва за показване на текствърху формата или за получаване на входна информация отпотребителя, докато програмат е стартирана.Label (Етикет) – Етикетът е специален елемент ,проектиран дапоказва текст, числа или символи , когато програмата е стартирана.

Вече се запознахме с основите на програмната среда и сега е време даконструираме нашата първа програма.За това ще са ни нужни следните елементи 2Label , 1 CommandButton , 1 Text , които ще разположите по следния начин:

Page 9: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

9

Следващата стъпка ще бъде добавянето на сорс код.С него програмата ни щесе "съживи".Първо изберете от менюто View -> Code(Фиг. 1.1.4)или както е показанона фиг.1.1.5. изберете от Project Explorer View Code.(също така можете да кликнете двапъти върху формата).След което ще ви се появи Code Editor-a.

Page 10: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

10

Напишете код за бутона :1) Отворете падащото поле Object в прозореца на кода.Обектите на интерфейса наформата се появяват в списъчно поле както е показано на фиг. 1.1.6

2) Щракнете на Command1 в списъчното поле.В прозореца на кода се намиратпрограмни конструкции , които отбелязват началото и края на конкретната процедура,или процедура за събитие, на VB .Това е блок с код , асоцииран с точно определенобект в интерфейса:

Private Sub Command1_Click()End Sub

Тялото на процедурата винаги се вмества между редовете и се изпълнява тогава ,когато потребителят активира елемента на интерфейса,асоцииран с процедурата.В тозислучай събитието е щракване на мишката ,но както ще видите по късно то може дабъде и от друг тип.

3) Въведете редовете код , показани по - долу , между конструкциите Private Sub и EndSub , като натискате клавиша Enter след всеки ред и внимавате да въвеждфатепрограмните конструкции както са показани тук.

Label2.Caption = "Hello " & Text1.Text

Page 11: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

11

Програмата ни ще работи и по този начин , но нека добавиме още няколко реда за даможе програмата ни да изглежда по добре.Нека да не забравяме , че интерфейса емного важна част от един проект.

1) Сега отворете отново списъчното поле Object и този път изберете Form.Въведетеследния код между редовете, както направихме миналия път.

Form1.BackColor = vbWhiteLabel1.BackColor = vbRedLabel2.BackColor = vbWhiteLabel1.Caption = "Name"Label2.Caption = "Hello world!!"Command1.Caption = "Click!!"Form1.Caption = "My First Program"

Сега нека разгледаме по отблизо кодовете, които въведохме:След като натиснеме първия бутон ще се изпълни следната конструкция

Label2.Caption = "Hello " & Text1.Text

Този код присвоява текста Hello и текста въведен в текстовата кутия и я визуализира ветикет 2 .Например въвели сме "Пешо" в текстовото поле .Ето и какъв ще бъдерезултата :

Hello Пешо

Следващата конструкция е Form1.BackColor = vbWhite.Тя пък сменя цвета на форматав бяло.Сигурно сте забелязали ,че използваме тази конструкция и при другиобекти.Някои обекти имат еднакви функции , но това не бива да ви подвежда ,защотопонякога изходния резултат може да бъде различен.Стойностите на BackColor иCaption можете да въведете от Properties Window. Разбира се за първата конструкция(Label2.Caption = "Hello " & Text1.Text ) няма да можете ,тъй като е стойността изависи от потребителя.След като въведохме соурс кода можем да стартираме нашата програма (Фиг.1.1.7).Селектирайте от менюто Run->Start или натиснете клавиша F5.

Page 12: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

12

Важно!За да разнообразите цветовете във формата си можете да използвате друг начиносвен с познатите основни цветове.Това става с израз, в който се използвашестнадесетичната система.Този начин е малко по труден ,но предлага широкацветова гама.Ето и обяснение на един примерен цвят.

&HB7D3AB&H Син183 Зелен211 Червен171 (наситеност на цветовете)

До тях се съм разположил наситеността на цветовете.Ако включите калкулаторана Windows и изберете View ->Scientic ще можете да използвате функцията му запревръщане от обикновенно число в шестнадесетично(Dec <> Hex).

• B7 = 183• 7D = 211• AB = 171

Page 13: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

13

Друг начин за визуализиране на текстове е с помоща на така нареченитебоксове - MsgBox , InputBox.MsgBox служи за да покажете текст чрез стандартнитеAlertBox , AttentionBox , YesNo/YesNoCancel и др.Това става по следния начин:

MsgBox (Prompt,Button as vbMsgBoxStyle,Title)

Разгледайте стиловете за визуализиране.Те излизат автоматично след въвеждане назапетайка след текста (Prompt).

Докато с MsgBox можете само да визуализирате текст , то InputBox се използваза въвеждане на информация.Този начин е най лесен за присвояване на информация отпотребителя.Синтаксиса на програмата е и идентичен с този на MsgBox.

InputBox (Prompt , Title)

Page 14: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

14

Задачи:

1.Направете програма съдържаща 1 CommandButton(команден бутон) , 2Label(етикета).Бутона трябва да изпълнява следните функции:

• Визуализира InputBox , въведената информация в нея да се визуализира впървия етикет

• Сменя цвета на Формата в жълт (vbYellow)• Втория етикет визуализира следния текст "Цвета на формата беше сменен"

2.Направете програма съдържаща 6 Label(етикета) и 1 CommandButton(команденбутон).При стартиране на програмата всички етикети да получат стойност " " заCaption и стойност &HFFFFFF& за BackColor, а при натискане на бутона да сеизвършва следното действие:

• Сменя цвета на формата в черен (&H00000000&)• Цветовете на етикетите да се сменят по следния начин• Label1 = &HFF8080&• Label2 = &H00C000&• Label3 = &HC0C000&• Label4 = &HC00000&• Label5 = &H400000&• Label6 = &H004000&

Page 15: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

15

Урок 2-Деклариране на променлива-

Page 16: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

16

Както видяхме миналия урок , писането на код се състои в избирането направилния бутон и написването на два реда. В този урок ще се занимаеме деклариранена променливи с Dim и ще разгледаме някои полезни навици при писане на код.Полезни навици:

Visual Basic не прави разлика между големи , малки букви , пропускане намясто .За компайлера дали ще напишете label1.caption= 'pe6o' или Label1.Caption ='pe6o' ще му е все едно ,но програмист седнал над програмата ви след вас или самитевие след време , когато преглеждате кода ще разберете ,че прилежно написания кодмного пъти ще ви спести часове работа.За това отделяйте 2секунди и натискайте Tab иCaps Lock от време на време.Запомнете ще съкратите много време по този начин.

Ако това са ви първите ви часове с програма от този сорт не е лошо дапрегледате по внимателно следващите редове и да присвоите някои полезни навици.1.Използвайте коментари , когато можете , но не прекалявайте за да не стане кода випрекалено тежък за четене.Можете да направите това използвайки апостроф(').

' Това е коментар'2 редDIM intNumber AS Integer 'Това е коментар

2. Пишете с главна буква ключови думи като If, Dim, Option, Private , и др.Имената напроменливи , контроли по принцип са смесени - ClientName, StudentId, и др.3.Прекалено дългите редове можете да ги пренесете , чрез _ (долна черта):

Data1.RecordSource = _"Select * From Titles" 'Един код на два реда

Нека сега разгледаме самата конструкция за деклариране на променлива.

Page 17: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

17

Конструкция DIM:

За да декларирате явно дадена променлива преди да я използвате, трябва давъведете името на променливата след Dim(Dim идва от dimension -(англ.)величина.)Тази декларация резервира място в паметта за променливата , когатопрограмата бъде стартирана.Например следната конструкция :

Dim firtsname

създава пространство в програмата за променлива firtsname .След името напроменливата можете да определите нейния тип.VB ви позволява да идентифициратетипа предварително за да можете да контролирате паметта използвана от вашатапрограма.Например ако променливата ще се съхранява число без десетична запетая(цяло число) , можете да я декларирате и да спестите малко памет.Разбира се ако недекларирате типа на променливата VB по подразбиран резервира място за променливаот тип variant ,който може да съхрани данни от всякакъв размер или формат.

След като декларирате променлива , сте свободни да и присвоите информация чрезсвоя код.Можете да направите това посредством оператора за присвояване(=).Например:

firtsname = "Петър"

След това присвояване променливата firtsname може да бъде използвана на мястото наимето "Петър" във вашия код.Например конструкция за присвояване:

Label1.Caption = firtsname

Деклариране на променлива без Dim

Можете да декларирае променлива и без конструкцията DIM ; този процес сенарича неявно деклариране.За да декларирате променлива по този начин , простоизползвайте самата нея ,пропускайки конструкцита Dim:

firtsname = "Явор"

Page 18: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

18

Неявното деклариране има предимство в скоростта,защото не губите време въввъвеждане на конструкцията Dim.Обаче този тип деклариране пречи на VB да покажесъобщение за грешка ,ако по късно въведете погрешно името на променливата исъздава нова което води до логическа грешка , която не може да бъде открита откомпилатора

Внимание!!Ако решите да декларирате своитепроменливи чрез Dim , ще трябва дасложите конструкцията Option Explicitв секцията за декларации в началото навсеки проект.Когато използвате OptionExplicit, VB генерира съобщение загрешка , ако открие грешка, която не ебила декларирана явно вкода(Възможна причина е правописнагрешка в името).Ако сте загрижен заправописните грешки ,тазиконструкция може да помогне да гипроследявате.

Правила на наименоване:Разбира се при задаване на име на елементи в Visual Basic - променливи , константи ,контроли ,процедури и др. трябва да спазвате някои правила:

• Името винаги трябва да започва с буква• Може да бъде до 255 символа• Не може да използвате празни пространства и следните символи ! # % $ & @ ;• Не трябва да бъде запазена дума (дума използвана в Visual Basic if , option ....)• Внивайте да не използвате чертичка (-)тъй като може лесно да бъде объркана с

минуса .Вместо това използвайте долна черта (_).Вместо Family-name можетеда напишете Family_name или FamilyName.

Типове данни :

Page 19: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

19

Тип данни Размер Обхват Пример

Integer 2 байта от -32 768 до 32 767 Dim Birds%Birds%=36

Long Integer 4 байта от -2,147,483,648 до2,147,483,647

Dim Loan&Loan& =350 000

Single Precisionfloating point 4 байта

-3.402823E38 до -1.401298E-45за отрицателни стойности;1.401298E-45 до 3.402823E38за положителни стойностти

Dim Price!Price! = 899.99

Double precisionfloating point 8 байта

от -1.79769313486232E308 до -4.94065645841247E-324 заотрицателни стойности;4.94065645841247E-324 до1.79769313486232E308 заположителни стойностти;

Dim Pi#Pi# = 3.141592656535

Currency 8 байта от -922,337,203,685,477.5808 до922,337,203,685,477.5807

Dim Debt@Debt@ = 760003000.50

String 1 байт зазнак от 0 до 65 535 знака Dim Dog$

Dog$ = "Doggy"

Boolean 2 байта True or False Dim Flag as BooleanFlag = true

Date 8 байта от 1 януари 100г. до31 декември 9999г.

Dim Birthday as DateBirthday = #3-1-63#

Variant

16 байта (зачисла )22 байта + 1байт зазнак(занизове)

Обвхватите на всички типоведанни

Dim TotalTotal = 282.13

Ето и една програмка демонстрираща визуално използването на променливи впроект.Тук ще декларираме две променливи от type string и ще им присвоимстойностти.За програмата ще ни е нужен само един Label(етикет).

Page 20: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

20

Option ExplicitDim firstname, lastname As StringPrivate Sub Form_Load()firstname = "Петър"lastname = "Иванов"Label1.Caption = name & " " & lastnameEnd Sub

По този начин ще визуализирате Петър Иванов, но тук има и още една специфичнаточка.Това е знака за слепване на низове (&). С него и още други математическиоперации ще се занимаем следващия урок.

Page 21: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

21

Урок 3Работа с математически

операторите на Visual Basic

Page 22: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

22

Формулата е конструкция , която комбинира числа , променливи , оператори иключови думи , за да създаде нова стойност .Visual Basic съдържа няколко елемента наезика , предназначени за използване във формули.В тази секция ще упражним работатас математическите оператори - символи за свързване на частите на една формула .Снякои изключения , математическите символи , които ще използвате , са същите ,които използвате в ежедневния си живот , и техните операции са доста интуитивни.Ето и основните математически оператори:

Оператор Математически операция+ Събиране- Изваждане* Умножение/ Деление\ Целочислено делениеMod Остатък при деление^ Повдигане на степен& Слепване на низове

Със следната програма ще демонстрираме използването на 4те от найизвестните и използвани оператори - събиране , изваждане , умножение , деление.Запрограмата ще са ни нужни 4 CommandButton (команден бутон), 1 Label (етикет) и 2Тext(текстови полета).Фиг. 3.1

Page 23: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

23

Option ExplicitDim first, second As Integer

Private Sub Command1_Click() first = Val(Text1.Text) second = Val(Text2.Text) Label1.Caption = first + secondEnd Sub

Private Sub Command2_Click() first = Val(Text1.Text) second = Val(Text2.Text) Label1.Caption = first - secondEnd Sub

Private Sub Command3_Click() first = Val(Text1.Text) second = Val(Text2.Text) Label1.Caption = first * secondEnd Sub

Private Sub Command4_Click() first = Val(Text1.Text) second = Val(Text2.Text) Label1.Caption = first / secondEnd Sub

Фиг. 3.1

Програмния код:С първата конструкция в процедурата декларираме две промеливи от Integer

тип.Нека разгледаме сега една по интересна функция ,която използваме впрограмата.Функцията Val съдържа специялен код ,конвертиращ текстов аргумент вчислова стойност.Това конвертиране е необходимо за операцията събиране , за даработи тя коректно .

Page 24: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

24

Подразбиращия се тип данни , върнат от обекта текстово поле , е текст.Това не епроблем при останалите три от операторите.Операторите -,*,/ работят само с числа ,затова когато потребителя селектира един от тези оператора в програмата ,VBавтоматично конвертира стойностите ,върнати към променливите firts и second ,вчисла.Операторът + работи и с числа , и с текстови низове .Тъй като типа данни ,койтообекта текстово поле връща е текст ,Visual Basic би третирал стойностите напроменливите като текст и ще слепи двете стойности , а няма да ги прибавиматемататически .(например "222" + "450" ще се равнява на

Внимание!

Много е важно да тествате всяко изчисление в програмата , за да проверите ,че тяработи правилно.Тестването само на една част от програмата не е достатъчно.

В следващата таблицa ще се запознаем с по сложни математически функции,коитомогат да ви помогнат при работа с числа с вашите формули.

Функция Предназначение

Abs(n) Връща абсолютната стойност nAtn(n) Връща аркустангенс ,в радиани ,от nCos(n) Връща косинуса от ъгъла n .Ъгълът n се изчислява в радиани.Exp(n) Връща константата e , повдигната на степен n.Rnd(n) Генерира случано число между 0 и 1Sgn(n) Връща -1, ако n e по-малко от 0 , 0 ако е 0, и +1 ако n е по-голямо 0.Sin(n) Връща синуса от ъгъл n .Ъгълът n се изразява в радиани.Sqr(n) Връща квадратния корен на n.Str(n) Конвертира числова стойност в радиани.Tan(n) Връща тангенса от ъгъл n.Ъгълът n се изразява в радиани.Val(n) Конвертира низова стойност в число.

Page 25: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

25

Приоритет на операторите

В този урок се запознахме с някои математически функции.Visual Basic видава възможност да смесвате в една формула толкова оператори ,колкото ви е нужно,като всяка числова променлива и израз са разделени чрез оператор.Ето например еднапремлива формула на Visual Basic:

Formula = 10 + 15 * 5 / 10 ^ 2

Както сте забелязали редът на изчисляване има много голямо значение в тозипример.VB решава този проблем , като установява специфичен приоритетен ред наматематическите операции.Този списък от правила казва на VB кои оператори даизчислява първо.Следващата таблица показва операторите по реда на тяхнотоизчисляване:

Оператор(и) Приоритет

( ) Стойността в скобите винаги се изчислява първи.^ Повдигането на степен е втори.

- Отрицание (създаване на отрицателно число)е трети по приоритет.Него бъркайте с изваждането.

* / Умножението и делението са четвърти.\ Следващия в списъка е целочисленото делениеMod Остатък при деление е шести.+ - Събирането и изваждането са последни.

Page 26: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

26

Задачи:

Задача 1Напишете програма пресмятаща сумата на следната формула :

(abs(-2) + (45^2 + 44*3) - (abs(-340))/10))/2

като визуализира резултата в етикет.

Задача 2Напишете програма пресмятаща сумата на следната формула:

((123 + 13) + (13 Mod 5) + x) / 2.x

където x e стойност въведена от потребителя в Text (текстова кутия).

Задача 3Напишете програма пресмятаща сумата на следната формула:

(a + b) * (a – b)

Числата да се въвеждат от текстови полета , а резултата да се визуализира в MsgBox синформационна икона ,след натискане на бутон.

Page 27: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

27

Урок 4-Условни опер1атори-

Page 28: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

28

В този урок ще се запознаем с условните оператори.Условните оператори щени заместят взимайки някои решение на база въведената информация.

Програмата която ще използваме за нашето упражнение ще е същата програма, коятосъздадохме миналия урок , разбира се ще я доразвиеме и ще се запознаеме с новконтрол (Option).

Условни структури If....ThenУсловните структури If...Then ви дават възможност да добавяте логика към

програмите си.Тези изрази ,използвани в специален блок от конструкции , нареченусловна структура , контролират дали да се изпълняват други конструкции във вашияпроект и в какъв ред да става това.Условната структура If...Then ви дава възможност даоцените условие в програмата и да действате на базата на оценката.В нейната най-опростена форма , условната структура If...Then се пише на един ред:

If condition Then statement

където condition е условен израз , а statement е валидна програмна конструкция наVisual Basic.Например:

If points >= 50 Then Label1.Caption = "Печелиш!"

e условна структура If...Then , използваща условния израз points >= 50 за даопределите дали програмата трябва да присвои на свойството на Caption на обектаLabel1 стойността "Печелиш".Ако на променливата points съдържа стойност равна илипо - голяма от 50, то VB присвоява свойството Caption; или в противен случайпропуска конструкцията.Този вид на сравняване винаги дава точен отговор (True илиFalse).Условния израз никога не може да бъде "може би".

Няколко условни структури в една.

Условната конструкция If...Then позволява и използването на няколко условниизраза.Този блок може да бъде няколко реда и да съдържа важни ключови думи катоElseif , Else и End if.

Page 29: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

29

If condition1 Thenконструкции ,ако condition1 e TrueElseif condition2 Thenконструкции за изпълнение ,ако condition2 e True[Тук можете да добавите допълнителни Elseif клаузи и съответнитеконструкции]Elseконструкции за изпълнение , ако нито една от изброените по горе не е True.End If

В тази структура първо се оценява Condition1.Ако този условен израз е True, сеизпълнява блокът от конструкции под него.Ако първото условие е False ,се оценявавтория условен израз(Condition2).Ако нито един от условните изрази не е True , сеизпълняват констрикциите под ключовата дума Else.Накрая цялата условнаконструкция се затваря от ключовите думи End If.

Option Контроли:

OptionButton (радио бутон) - дават възможност за избор на една отняколко възможности , които взаимно изключващите се помеждуси.Няколко бутона разположени върху един носещ елемент - форма(Form) ,рисунка (PictureBox) или рамка (Frame),работятсъвместно(образуват група.Свойството Value има две възможнистойностти -True или False .Стандартното име на елемента ,което VisualBasic задава за подразбиране е Option1.

CheckBox(кутия за отметка) - осигурява възможност за избор нанезависими помежду си възможности True/False.За задаване иопределяне на положението се използва подразбираното свойство Valueсъс стойностти: vbUnchecked(0)( кутията за избор не е маркирана ),vbChecked(1)( кутията за избор е маркирана ), vbGrayed(2)(кутията енеактивна, потребителят не може да промени стойността и).Frame (рамка) - този обект се използва за групиране на няколкодруги.Например ако искате да отделите няколко радио бутона найлесния и правилен начин е използвайки Frame.

Page 30: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

30

Frame (рамка) - този обект се използва за групиране на няколкодруги.Например ако искате да отделите няколко радио бутона най леснияи правилен начин е използвайки Frame.

Нека сега разшириме програмата от миналия урок.За това стартирайте нов проект идобавете 2 TextBox (текстови полета) ,1 Label (етикет) , 4 Optionbutton (радиобутон).

Option ExplicitDim first, second As Integer

Private Sub Command1_Click()

first = Val(Text1.Text) second = Val(Text2.Text) If Option1.Value = True Then Label1.Caption = first + second End If

If Option2.Value = True Then Label1.Caption = first – second End If

If Option3.Value = True Then Label1.Caption = first * second End If

If Option4.Value = True Then Label1.Caption = first / second End If

End Sub

Page 31: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

31

Разликата между миналата и тази програма е ,че тук използваме само един бутон ,а намястото на останалите изпозваме радио бутоните.Така спестяваме някои операции.

Select CaseПонякога ни се налага да използваме повече условия и по този начин

програмата може да стане прекалено тромава и да ни забива на моменти.За улеснениеможем да използваме конструкцията Select Case, която е предназначена за повече отняколко условия.Структурата Select Case е подобна на структурата If...Then...ElesIf, но е много по-ефективна , когато разклоняването зависи от една ключова променлива.можете даизползвате Select Case структури и за да направите своя програмен код по-разбираем.Синтаксиса изглежда по следния начин:

Select Case VariableCase value1Програмна конструкция за изпълнение ,ако value1 съвпада с variableCase value2Програмна конструкция за изпълнение ,ако value2 съвпада с variableCase value3Програмна конструкция за изпълнение ,ако value3 съвпада с variable...End Select

Структурата Select Case започва с ключовите думи Select Case и завървша сEnd Select.Трябва да заместите variable с променлива ,свойство или израз ,който щебъде ключова стойност за структурата , а value1 ,value2 и value3 с числа , низове или

Page 32: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

32

други стойности , свързани с ключа за тестване ,който ще бъде разглеждан .Ако еднаот стойностите съвпадне с променливата , се изпълняват конструкциите под нейнатаклауза Case.След това Visual Basic продължава програмния код след End Select.Вструктурата Select Case можете да включите какъвто и да е брой клаузи Case, както иповече от една стойност в дадена клауза Case.Примерът по долу показва нагледно каксе използва структурата Select Case .Ако стойносттан Age съвпадне с една отключовите стойности , съответното съобщение се появява като етикет.

Select CaseCase 18Label1.Caption = "Можеш ли да караш кола?"Case 20Label1.Caption = "Студент ли си ?"Case 34Label1.Caption = "Женен ли си?"Case 40Label1.Caption = "Деца имаш ли ?"End Select

Също така структурата Select Case поддържа и клаузата Else Case , която можете даизползвате ,ако не е изпълнен нито един от предишните случаи.Ето как става това и спримера Age.

Select CaseCase 18Label1.Caption = "Можеш ли да караш кола?"Case 20Label1.Caption = "Студент ли си ?"Case 34Label1.Caption = "Женен ли си?"Case 40Label1.Caption = "Деца имаш ли ?"Case ElseLabel1.Caption = "На колко сте ? Кажете !"End Select

Page 33: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

33

Обекта List (списъчно поле) се използва за въвеждане и извеждане нанизова информация.За да въведете стойност в списъчното поле трябва даизползвате ключовата дума AddItem.Използването, на която става последния начин:

List1.AddItem "Информация"А за да изтриете даден индекс от списъчното поле може да използватефункцията RemoveItem.

List1.RemoveItem <index>Ами ако сме сгрешили изцяло?Трябва ли да пишеме цикъл за да изтриемевсичката въведена информация? Не.Можете да нулирате всичо чрез Clear:

List1.ClearНещо по важно:

• ListCount(брой) - брой елементи на списъчната кутия.Товасвойство е недостъпно при проектиране.

• ListIndex(избран ред) - показва индекса на избран ред отсписъчната кутия.Чрез тази ключова дума ще можете да сеобръщате към индекс в списъчното поле.Възможни стойносттимогат да бъдат:-1(ако няма избран ред) или 0,1.....(ListCount-1).

Също така можете да използвате математически оператори , точно както и вструктурата If....Then.

Page 34: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

34

Задачи:

Задача 1.Създайте приложение съдържащо 1 List и 1Label(етикет).

При зареждането си програмата да въведе следните стойностти в списъчното поле:1."English"2."German"3."Bulgarian"

При избор на елемент от списъчното поле да се изведе следната информация в етикета,според избор на индекса:

1."Hello, my friend"2."Hallo, meine freundein"3."Здравей , приятелю"

Page 35: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

35

Урок 5-Използване на цикли-

Page 36: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

36

В този урок ще се запознаем със основните конструкции за изпълняване нагрупа операции , определен брой пъти ,тъй наречените цикли.Първия от тях и найлесен е цикъла For....Next.

Цикъл For...

For....Next ви позволява в процедурата за събитие да изпълнявате конкретнагрупа програмен код определен брой пъти.Синтаксисът и изглежда по следния начин:

For Variable = start To endконструкцията ,която желаем да повторим

Next Variable

В тази конструкция For , To и Next са задължителни ключови думи.Както иоператорът за присвояване (=) .За да работи цикъла заменяте Variable с име на числовапроменлива,която наблюдава текущото броене на цикъла. Start и end пък трябва дазаместите с числови стойности.Те представят началната и крайната точка вцикъла.Редът или редовете между For и Next са инструкции ,повтаряни при стартиранена цикъла.

Нека разгледаме един пример възпроизвеждащ пет звука от говорителите накомпютъра:

For i = 1 to 5Beep

Next i

Този цикъл е еквивалент на написването на конструкцията Beep пет пъти.Закомпилатора той изглежда като

BeepBeepBeepBeepBeep

Page 37: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

37

Променливата , използвана в този цикъл е i (буква, която представя първия целочисленброяч в цикъл For....Next).При всяко изпълнение на цикъла , стойността напроменливата се увеличава с 1 .

Допълнително!Beep - издава звук при изпълнението на тази функция в VB .Може да сеизползва за привличане на внимание.Print - специялна конструкция за визуализиране на изходни данни на форма илипринтер.Методът Print има следния синтаксис:

Print Expressionкъдето Expression e променлива , свойство,текстова или числова стойност.

След като разгледахме тази конструкция нека сега я поупражним.В тази програма щеизползваме и конструкцията Print с която се запознахме по-горе.За програмата ще ни енужен само един бутон.Сега стартирайте Code Editor и добавете следнитеконструкции между Private Sub Command1_Click() и End Sub:

For i = 1 To 10 Print "Ред"; iNext i

Page 38: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

38

Този цикъл визуализира във формата 10 пъти думата "Ред" , последвана отброяча за цикъла.Точката и запетая (;) в конструкцията Print замества оператора заслепване (&).Методът Print поддържа и запетая (,) , който се приема от компилаторана Visual Basic символ за разделяне на елементи в списък от изрази.Но запетаятапоставя изразите на разтояние един от друг.

Променливата на брояч в цикъл For..Next може да бъде мощен инструмент впрограмите ви.Интересното в нея е и че можете да промените последователността наброене като определите различна стойност за start и да добавите ключовата дума Step ,за да увеличите или намалите брояча с различни интервали.Например:

For i = 5 To 25 Step 5 Print iNext i

ще отпечата следната последователност от числа :

510152025

А ето и пример за намаляване на стойността на брояча:For i = 0.5 To 2.5 Step 0.5 Print iNext i

ще визуализира следните числа:

0.511.522.5

Page 39: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

39

Освен за визуализиране на променливата брояч , можете да използватебораяча за настройване на свойства , изчисляване на различни формули ,стойносттиили обработка на файлове.

Конструкцията Exit ForТази конструкция позволява да излизате от цикъла , преди той да е завършилизпълнението си . Exit For се поставя между ключовите думи For и Next .

For i = 1 To 10 Print "Ред", i Exit ForNext I

Тук цикъла ще визуализира само първия ред и ще излезете от цикъла.Попринцип Exit For се използва с условната конструкция If...Then.Например горнияпример може да стане по следния начин:

For i = 1 To 10 Print "Ред", I If i = 5 Then Exit ForNext I

Тук пък компилатора ще изведе 5 реда и ще спре.

Писане на цикли с DoКато алтернатива на цикъла For...Next, можете да използвате цикъл Do, който

да изпълнява група конструкции ,докато определено условие стане вярно(True).Циклите Do можете да използвате, когато не предварително незнаете колко пътище трябва да се повтори цикълът.Например когато потребителят въвежда информацияв поле за въвеждане неопределен брой пъти и се наложи да се прекрати процеса , томожете да настроите цикъла да свършва при въвеждане на "Край".

Цикълът има няколко формата, в зависимост от това къде и как се изчисляваусловието му.Най - често срещания синтаксис е:

Page 40: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

40

Do While condition Група конструкции за изпълнениеLoop

Например следващия цикъл Do ще обработва входни данни до въвеждането на думата"Край":

Do While InpName <> "Край" InpName = InputBox ("Въведете името името си или напишете Край за да _излезнете") If InpName<>"Край" Then Print InpName"Loop

Условната конструкция в този цикъл е InpName <> "Край" ,която за компилатора наVisual Basic означава "повтаряй цикъла ,докато променливата InpName стане съсстойност "Край".Това показва интересен факт за цикъла Do: ако условието най-горе вцикъла не е True при първото изчисляване то, цикъла Do изобщо не се изпълнява.Тук,ако променливата дума InpName съдържа текстовия низ "Край" преди започването нацикъла, компилатора напълно ще прескочи цикъла и ще продължи с реда подключовата дума Loop.Ако желаете да цикълът винаги да се стартира поне веднъж впрограмата, поставете проверката на условието след Loop.Например :

DoInpName = InputBox("Въведете името името си или напишете Край за да излезнете")If InpName<>"Край" Then Print InpName"Loop While InpName <> "Край"

Двата цикъла са еднакви , но тук условието се проверява след получаването на име отфункцията InpName.Предимство тук е проверяването на променливата след като ибъде дадена стойност и при евентуално съществуваща стойност "Край" да не прескачацикъла.Проверката на цикъла след ключовата дума Loop осигурява поне едноизпълнение на цикъла, но често задължава използването на допълнителни конструкцииза обработка на данните.

Внимание!

Page 41: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

41

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

Използване на обекта Timer(хронометър)Visual Basic ви дава възможност да изпълнявате група конструкции през

определен период от време,като използвате обекта Тimer.Това е невидим хронометър,който ще ви осигури достъп до системния часовник.Този обект ще ви бъде полезен впочти всички програми.Той може да бъде използван като закъснителен таймер заотброяване на предварително настроено време, за предизвикване на забавяне впрограмата или за повторение на действие през определен период.Той е точен до 1милисекунда , или 1/1000 от секундата.Ще можете да настройвате таймера съссвойството Interval и го активирате , като настроите свойството му Enabled наTrue.След като таймерът бъде стартиран , той работи постоянно (изпълнявапроцедурата си за събитие през определен интервал), докато програмата не спре илитаймера бъде дезактивиран.

Нека сега се упражним като създадем програма , визуализираща текущотовреме.Ще са ни е нужен 1 Label (етикет) и 1 Timer(хронометър).

Private Sub Form_Load() Timer1.Interval = 1000 Timer1.Enabled = TrueEnd Sub

Private Sub Timer1_Timer() Label1.Caption = TimeEnd Sub

Page 42: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

42

В примера настроихме интрвала на таймера на 1000 (Timer1.Interval = 1000) тъй катообекта тимер приема 1 за една милисекунда и 1 секунда = 1000 милисекунди.След товаактивираме таймера с конструкцията Timer1.Enabled = True.КонструкциятаLabel1.Caption = Time визуализира текущото време в Label1.За да визуализирамедатата просто добавете допълнителен етикет и му присвоите оператораDate(Label2.Caption=Date).

Любопитно !

За да присвоите текущото време на променлива използвайте ключоватадума Now .Ето и синтаксиса и.Препоръчва се използването на променливи от типVariant.

StartTime = NowLabel1.Caption = StartTime

Ако пък ви излизат някакви дълги цифри несъответстващи за нормалнитеразбирания за показване на време използвайте следващата конструкция заформатиране на променливата StartTime ,използвана в миналата програма:

Label1.Caption = Format(StartTime, "hh:mm:ss")

Тази конструкция ще изведе часовете , минутите и секундите ( 22:56:30 ).Ако пъкискате да визуализирате само часовете и минутите , просто ще се наложи дамахнете ":ss" от конструкцията.

Label1.Caption = Format(StartTime, "hh:mm")

Page 43: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

43

Урок 6-Използване на модули и

процедури-

Page 44: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

44

В езика Visual Basic има стандартен , точно определен набор от оператори ивградени функции.В един език за програмиране не може да предвидят всичкиоператори и функции ,които могат да са необходими за програмиста в процеса наработа.Затова в съвременните езици за програмиране се дават средства , с помоща накоито да може да се разширява наборът от оператори и наборът от вграденифункции.Такива средства в Visual Basic са модули и процедури.

МодулСтандартният модул е отделен файл в дадена програма , който съдържа

глобални , или публични променливи и процедури Function и Sub.При писането на подълги програми ,ще използвате няколко форми и процедури за събития,които понякогаизползват еднакви променливи или процедури.Процедурите биват локални ,коетоозначава, че могат да бъдат променяни или използвани в процедурата , в която са билисъздадени.Също така, процедурите за събитие са локални и за форми , в които са билисъздадени - не можете да използвате процедура в Form2 ,ако e създадена в Form1.За даизползвате променливи и процедури във всички форми и процедури , е необходимо дадекларирате в един или повече стандартни модула за проекта.Стандартния модул ефайл с разширение .bas .Този файл съдържа променливи и процедури , които могата дабъдат използвани навсякъде в проекта.Също като формите , стандартните модули са вотделен списък в прозореца Project и могат да бъдат записани на диска чрез командатаSave Module1 As от меню File.За разлика от формите , модула не съдържа обекти илинастройки за свойства , а са съставени изцяло от код ,който може да бъде визуализиранили редактиран.

Добавянето на модул става по същия начин по който можете да добавите иформи.Първия модул в проекта по подразбиране е Module1.

Page 45: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

45

Чрез следващата илюстрация показва как глобална променлива може да бъдедекларирана и използвана в две различни форми:

Page 46: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

46

За да премахнете модул от проекта , в прозореца Project селектирайтемодула,след което от менюто изберете командата Remove.Командата не изтривамодула от диска ви , а просто премахва връзката между него и проекта ви.

Декларирането на глобална променлива(публична) в модул става посредствомключовата дума Public, следвана от името на променливата.След декларирането иможете да променяте,четете или визуализирате във всяка част от проекта ви.Например

Public Total

декларира глобална променлива ,наречена Total.По подразбиране променливата седекларира от вариянтен тип , но разбира се можете да и зададете конкретно име на тип,като ползвате ключовата дума As и укажете типа.Например

Public Best As String

декларира публична променлива от тип String , наречена Best.

Function процедури

Този вид процедури биват извиквани по име от процедури за събитие или отдруги процедури.Function процедурата е група конструкции, разположени междуключовите думи Function и End Function в стандартен модул.Вие извиквате такавафункция като в програмата поставите името и в програмна конструкция заедно сзадедените аргументи(това са променливите използвани в променливата).Функциите,декларирани в стандартни модули са публични.Те могат да бъдат използвани впроизволна процедура.Синтаксис:

Function FunctionName([Arguments]) [As Type]Function statemetsEnd Function

• FunctionName е името на функцията , която създавате в модула.• Arguments е списъка с опционални аргументи отделени с запетая , които ще бъдат

използвани в процедурата.

Page 47: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

47

• As Type е опция , която определя типа на функцията ,по подразбиране е Variant.• Function statemets e блок от конструкции ,които извършват работата на функцията.

Функциите винаги връщат за извикващата процедура стойност за името нафункцията (FunctionName).Примера по долу присвоява резултата на името DDS:

Function DDS(Cena) Danyk = Cena * (20 / 100) DDS = Danyk + CenaEnd Function

За да извикате тази процедура , трябва да използвате конструкция подобна наследната:

Label1.Caption = DDS(50)

Тази констрикция визуализира цената + ДДС.

Sub процедури

Този вид процедури се извикват по име.Те могат да получават аргументи имогат да бъдат използван и за изпълнение на задачи и могат да връщат стойностти.Subпроцедурата е подобна на Function , с изключение на това че не връща стойност,асоциирана с името си.Sub процедурата обикновено се използва за визуализиране наинформация или да бъдат да управляват някакви свойства , асоциирани с даденоусловие.Използват се също , за да обработват и връщат променливи по време наизвикване на някоя процедура.Повечето функции могат да връщат само една стойнтостдокато Sub процедурите могат да връщат много.Синтаксис:

Sub SubName([Arguments]) Procedure statemetsEnd Sub

Page 48: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

48

• SubName e името на процедурата.• Arguments е списък с опционални аргументи, отделени със запетаи, които ще бъдат

използвани в Sub• Procedure statemets е блок от конструкции.

Аргументите в извикването на дадена процедура трябва да съвпадат с аргументитев декларацията на Sub процедурата.Разбира се ,Sub процедурите декларирани встандартен модул са публични по подразбиране и могат да бъдат извиквани във всякачаст от програмата.

Следващия пример добавя по време на изпълнение на програмата имена всписъчното поле.Процедурата използва една променлива от тип String.

Sub AddToList(tekst$) If tekst$ <> "" Then Form1.List1.AddItem tekst$ Msg = tekst$ & " е добавен в ListBox." Else MsgBox ("Не беше добавено") End IfEnd Sub

Процедурата получава името , което ще бъде добавено .Ако стойността напроменливата не е празна ( null ) , конкретното име се добавя в обекта списъчнополе.Ако е аргументът е празен , процедурата визуализира съобщението "Не бешедобавено".

За да извикате Sub процедура в програмата , трябва да зададете името и иосигурите списъка от аргументи, изисквани в нея.Например за да извикате по горнатапроцедура ще въведете следната конструкция:

AddToList "ТЕКСТ"

По същия начин , можете да извикате процедурата ,като използвате промен лива:

AddToList NewName$

И в двата случая,процедурата ще добавя текста в списъчното поле.

Page 49: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

49

Задачи:

Задача 1Напишете процедура пресмятаща факториел от n (n!).Пример :

4! = 1*2*3*4

Задача 2Напишете процедура пресмятаща следната формула:

S = 1 + (x/ 1!) + ((x^2)/ 2!) + ....((x^n)/n!)

Page 50: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

50

Урок 7-Тип масив-

Page 51: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

51

Масив:Масивът е крайна редица от фиксиран брой елементи от един и същ тип.Към

всеки елемент от редицата е възможен пряк достъп, който се осъществява чрезиндекс.Елементите на масива се записват последователно в оперативната памет.Завсеки елемент от редицата се отделя фиксирано количество памет.Масивите ще вибъдат полезни ,защото ви дават възможност да проследявате големи количества отданни по начини , които биха били непрактични и трудни за използване.Представетеси следното ,че имате 18 различни числа и търсите сбора на две от тях (избрани отпотребителя).За такава програма ще са ви нужни 18 променливи, което не само бибило трудоемка работа, но и ще ни отнеме ценно време.Разбира се в Visual Basic епомислено за такива ситуации и създаден масива.Горния пример ще стане за секундикато използвате един масив (1 на 18), който съдържа стойността на променливите.

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

променливи.Разбира се , както при променливите мястото ,където е деклариран масиваиграе ключова роля.Това определя дали масивът ни е локален или глобален.Когато едеклариран локално,той може да бъде използван само в процедурата , в който есъздаден.Ако е деклариран като public в някои стандартен модул, той може да бъдеизползван навсякъде.При декларирането на масив трябва да внимавате за следнатаинформация:

Синтаксис:

Public ArrayName (Dim1Elements, Dim2Elements, ....) as DataType

• Public - e ключова дума за деклариране на глобални променливи или масиви.• ArrayName - името на променливата.• Dim1Elements - броят на елементите в първото измерение на масива.• Dim2Elements - броят на елементите във второто измерение на масива.• DataType - Типа на масив.

Page 52: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

52

Информация вконструкциятаОписание

Име на масив Името , което ще използвате за масива .Правилата за деклариранеса същите като при създаване на променливи.

Типа наданните

Типа на данните , които ще съхранявате.В повечето случаипроменливите са от един и същи тип , но ако не сте решили какъвще бъде типа или ще сехранявате разнообразни данни , може даизберете тип Variant.

Брой наизмеренията

Броят на измеренията, съдържани в масив.Повечето масиви саедномерни или двумерни ,но разбира се може да добавитедопълнителни.

Бройелементи

Броят елементи съдържани в масив.Елементите в масиваотговарят на индекса на масива.Първия индекс по подразбиране е0 (нула).

Тъй като масива е Public трябва да добавите масива в някои стандартенмодул.За да декларирате масив от локално ниво просто заменете ключовата думаPublic със Static и поставете декларацията в процедура.Локалните процедури могат дабъдат използвани само в процедурата ,в която са декларирани.Например следващиядекларация създава едномерен масив с 19 индекса на име Broy , от тип стринг.

Public Broy(18) As String

Както сте забелязали не записваме 19 индекса , защото първия индекс сеприема за 0.За да промените това ще трябва преди масива да въведете следнатаконструкция: Option Base 1.Тази конструкция ще промени първия елемент от 0 на1.Когато бъде създаден масива за него се отделя място в паметта.Следващия примердекларира едномерен масив от 4 елемента и пресмята сбора им.За тази програма ще ние нужен само 1Label(етикет),който ще визуализира крайния резултат.Също така щеимаме нужда и от стандартен модул, в който ще декларираме масива.

Page 53: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

53

Модул:Public Primer(3) As Integer

Форма:Private Sub Form_Load()

Label1.Caption = "" For i = 0 To 3 Primer(i) = InputBox("Mat") Next i For m = 0 To 3 s = s + Primer(m) Next m Label1.Caption = s

End Sub

С масивите можете да пресмятате различни формули и задачи.Горната задачаби била наистина трудна за изпълнение ако използвахме обикновенипроменливи.Представете си 100 такива числа ,които трябва една по една дадекларирате и после да събирате една по една.Най лесния начин за адресиране къмвсеки елемент към масива е чрез конструкцията For....Next.Следващия пример щепресмята средната темперетура за 1 седмица.

Page 54: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

54

За програмата ще ни са ни нужни 3 CommandButton(командни бутони) и 1стандартен модул.В модула ще декларираме един масив с начален индекс 1:

Option Base 1Public Temperatures(7) As Variant

Следва и кода за формата:

Private Sub Command1_Click()

Cls Prompt$ = "Enter the high temperature." For i% = 1 To 7 Title$ = "Day " & i% Temperatures(i%) = InputBox(Prompt$, Title$) Next i%

End Sub

Private Sub Command2_Click()

Print "High temperatures for the week:" Print For i% = 1 To 7 Print "Day "; i%, Temperatures(i%) Total! = Total! + Temperatures(i%) Next i% Print Print "Average high temperature: "; Total! / 7

End Sub

Private Sub Command3_Click() EndEnd Sub

Page 55: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

55

Въведения код в първия бутон въвежда стойностти в масива чрез функциятаInputBox , докато втория бутон извежда стойностите на масива и пресмята средноаритметична им стойност като я извежда и нея( Total! = Total! + Temperatures(i%) иPrint "Average high temperature: "; Total! / 7 ).

Методът CLSПочиства всички предишни конструкции Print от формата.По този начин можетеда въведете информацията наново.

Ето и крайния резултат:

Многомерни масиви.Освен с едномерни масиви вие можете да използвате и многомерни , с тях

можете да се справите с една или повече таблици с информация.Работата смногомерни масиви ще ви се стори трудна , докато свикнете , след това ще забележитекак ще ви спестят значително количество време и енергия.

Page 56: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

56

Сортиране на масив

Съществуват много начини за сортиране на редица от елементи (числа ,низове,записи , символи и т.н.).Ще разгледаме метода на пряката селекция. за сортиране наредица a1,a2,a3...,an.

Разглеждаме редицата a1,a2,a3...,an:• Намира се k ,така че ak = min {a1,a2,a3...,an.}• Разменят се стойностите на ak и а1.

Така на първо място в редицата се установява най маклият и елемент.Разглеждаме редицата a2,a3...,an:

• Намира се k ,така че ak = min {a2,a3...,an.}• Разменят се стойностите на ak и а2.

Така на второ място в реддицата се установява следващият по големина елемент. и т.н.• Намира се k ,така че ak = min {an-1,an.}• Разменят се стойностите на ak и аn-1.

Така получената редица е сортирана във възходящ ред.Методът на пряката селекцияможе да се опише по следния начин :

For i = 1 to n-1 Ak = min {ai , .... , an}next i

Page 57: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

57

Задачи:

Задача 1Дадена е редицата a1,a2,a3,....an (n>=1) и цяло число x .Да се напише програма,

която намира колко пъти x се съдържа в редицата.Като масива ще бъде въведен отпотребителя чрез InputBox и програмата трябва да изкарва резултата чрез функциятаPrint.

Page 58: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

58

Урок 8-Обекти за файлова система и

работа с форми-

Page 59: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

59

Visual Basic осигурява три обекта за разглеждане на файлове.Това са:

FileListBox (списъчно поле за файлове) - обекта ви дава възможност даселектирате конкретен файл.При избран файл Visual Basic поставя тозифайл в свойството FileName на обекта.

DirListBox (списъчно поле за директории) - обекта осигурява достъп допапките във файловата система.Когато поставите обекта Visual Basicпапките се появяват както биха се появили по време на изпълнение напрограмата.

DriveListBox (списъчно поле за устройства) - обекта осигурява достъп доустройствата в компютъра.При избрано устройство Visual Basic поставяустройството в свойството Drive на обекта.

В следващото упражнение ще използваме тези три обекта за да визуализирамекартинки.

Page 60: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

60

Private Sub Dir1_Change()File1.Path = Dir1.Path

End Sub

Private Sub Drive1_Change()Dir1.Path = Drive1.Drive

End Sub

Private Sub File1_Click()SelectedFile = File1.Path & "\" File1.FileNameImage1.Picture = LoadPicture(SelectedFile)

End Sub

Dir1.Path = Drive1.Drive

Тази конструкция обновява свойството Path ,когато потребителят селектирададено устройство в списъчното поле.Тя свързва двата обекта, за да може списъчнотополе за директориите да показва папките в текущото устройство.

File1.Path = Dir1.Path

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

SelectedFile = File1.Path & "\" File1.FileNameImage1.Picture = LoadPicture(SelectedFile)

Първия ред от конструкцията съчетава свойствата Path на File1 , и свойствотоFileName на File1, а след това съхранява полученото име в променливата SelectedFile.Втората конструкция в процедурата използва променливата SelectedFile за даможе да визуализира избрания файл в Image1 чрез функцията LoadPicture и свойствотоPicture.

Работа с форми:

FormName.Show

Тази конструкция зарежда FormName в паметта.След това можете да променятесвойствата и да я подготвяте за разглеждане

Page 61: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

61

FormName.Object.FunctionТази конструкция показва нагледно как можете да манипулирате отдалечено обективъв форми.

А за да скриете форма трябва да използвате конструкцията

FormName.Hide

Но тя все пак не изтрива формата от паметта.За да направите това трябва да използватеконструкцията Unload.

Unload FormName

A друг начин за да заредите форма е с функцията Load.

Load FormName

Page 62: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

62

Урок 9-Работа с колекции-

Page 63: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

63

В Visual Basic целия набор от контроли в една форма се нарича колекциятаControls.Тази колекция се създава автоматично при отваряне на нова форма и серазширява при всяко добавяне на нови обекти.Всяка колекция във формата имасобствено име ,така че да е възможно обръщането към нея като с отделна единица впрограмния код.Тъй като един проект може да съдържа повече от една форма ( иповече от една колекция ) , когато използвате колекция трябва да дефинирате инейното име . За да се обърнете например към колекция от Form1 ще използватеследния код:

Form1.Controls

В тази нотация , точката между името на обекта Form1 и ключовата дума Controls,прави Controls да изглежда като свойство, но програмистите често описват колекциятаControls като обект.Също така можете да се обръщате към обектите от колекциятаиндивидуално или на групи.

Обръщане към обектите от една колекция:

За да се обръщате към отделен член от дадена колекция или към обектите щеизползвате няколко начина.Първия е чрез директно използване на имената им вконструкция за присвояване:

Form1.Controls!Label1.Caption = "Пример"

Тази конструкция избира Label1 от обекта Form1 и присвоява на свойствотвому Caption стойнтостта "Пример".Удивителния знак(!) се използва за свързване наобекта Label1 с колекцията.

Втория начин за обръщение към даден обект от колекция е да определитеиндксната позиция на този обект.Visual Basic съхранява обектите от дадена колекция вобратен ред на тяхното създаване.Ако искате например да се обърнете към последнияобект от колекцията ще трябва да зададете индекс 0.Ето и пример:

Form1.Controls(0).Caption = "Пример"

Page 64: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

64

Тази конструкция присвоява "Пример" на свойството Caption на последно създаденияобект от формата.

Въпреки че можете да се обръщате към обектите на една колекцияиндивидуално, най-полезня начин да работите с тях е на групи.Например може да ви сеналожи да едновременно да преместите или промените размера на всички обекти вдадена колекция.За тези задачи най удачно е да се използва конструкцията ForEach....Next.

For Each....Next

С негова помощ можете последователно да обходите обектите в даденаколекция.For Each....Next конструкцията е подобна на For...Next.Използването и ставапо следния начин:

For Each Control In FormName.Controls обработка на обектитеNext Control

Control e променлива , представляваща текущия обект в колекцията, FormName еимето на формата.

Следващия пример премества едновременно група обекти от лявата в дяснатачаст на формата.Понякога определени обекти в програмата имат нужда да бъдатпрескачани или да изпълняват различни се притиа свойството им Tag.В следващотоупражнение ще разгледаме и него.

В програмата ще са ни нужни 4 Image (Изображение) и 1 CommandButton (команденбутон).

Page 65: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

65

Image (Изображение) e обект използван за визуализиране наизображение във форми.Стандартното име на елемента Image e Image1.Ето и някои по важни свойства на елемента:

Picture - съхранява графичното изображение ,което се визуализира.Чрез него отProperties List можете да изберете изображението, което ще севизуализира.Също така можете да направите това чрез код по следния начин:

ImageName.Picture = LoadPicture("Пътя към изображението")

Strech - възможните му стойностти са True и False.Това свойство включва иизключва възможностите за автоматично разпъване или свиване наобекта.Можете да го използвате както чрез кода така и от Properties List.

Използваните в задачата изображения веднъж заредени остават в програматакато част от нея.Както сте забелязали използваните в задачата изображения нямат пъткъм фаила.Вие можете да си изберете различни .

Private Sub Command1_Click()

For Each Ctrl In Controls If Ctrl.Tag <> "Button" Then Ctrl.Left = Ctrl.Left + 200 End If Next Ctrl

End Sub

Page 66: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

66

Всеки път когато потребителя натисне бутона Премести цикъла For Each ...Next обхожда обектите и премества колекцията Controls с 200 туипа на надясно.Впрограмата ни има и една конструкция If...Then ,която проверява дали свойството Tagна контролите е присвоена стойността "Button" .И ако да то да прескача обекта.По тозиначин можете да въведете отделите някое от изображенията и да го местите с различнаскорост.Пробвайте се да преместите само средните две изображения.

Tag - Това свойтсво ви дава възможниост да идентифицирате обектите,нуждаещи се от специално отношение.

Page 67: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

67

Задачи:

Задача 1

Напишете програма ,съдържаща 2 CommandButton (командни бутона) , и 4Image (Изображения).Изберете файловете използвани при изображенията по вашизбор.Като при избиране на първия бутон да се премества първото изображение.А принатискане на втория бутон останалите три изображения да се преместват впротивоположната страна на първото изображение.

Задача 2

Напишете програма ,която съдържа 4 Image ( Изображения ) и 1CommandButton ( командни бутона ).Четирите изображения да съдържат стойносттаFalse за функцията Visible.При избиране на бутона да се четирите изображения да сепоявят.

Page 68: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

68

Урок 10- Текстови фаилове -

Page 69: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

69

За да покажете текстов файл в една програма най лесния начин е с текстовополе.Този обект може да бъде създаван в различни размери.А когато текста не севмести в полето , автоматично се добавят ленти за скролиране.За да се заредитетекстовия фаил в дадено текстово поле ще ви се наложи да използвате някоиконструкции.

Ключова дума ОписаниеOpen Отваря тексовия фаил.Line Input Прочита ред от тексовия файлEOF Проверява за край на текстовия файлClose Затваря текстовия фаил

Текстов файл

Текстов файл се състои от един или повече редове от от числа ,думи изнакове.Текстовите файлове са различни от документите, съдържатщи кодове заформатиране, и от изпълнимите файлове , които съдържат инструкции заоперационната система.Windows разпознава като текстови документи файлове имащиразширение *.txt , *.bat ,*.dat , *.ini.Тъй като тексовите файлове съдържат обикновеннисимволи , лесно можете да ги визуализирате в текстовото поле.

Конструкция Open

Синтаксис:

Open pathname For mode as #filenumber

Ето и обяснения за по важните аргументи:• PathName - път към името на файла.• Мode - тази ключова дума показва как ще бъде използван файла ( за сега ще

използваме Input и Output)• FileNumber - цяло число от 1 до 255.

Номерът на файла ще бъде асоцииран с файла , когато последният бъдеотворен.След това в кода си ще го използвате винаги когато искате да се обърнете къмфайла.

Една типична конструкция:

Open (App.Path & "\test.txt") For Input As #1

Page 70: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

70

App.Path

Taзи конструкция се използва за дефиниране на папката в която се намирапрограмата.Така че при смяна на мястото на проекта няма нужда да сменяте пътякъм папката.Използва се при всички обекти използващи файлове.Например акопапката в която се намира програмата е "C:\Programa\" то App.Path ще присвои"C:\Programa\" след това ще ви се наложи да напишете името на файла:

App.Path & "\test.txt"

Ето и примерна програма използваща горните конструкции:

Private Sub Form_Load()Open (App.Path & "\test.txt") For InputAs #1Do Until EOF(1)Line Input #1, lineoftext$alltext$ = alltext$ & lineoftext$ & Wrap$LoopText1.Text = alltext$End Sub

Тази процедура извършва следните действия:

• Отваря файла (App.Path & "\test.txt") за вход• Копира файла ред по ред в низ ,наречен alltext$ (Line Input)• Копира редове , докато се достигне края на файла (EOF) или докато свърши

мястото в низа.Низът alltext$ има място за 64Килобайта знакове.• Показва низа alltext$ в текстовото поле и разрешава използването на лентите

за скролиране.

Нека сега се опитаме да създадем текстов файл.Ще използваме някои отконструкциите , които използвахме в миналата програма.Този път ще използвамеOutput type за файлове ( Open....For Output ).След това ще използваме конструкциятаPrint # ,за да запишем една или повече стойностти в отворения файл( Print # ).Следтова ще затвориме файла с Close.

Page 71: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

71

Private Sub Command1_Click()Open (App.Path & "\test1.txt") For Output_As #1Print #1, Text1.TextClose #1End Sub

Методът Print # е подобен на Print , с тази разлика ,че насочва изхода къмопределен файл , а не към екрана или принтера.Print # в случая съхранява текставъведен в Text1.Text.Ако зададеното име на файла съществува то тогава файла ще бъдеизтрит и на мястото му ще бъде създаден нов.

Page 72: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

72

Задачи :

Задача 1

Напишете програма , която да може да отваря файл по въведен път отInputBox.

Задача 2

Напишете програма ,която да може да запазва файл по въведен път отInputBox.

Задача 3

Съединете двете програми като запазването на файл и отварянето му да ставаот отделно меню в горния ляв ъгъл.

Page 73: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

73

Урок 11- Обработка на низове

Page 74: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

74

В миналия урок се запознахме с отварянето , редактирането и записване натекстови файлове.Освен тези конструкции Visual Basic предоставя функции иконструкции за обработка на текстови елементи.

Конструкции за обработка на низове:

Най често ще ви се налага да конкатенирате(слепвате) низове чрез символа&.Например следващия пример съединява три незначещи нищо сами по себе си изразии присвоява резултата на друга низови променлива.

Primer$ = "Това" & " е тестова " & "конструкция"

Низовите изрази могат да модифицират и чрез използването на някоиконструкции в програмния код.Следващата таблица представя най - важните ключовидуми:

Ключовадума Описание Пример

Ucase Променя знаковете на низа само на големибукви

Ucase("Kim")връща KIM

Lcase Променя знаковете на низа само на малкибукви

Lcase("Kim")връща kim

Len Определя дъжината (в знакове) на низа Len("Всичко")връща 6

Right Връща точен брой знакове от дясната странана низа

Right("Budapest",4)връща pest

Left Връща точен брой знакове от лявата странана низа

Left("Budapest",4)връща Buda

Mid Връща точен брой знакове от средата на низа Mid("Budapest",4,3)

Page 75: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

75

при зададена начална точка. връща ape

InStr Намира началната точка на даден низ в по-голям такъв.

Start% = InStr("bob", "bobby")връща 1 на променливатаStart%

String Съставя низ от знакове String(8,"*")връща ********

Asc Връща ASCII кода на определен знак ASC("A")връща 65

Chr Връща знака на определен ASCII код Chr(65)връща А

Xor

Извършва операция "изкючващо или " на двечисла , връщайки стойност , която може да сеизползва за криптиране и декриптиране натекст.

65 Xor 50връща 115115 Xor 50Връща 65

Какво е ASCII

За да може Visual Basic да сравнява един знак с друг при сортиране присортиране , трябва да конвентира всеки от тях в число ,използвайки ASCII код(известна и като ANSI) .ASCII е съкращение на American Standart Code (for)Information Interchange.Всеки символ ,който може да се изобрази има своето място втаблицата.ASCII включва основните знакове на "пишещата машина(кодове от 32 до127).Например буквата "a" отговаря на кода 97 , а "А"- 65.Като се има предвид че тезибукви са от латинската азбука докато "А" на кирилица е на съвсем различно място.

За да определите ASCII кода на дадена буква трябва да използвате функциятаASC. Например следващата конструкция присвоява 112 на променливата ASCCODE%:

ASCCODE% = Asc ("z")

Обратно , можете да конвертирате чрез функцията Chr .

Letter$ = Chr(112)

Същия резултат би се получил ако използвате дефинираната по горе променливаASCCODE%.

За да сравните два низа просто трябва да използвате операторите за сравнение:

Оператор Значение<> Различно= Равно< По малко от> По голямо от<= По малко или равно на>= По голямо или равно на

Page 76: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

76

Даден знак е "по голям" ,ako ASCII кода му е по висок.Например:"А" < "B"

защото буквата "B" е равна на 66 ,докато "А" е 65 поради това изразът "А" >"B" би билгрешен.

Когато се сравняват два низа , всеки съдържащ повече от един знак, VisualBasic сравнява докато намери разлика в низовете.Тоест първо сравнява първитезнакове и ако те са еднакви продължава на вторите , и така продължава докато намериразлика.Например низовете Mike i Michael са еднакви до третия знак ("k" и "c").Тъйкато ASCII кода на "k" е по голям то изразът ще изглежда по следния начин:

"Mike" > "Michael"

Ако пък не бъдат открити разлики между двата низа и дължините им са равнито значи те са равни, ако ли не то тогава за по голям се смята по дългия низ.

Следващата програма нагледно ще покаже използването на ASCII кода.За нея ще ви санужни 4 Label (етикет).

Private Sub Form_KeyPress(KeyAscii AsInteger)Label1.Caption = KeyAsciiLabel2.Caption = Chr(KeyAscii)End SubPrivate Sub Form_Load()Label3.Caption = "Натиснахте:"Label4.Caption = "Кода е"End Sub

Page 77: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

77

За първи път тук използваме различно действие на форма.Можете да го изберетеселектирайки Declaration прозореца от Code Editor и изберете KeyPress . Като разбирасе първо е нужно да изберете Form1 от Object прозореца.Тази процедура се извършваконструкцията намираща се в нея при натискане на бутон като присвоява ASCII кодана натиснатия бутон на променливата KeyAscii.Останалото вече сме говиждали.Присвояваме стойностти на функцията Caption на обектитеLabel.Единственото , което изисква повече внимание е следния ред Label2.Caption =Chr(KeyAscii) .Той визуализира знака на натиснатия бутон в Label2, използвайкиключовата дума Chr ,която връща знака на определен ASCII код.

Page 78: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

78

Daners Publishing Co.

Автори:

Ерсой Маджит Хасан - програмист

Даниел Илиев Георгиев - дизайнер

За контакти :http://lvbv.hit.bg

Page 79: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

79

Page 80: Learning Visually - Datastore3.data.bg/qlayer/Tarkan/LVBV1.pdfУрок 8 Обекти за файлова система и работа с форми 59 стр. Урок 9 Работа

80