Змінні Visual Basic
Змінні - це важлива складова кожної мови програмування. Вони є щось ніби невеликого контейнера з певним вмістом, наприклад символами або числами. Цьому контейнеру привласнюється ім'я, тобто ім'я змінної. Щоб послатися на вміст, досить вказати ім'я змінної.
Така інформація про змінних - всього лише вершина айсберга, оскільки про них можна говорити багато. У даному розділі описані області визначення і видимості, час життя змінних, константи і типи даних, визначувані користувачем.
Явне і неявне оголошення
Про можливості явного і неявного оголошення змінних стисло згадувалося в першому розділі. Visual Basic не вимагає обов'язкового явного оголошення змінних. При неявному оголошенні змінні просто використовуються в програмі, при явному вони заздалегідь повинні бути визначені (наприклад, за допомогою оператора Dim). Невеликий приклад демонструє обидва варіанти:
1. Dim varname As String 'явне оголошення
2. var = 7 'неявне оголошення
Раніше було підмічено що, явне оголошення має деякі переваги: воно наочніше, покращує читабельність програми і тому подібне
Option Explicit
Щоб змінні завжди оголошувалися явно, використовуйте опцію Explicit. В цьому випадку Visual Basic вимагатиме явного оголошення змінних, що усуває можливі помилки при написанні програми:
Раніше було підмічено що, явне оголошення має деякі переваги: воно наочніше, покращує читабельність програми і тому подібне
Option Explicit
Щоб змінні завжди оголошувалися явно, використовуйте опцію Explicit. В цьому випадку Visual Basic вимагатиме явного оголошення змінних, що усуває можливі помилки при написанні програми:
Dim varName As String ' явне оголошення
var = 7 ' неявне оголошення
Як вже мовилося, явне оголошення має деякі переваги: воно наочніше, покращує читабельність програми і тому краще.
Option Explicit
Щоб змінні завжди оголошувалися явно, використовуйте опцію Explicit. В цьому випадку Visual Basic вимагатиме явного оголошення змінних, що усуває можливі помилки при написанні програми:
Dim Variable As Variant
Variable = 10
Variable = Variabel * 5 'рядок з помилкою
Print Variable
У даному прикладі змінна Variable визначена явно. Але в третьому рядку допущена помилкака, яка приведе до того, що замість значення 50 буде виведено значення 0. Причина в тому, що змінна Variabel (помилково вказана замість Variable) неявно оголошується Visual Basic як нова змінна типу Variant, що виключається при використанні Option Explicit.
Для активізації цієї опції слід відкрити діалогове вікно Options (команда меню Tools\0ptions...) і на вкладці Editor встановити опцію Require Variable Declaration. В результаті у всі новостворювані компоненти (форми, модулі, класи) автоматично вставляється рядок Option Explicit. Але це не виконується для створених раніше компонентів застосування: форм, модулів або класів. Для вирішення цієї проблеми необхідно уручну додати рядок Option Explicit в секцію (General) (Declarations) існуючих форм, модулів або класів.
Після установки цієї опції Visual Basic вимагає явного опису змінних і при використанні в коді неоголошеної змінної видасть повідомлення про помилку компіляції. Видалення вказаного рядка вирішить неявне оголошення змінних.
Типи даних
При оголошенні змінних може вказуватися тип даних. Це виконується за допомогою оператора Dim:
Dim Ім`я_змінної As Тип_даних
Ім`я_змінної задається з урахуванням деяких обмежень: воно повинне починатися з букви; не може містити більше 255 символів; окрім букв і цифр дозволяється використовувати тільки знак підкреслення (_). Замість Тип_данних указується ключове слово для даних відповідного типу. При цьому дозволені типи, приведені в таблиці.
Оператор |
Тип даних, що підрозумівається |
DefBool |
Boolean |
Оператори визначення
типів даних |
Dim A As Byte
Dim B As Integer, С As Long
У даному прикладі використовуються різні оголошення. Оператор Dim дозволяє оголошувати декілька змінних, але для кожної з них слід вказати тип даних. Якщо для змінної не вказаний явний тип даних, Visual Basic привласнює їй тип Variant:
Dim А, В As Byte
Dim С, D As Integer
В даному прикладі змінним А і C привласнюється тип Variant, B - тип Byte, а D - тип Integer.
Щоб Visual Basic не задавав тип Variant змінної, оголошеної без вказівки типу даних, можна використовувати оператора виду Deftype. Замість type указується певний тип даних.
Оператор |
Тип даних, що підрозумівається |
DefBool |
Boolean |
Оператори визначення
типів даних |
Оператори, приведені в таблиці, можна використовувати тільки в секції оголошення General Declarations.
Defint A - Z
Dim A, B As Byte
Dim С, D As Long
У другому рядку визначається, що всі змінні, не оголошені явно і що починаються з будь-якої букви в діапазоні від А до Z, за умовчанням матимуть тип Integer. Таким чином, в прикладі змінні B і D мають відповідно типи Byte і Long, а змінні А і C - тип Integer.
Застосування оператора Deftype зменшує кількість помилок при використанні типу даних Variant.
Ідентифікатори типів
Вказувати тип даних при оголошенні не обов'язково. Тип даних при оголошенні може встановлюватися просто додаванням знаку типу до імені змінної.
Тип
змінної |
Ідентифікатор |
Integer |
% |
Ідентификатори
типів |
He всі типи даних мають в своєму розпорядженні власні знаки. Використання цих знаків Microsoft більше не рекомендує, і вони є в Visual Basic тільки для сумісності з попередніми версіями.
He всі типи даних мають в своєму розпорядженні власні знаки. Використання цих знаків Microsoft більше не рекомендує, і вони є в Visual Basic тільки для сумісності з попередніми версіями.
Типи даних, визначувані користувачем
Окрім вбудованих типів даних, таких як Integer, Long і тому подібне. Visual Basic підтримує також типи даних, визначувані користувачем. Вони можуть бути створені як на основі вбудованих типів даних, так і на основі раніше визначених користувачем.
Для визначення призначеного для користувача типу даних використовується ключове слово Type:
[Private | Public] Type Ім`я_типу
Елемент1 [Розмірність] As Тип
[Елемент2 [Розмірність] As
Тип]
End Type
Визначення загального (Public) власного типу даних можливе тільки в секції General Declarations модуля. В цьому випадку цей тип буде доступний у всіх процедурах всіх форм, модулів і модулів класів. Для визначення призначеного для користувача типу даних у формі або модулі класу слід використовувати ключове слово Private, оскільки оголошення загального типу в даній ситуації не допускається. При цьому область видимості такого типу буде обмежена тим контейнером, де він оголошений.
Визначивши власний тип даних, ви можете використовувати його для оголошення змінних цього типу. Ці змінні можуть бути локальними, глобальними або змінними контейнера.
Доступ до елементів змінної призначеного для користувача типу здійснюється, по аналогії з доступом до властивостей, шляхом вказівки крапки після імені змінної. При цьому змінні однакового типу можна привласнювати не поелементно, а безпосередньо:
Type usrPerson
Name As usrName
Number As Integer
End Type
Public usrCustomer
As usrPerson, usrSupplier As usrPerson
Private Sub Command1_Click()
usrSupplier.Name =
"Olga"
usrSupplier.Number = 21873
usrCustomer = usrSupplier
End Sub
Змінні usrsupplier і usrcustomer відносяться до одного типу usrperson. Тому вони привласнюватися безпосередньо, а не поелементно.
Призначені для користувача типи даних можуть бути складеними. В цьому випадку важлива послідовність визначення типів. Спочатку потрібно визначити базисний тип, який використовуватиметься далі в складених типах. Якщо не дотримувати це правило, то після запуску програми з'явиться повідомлення про помилку.
Константи
Основна відмінність констант від змінних полягає в тому, що їх значення не можна змінювати в процесі виконання програми. Вони завжди зберігають значення, привласнене при розробці. Області видимості для констант визначаються так само, як і для змінних. Константи бувають локальні, контейнера і глобальні.
При оголошенні констант використовується ключове слово Const. Глобальна константа оголошується як Public; при цьому необхідно мати на увазі, що глобальні константи можна оголошувати тільки в модулі.
[Public | Private] Const Імя_константи = Значення
Одночасно з оголошенням константі привласнюється і значення. Як значення допускається використовувати тільки постійні значення і їх комбінації, включаючи арифметичних і/або логічних операторів, але не функції.
Const Pi = 3.1415926535897932 Const Durability = 12.25 Public Const nname = "Conni Mauser"
Константи можна оголошувати і з вказівкою типу даних:
[Public | Private] Const Ім`я_константи As Тип_данних = Значення
Для вказівки типу даних використовуються ті ж ключові слова, що і при оголошенні змінних:=/p>
Const Pi As Single = 3.1415926535897932 Const nname As String = "Alexandra Kravetz" Public Const nnamephotographie As String * 10 = "Phedon"
У даному прикладі константи задаються з явною вказівкою типу даних.
Область визначення
Дуже важливою характеристикою змінних є область їх визначення. У Visual Basic є три види областей визначення, що характеризують доступність змінної:
локальна: змінна доступна тільки в поточній процедурі
контейнерна: змінна доступна тільки в поточній формі, модулі або класі;
глобальна: змінна доступна у всьому проекті.
Локальні змінні
Локальними є змінні, визначувані усередині процедури або функції. Вони доступні тільки усередині цієї процедури.
Змінні контейнера
Змінні контейнера визначаються в секції General Declarations і доступні тільки усередині відповідного контейнера, тобто форми, модуля або класу.
Глобальні змінні
Глобальні змінні визначаються в секції General Declarations модуля. При цьому замість оператора Dim використовується зарезервоване слово Public. Глобальні змінні доступні у всіх модулях і процедурах проекту.
Термін глобальна походить із старих версій Visual Basic, де замість слова Public використовувалося Global. Але починаючи з п'ятої версії Visual Basic, зарезервоване слово Global в цьому контексті більше не використовується.
Час життя змінних
Локально оголошені змінні при виході з процедури віддаляються з пам'яті, а при новому виклику процедури ініціалізувалися наново. Їх вміст при цьому не зберігається, що не завжди бажано. Цього можна було б уникнути шляхом розширення області визначення, тобто оголосивши змінну глобальної або, як мінімум, змінній контейнера. Але це вирішує доступ до змінній з інших процедур.
Статичні змінні
Visual Basic дає можливість оголошувати змінні як статичні. При виході з процедури вміст статичної змінної зберігається. При новому виклику цієї процедури змінної привласнюється значення, яке вона мала при останньому виході з цієї процедури. Вміст змінної зберігається протягом всього часу, поки існує в пам'яті форма або модуль.
Для оголошення змінній як статичною потрібно просто замість оператора Dim використовувати слово Static:
Private Sub Command1_Click()
Static A As
Integer
Dim В As Integer
A = A + 1
В = В + 1
Print A
Print В
End Sub
Статична змінна А при кожному клацанні на кнопці Command1 збільшується на одиницю. Нестатична змінна в при кожному клацанні ініціалізувався наново, тому її значення при виході завжди буде рівне 1.
Щоб оголосити статичними всі локальні змінні прочедури, слід записати ключове слово Static в заголовку процедури:
Static Sub Test () Dim А, В As Integer End Sub
У прикладі обидві змінні - А типу Variant і B типу Integer - будуть статичними.