Переменная представляет собой тип данных для которых резервируется место в оперативной памяти для временного хранения данных. Каждая переменная имеет собственное имя. После того как переменной присвоено значение, вы можете использовать ее в программе вместо самого значения.
Имена переменных
Для того чтобы сделать ваши переменные более наглядными и простыми для чтения, рекомендуется давать им имена, имеющие определенное смысловое значение. Существует несколько правил задания имен переменных;
- имя переменной может содержать не более 255 символов;
- имя переменной может содержать любые буквы и цифры;
- первый символ в имени переменной должен быть буквой;
- в имени переменной должны отсутствовать пробелы;
- имя должно быть уникальным в пределах области видимости.
Список ограничений достаточно велик, чтобы знать его наизусть, но вам всегда поможет проверка синтаксиса программы, при выполнении которой будет указано на использование недопустимых имен.
Например, допустимы следующие имена переменных:
CurrentNum, Total, Date_of_birth
Следующие имена недопустимы:
1Time, $Total, Date of birth
В последнее время в наименованиях переменных рекомендуется использовать префиксы, отражающие тип переменной. При таком обозначении переменных повышается читабельность программы и снижается количество ошибок программирования. Префиксы отражают тип переменной и область ее действия. С конкретными значениями префиксов вы познакомитесь в разделах, посвященных типам данных и области действия переменной.
Типы данных
В Visual Basic вы можете применять следующие типы данных:- числовой (integer, Long, Single, Double, Currency);
- строковый (String);
- типа дата (Date);
- байтовый (Byte);
- логический (Boolean);
- произвольный (variant);
- объектный (object).
Для хранения чисел в Visual Basic используется пять разных типов данных. Для хранения целочисленных данных предназначены типы integer и Long. Первый из них служит для хранения целых чисел в диапазоне от —32768 до 32767 и занимает в оперативной памяти два байта.
Для хранения больших целочисленных значений в диапазоне от —2 147483648 до 2 147483648 следует выбрать тип данных Long. В этом случае для хранения переменной выделяется 4 байта. Аналогично, для хранения десятичных чисел с плавающей точкой предназначены типы данных single и Double.
Переменная с типом данных single занимает 4 байта и может принимать значения в диапазоне -3,4^38 ... -1,4^-45 для отрицательных чисел и 1,4^-45 ... 3,4^38 для положительных чисел. Если этого диапазона вам недостаточно, используйте десятичные числа с плавающей точкой двойной точности, определяя для них тип данных Double.
В этом случае переменной выделяется 8 байтов, которых достаточно для хранения чисел в диапазоне -1,7^-308 ... -4,9^-324 для отрицательных чисел и 4,9^-324 ... l,7^+308 для положительных чисел. Для хранения чисел с фиксированной точкой служит тип currency. Переменная данного типа занимает в оперативной памяти 8 байт. Целая часть числа может содержать до 15 цифр, а дробная — до 4.
Используя переменные строкового типа, вы можете хранить строки как фиксированной (до 216 символов), так и переменной длины (до 231 символов). Для переменной, имеющей тип строки с фиксированной длиной, ука зывается максимальная длина строки.
Если длина строки, присваиваемая этой переменной, меньше заданной длины строки, то оставшиеся свободные места заполняются пробелами. При присвоении переменной строки, количество символов которой превышает максимальное значение, все лишние символы отбрасываются.
Количество символов, хранящихся в строке с переменной длиной, определяется длиной присваиваемых ей данных. При использовании ASCCII кодировки для каждого символа строки выделяется один байт, а при использовании кодировки Unicode — два байта. Кроме этого выделяется 10 байт для строки в целом.
Для хранения двоичных данных рекомендуется использовать массив переменных типа Byte. Каждый элемент массива данного типа занимает один байт оперативной памяти.
Логический тип данных Boolean используется для хранения данных, принимающих одно из двух значений: True (Правда) или False (Ложь). По умолчанию переменной данного типа присваивается значение False. В оперативной памяти она занимает два байта.
Тип данных Date используется для хранения даты и времени. Переменная этого типа требует 8 байт в оперативной памяти.
Тип данных Variant является универсальным. Переменная этого типа может хранить любой из выше описанных типов данных. Все необходимые преобразования выполняются при присвоении переменной значения. Выделяемый переменной объем оперативной памяти зависит от типа присвоенного значения, но не может быть менее 16 байт.
Для хранения ссылок на объекты используется тип данных object. Каждая переменная данного типа требует 4 байта.
При разработке программ в среде Visual Basic в зависимости от типа данных переменных рекомендуется использовать префиксы, приведенные ниже
Префиксы, используемые в наименованиях переменных.
Тип данных | Префикс | Пример |
Boolean | bin | bInSuccess |
Byte | byt | bytImage |
Currency | cur | curPrice |
Date | dtm | dtmFinish |
Double | dbl | dblSum |
Integer | int | intQuantity |
Long | Ing | IngTotal |
Single | sng | sngLength |
String | str | strLastname |
Variant | vnt | vntValue |
Объявление переменной
В Visual Basic используется явное и неявное объявление переменной. Явное объявление осуществляется операторами Dim, private, Static, public, которые имеют следующий синтаксис:
Dim имяПеременной [As типДанных]
Private имяПеременной [As типДанных]
Static имяПеременной [As типДанных]
Public имяПеременной [As типДанных]
Операторы Dim, Private, static, public определяют область действия переменной. С помощью одного оператора вы можете объявлять несколько переменных, разделяя их запятыми. Примеры объявления переменных приведены ниже:
Private bInSuccess As Boolean
Dim strLastname As String, dblSum As Double
Большинство строк, с которыми приходится работать в Visual Basic, являются строками переменной длины, то есть они могут иметь длину до 2 Гбайт. Длина такой строки изменяется при присвоении ей нового значения. Но в Visual Basic существуют и строки с фиксированной длиной.
Их длина остается неизменной независимо от присвоенного ей значения. Если такой переменной присваивается значение, меньшее объявленной для нее длины, то оставшаяся часть переменной заполняется пробелами. При присвоении значения, превышающего длину строки, она усекается до размера переменной.
Для объявления строки с фиксированной длиной используется следующий синтаксис:
Dim имяПеременной As String * длинаПеременной
Параметр длинаПеременной указывает максимальное количество символов, отводимое переменной. Символ звездочки (*) указывает на то, что переменная имеет фиксированную длину.
Предпочтительнее использовать явное объявление переменных, поэтому рекомендуется установить такой режим трансляции программы, при котором допускается только явное объявление переменных. Для этого необходимо в начало модуля вставить оператор option Explicit (Явное объявление).
Для автоматического добавления во все модули данного оператора в окне про граммы Visual Basic выполните команду Options (Параметры) меню Tools (Сервис). Откроется диалоговое окно Options, на вкладке Editor (рис. 5.1) которого установите флажок Require Variable Declaration.
Диалоговое окно Options
Если вы не разместили в модуле оператор Option Explicit, можете использовать неявное объявление переменной. В этом случае тип переменной определяется при первом операторе присвоения, и в этот же момент переменной будет выделена память. Если вы не используете специальные концевые символы, определяющие тип переменной, ей будет присвоен тип variant.
Область действия переменных
При выполнении программы принципиальное значение имеет область действия выбранных переменных. Попытка использования переменных, которые не действуют в данном месте программы, приводит к ошибке программирования или же к неоднозначности результатов.
В Visual Basic можно применять глобальные и локальные переменные. Глобальные переменные доступны из любой части программы. Для локальных переменных можно задавать область действия в рамках всего модуля или отдельной процедуры.
Присваивая имена переменным с учетом области ее действия, придерживайтесь следующего формата:
Область действия переменной
Префикс
Пример
Глобальная
g
gdtmFinish
Локальная внутри модуля
m
msngLength
Локальная внутри процедуры
нет префикса
strLastname
Для создания переменной, которую вы хотите определить в качестве глобальной, в раздел General Declarations главного модуля приложения поместите оператор public. Например:
Public gdtmFinish As Date
Для объявления переменной, локальной внутри модуля или формы, используйте оператор private или Dim в разделе General Declarations модуля или формы (рис. 5.2). В этом случае объявленная переменная будет доступна для всех входящих в форму или модуль процедур, но в то же время недоступной в процедурах других модулей и форм.Ниже дан пример объявления переменных, локальных на уровне модуля
Переменные, локальные на уровне процедуры, создаются операторами Dim или static внутри процедуры. Например:
Sub CalcTotal
Dim bSuccess As Boolean
. . .
End Sub
Присвоение значения переменной
Прежде чем использовать переменную в программе, ей необходимо присвоить значение. Самый простой способ присвоения заключается в использовании оператора присвоения "=", который имеет следующий синтаксис:
переменная = выражение
Аргумент переменная задает имя переменной, которой будет присвоено значение выражения, стоящего справа от знака равенства. Например:
sngFirst = 10
strLastname = "Иванов"
Справа от знака равенства может стоять не только константа, но и более сложное выражение. Например:
sngResult = sngFirst + 255
strName = "Иванов" & ": " & strTeam
Особенности использования переменных типа Variant
Переменную типа variant можно использовать для хранения всех типов данных и выполнять операции, не заботясь о типе данных, в них содержащихся. Необходимо только помнить о двух исключениях. Во-первых, выполнять арифметические операции или функции над переменной типа variant можно только в том случае, если она содержит числовое значение. Во-вторых, конкатенацию строк следует осуществлять с помощью оператора "&" вместо оператора "+".
Переменные типа variant могут содержать специальные значения Empty, Null или Error
Значение Empty
До присвоения значения переменной типа variant ее значение отлично от О, пустой строки или значения Null и именуется Empty. Для определения значения Empty можно использовать функцию isEmpty:
If IsEmpty(x) Then x = 0
Замечание
Переменная типа variant имеет значение Empty только до первого присвоения ей какого-либо значения.
Значение Null
Переменная типа variant может иметь значение Null, используемое для указания пустых данных в приложениях, работающих с базами данных.
С помощью функции isNull можно проверить, имеет ли переменная типа variant значение Null:
If IsNull(x) Then
у = Null
Else
у = 0
End If
Для присвоения переменной типа variant значения Null можно использовать ключевое слово Null:
у = Null
Предупреждение
Присвоение значения Null переменной, не имеющей типа variant, приведет к ошибке.
При работе с переменной типа variant, имеющей значение Null, необходимо иметь в виду следующее:
если в выражении содержится переменная, имеющая значение Null, то само выражение принимает значение Null;
при использовании в качестве параметра функции переменной, имеющей значение Null, большинство функций возвращает значение Null.
Значение Error
Переменная типа variant может принимать значение Error при возникновении ошибки в процедуре. Однако в этом случае на уровне приложения ошибка не обрабатывается, что позволяет программисту в зависимости от ее значения предпринимать определенные действия.
Внутреннее представление значений
Переменная типа variant поддерживает внутреннее представление хранящихся в ней данных. При присвоении значения переменной типа variant Visual Basic применяет наиболее компактное представление этого значения. Например, если переменной типа variant присвоено небольшое числовое значение без дробной части, то используется представление integer, если хранится дробное число — используется внутреннее представление Double.