Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Основы программирования в Visual Basic 2008
Переменные
Переменная представляет собой зарезервированное место в оперативной памяти для временного хранения данных. Каждая переменная имеет собственное имя. После того как переменной присвоено значение, вы можете в программе вместо самого значения использовать эту переменную.
Имена переменных
Для того чтобы сделать переменные более наглядными и простыми для чтения, рекомендуется давать им имена, имеющие определенное смысловое значение. Правила задания имен переменных:
имя переменной должно содержать не более 255 символов;
имя переменной может содержать любые буквы латинского алфавита, цифры и символ подчеркивания;
первый символ в имени переменной должен быть буквой или символом подчеркивания;
в имени переменной должны отсутствовать пробелы и знаки пунктуации;
имя должно быть уникальным внутри области видимости;
имя не должно являться ключевым словом, например, Print.
Замечание
Список ограничений достаточно велик, чтобы знать его наизусть, но вам всегда поможет проверка синтаксиса программы, при выполнении которой будет указано на использование недопустимых имен. Например, допустимы перечисленные ниже имена переменных:
CurrentNum, Total, Date_of_birth
Следующие имена недопустимы:
2Time, $Total, Date of birth
Типы данных
Основные типы данных Visual Basic приведены в табл. 2.1.
Таблица 2.1. Типы данных Visual Basic
Тип данных |
Занимает в памяти |
Значение |
Что хранит |
Boolean |
Различно |
True, False |
Логические значения |
Byte |
1 байт |
От 0 до 255 (без знака) |
Двоичные числа |
Char |
2 байта |
Один символ |
Один символ (кодировка Unicode) |
Date |
8 байтов |
Дата от 1 января 0001 года до 31 декабря 9999 года и время от 0:00:00 до 23:59:59 |
Значения даты и времени |
Decimal |
16 байтов |
Без десятичной запятой: от -79 228 162 514 264 337 593 543 950 335 до +79 228 162 514 264 337 593 543 950 335 С десятичной запятой (28 знаков после запятой): от-7,9228162514264337593543950335 до+7,9228162514264337593543950335 Наименьшее ненулевое значение (+1Е-28): +0,0000000000000000000000000001 |
Число с фиксированной запятой |
Double |
8 байтов |
Отрицательные числа от -1,79769313486231570Е308 до 4,94065645841246544Е-324; положительные числа от 4,94065645841246544Е-324 до 1,79769313486231570Е308 |
Числа с плавающей запятой двойной точности |
Integer |
4 байта |
От -2 147 483 648 до 2 147 483 647 |
Целые числа |
Long |
8 байтов |
От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 |
Целые числа |
Object |
Различно |
В переменной типа Object могут храниться значения любого типа |
Ссылка на объект |
SByte |
1 байт |
От-128 до 127 |
Целые числа |
Short |
2 байта |
От -32 768 до 32 767 |
Целые числа |
Single |
4 байта |
Отрицательные значения от -3.4028235Е38 до -1.401298Е-45; положительные значения от 1.401298Е-45 до 3.4028235Е38 |
Числа с плавающей запятой |
String |
Различно |
От 0 приблизительно до 2 миллиардов символов в кодировке Unicode |
Текст |
Ulnteger |
4 байта |
От 0 до 4 294 967 295 (без знака) |
Целые числа |
ULong |
8 байтов |
От 0 до 18 446 744 073 709 551 615 (без знака) |
Целые числа |
UShort |
2 байта |
От 0 до 65 535 (без знака) |
Целые числа |
Переменная типа данных Boolean может принимать только два значения: True и False. При переводе числовых данных в логические значения 0 становится False, а остальные значения True. Когда логические значения переводятся в числовые, False становится 0, a True 1. По умолчанию переменной типа Boolean присваивается значение False. Названия типов, указанных в табл. 2.1, являются псевдонимами для типов, определенных в пространстве имен System. Так, тип integer является псевдонимом для типа System. Int32, а тип string является псевдонимом для типа system.string. Псевдонимы полностью эквивалентны типам, объявленным в пространстве System.
Для хранения двоичных чисел используется переменная или массив данных типа Byte.
Для текстовой информации предназначены переменные типов char и string. Первый из них хранит один символ в кодировке Unicode, а второй строку от 0 до примерно 2 млрд символов {строкой называют последовательность символов, заключенную в кавычки). Переменная типа string является ссылкой на строку. Символы в строке не могут быть изменены, может быть изменена только ссылка на нее, что следует учитывать при написании программы.
Переменные типа Date хранят значения даты и времени. Значение даты должно заключаться между знаками # и быть в формате "месяц/день/год", например #5/31/1993#. По умолчанию переменные типа Date инициализируются значением 12:00 1 января 0001 года. Для перевода значения типа Date в переменную строкового типа используется функция Format, которая имеет следующий синтаксис:
Function Format(ByVal Expression As Object, Optional ByVal Style As String = "") As String
где:
Expression выражение, которое необходимо привести к строковому типу;
style используемый при переводе к строковому типу формат (например, "dddd, ммм d yyyy" и "Long Date"). Если параметр не указан, дата представляется в наиболее коротком формате, распознаваемом компьютером, а время в формате (12-часовом или 24-часовом), действующем на компьютере.
Следующие строки демонстрируют использование функции Format:
Format(Now(), "Long Time")
Format (Now() , "dd.MM.yy hh:mm")
Для хранения целых значений используются переменные типа short, integer и Long для знаковых чисел и ushort, uinteger и ULong для беззнаковых. Переменные типов short и ushort занимают меньший объем памяти, но вычисление формул, содержащих данные типа integer, происходит быстрее, чем формул, содержащих данные других целых типов.
Для чисел с дробной частью предназначены типы данных Double и Single, которые хранят числа с плавающей запятой, т. е. числа, представленные в виде произведения числа (так называемые "мантиссы", как правило, в пределах от 1 до 10) на 10 в определенной степени, например, 4,5Е7, что означает 4,5- 107 или 45 000 000. Числа с плавающей запятой могут иметь и отрицательный показатель степени 10, например, 4,5Е-4, что означает 4,5- 10 или 0,00045. Таким образом, числа с плавающей запятой применяются для хранения как очень малых, так и очень больших величин.
Переменные, объявленные как Decimal, содержат числа с фиксированной десятичной запятой. В отличие от чисел с плавающей запятой, числа данного типа не имеют множителя "десять в степени". Это позволяет избежать ошибок округления, которые могут возникнуть при вычислении с использованием чисел с плавающей запятой. Поэтому рекомендуется применять тип Decimal, когда производятся сложные вычисления, в которых недопустима подобная погрешность.
Преобразование чисел из одних типов данных в другие может быть явным и неявным. Неявное преобразование выполняется автоматически при присвоении определенного значения переменной. В случае явного преобразования используются методы класса system.convert.
Тип данных object может хранить различные данные и менять их тип во время выполнения программы.
При разработке программ в среде Visual Basic в зависимости от типа данных переменных можно использовать префиксы, приведенные в табл. 2.2.
Таблица 2.2. Префиксы, используемые в наименованиях переменных
Тип данных |
Префикс |
Пример |
Boolean |
bin |
blnSuccess |
Byte |
byt |
bytImage |
Date |
dtm |
dtmFinish |
Decimal |
dec |
decCost |
Double |
dbl |
dblSum |
Integer |
int |
intQuantity |
Long |
lng |
IngTotal |
Object |
obj |
obj Temp |
Short |
shr |
shrAge |
Single |
sng |
sngLength |
String |
str |
strLastname |
Применение префиксов в среде .NET не является обязательным и может быть рассмотрено, скорее, как дань традиции программирования на Visual Basic. Кроме того, знание префиксов может помочь при переносе существующего кода из Visual Basic на платформу .NET. В Visual Basic предусмотрен набор знаков, которые можно использовать для принудительного присвоения значению переменной другого типа данных, не совпадающего с типом, определяемым его формой. Для этого на конце значения переменной добавляется специальный знак. В табл. 2.3 приведены допустимые знаки с примерами их использования.
Таблица 2.3. Знаки, используемые для присвоения другого типа значению переменной
Знак |
Тип данных |
Пример |
s |
Short |
I = 347S |
i |
Integer |
J = 3471 |
L |
Long |
К = 347L |
D |
Decimal |
X = 347D |
F |
Single |
Y = 347F |
R |
Double |
Z = 347R |
US |
UShort |
L = 347US |
UI |
Ulnteger |
M = 347UI |
UL |
ULong |
N = 347UL |
С |
Char |
Q = " . "C |
Объявление переменной
В Visual Basic существует явное и неявное объявление переменной.
Явное объявление означает указание имени и типа переменной перед ее использованием. ОНО Осуществляется операторами Dim, Private, Static, Public, которые имеют следующий синтаксис:
Dim имяПеременной [As типДанных] [=3начение]
Private имяПеременной [As типДанных] [=3начение]
Static имяПеременной [As типДанных] [=3начение]
Public имяПеременной [As типДанных] {^Значение]
Переменная, объявленная при помощи оператора Dim, доступна из любого места программы в пределах области видимости, содержащей оператор Dim. Например, если она объявлена внутри модуля вне любой процедуры, то такая переменная доступна из любого места этого модуля. Если переменная объявлена внутри процедуры, то она доступна только в пределах этой процедуры. Такая переменная называется локальной. Чтобы определить доступность переменной более детально, применяются операторы Private и Public.
Использование оператора Public означает, что переменная имеет общий доступ, т. е. доступ без каких-либо ограничений. Public-переменная не может быть объявлена внутри процедуры.
Переменная, объявленная с ключевым словом Private, доступна только в пределах контекста, в котором объявлена, включая процедуры. Private-переменная может быть объявлена внутри модуля, класса или структуры, но не внутри процедуры.
Если переменная при объявлении указана как static, то она остается существовать в памяти и сохраняет свое последнее значение после завершения работы процедуры, в которой была объявлена, static-переменная не может быть объявлена вне процедуры.
С помощью одного оператора можно объявлять несколько переменных, разделяя их запятыми. Примеры объявления переменных приведены далее:
Private bSuccess As Boolean
Dim lastName, firstName As String, dblSum As Double
Часть [As типданных] объявления переменной является необязательной, однако если тип данных не указан, Visual Basic назначит переменной тип значения, которое присваивается ей при объявлении.-Если не указан тип данных и переменная не инициируется никаким начальным значением, Visual Basic назначит ей тип данных object. В случае, если не указан тип, но присвоение значения переменной происходит при ее объявлении, компилятор создаст переменную на основании типа выражения, используемого для инициализации переменной. Пример (после символа ' приведены комментарии к строке программы):
Dim a ' Переменная типа Object
Dim b As Integer ' Переменная типа Integer
Dim с = "Test" ' Переменная типа String
Предпочтительным является явное объявление переменных с указанием типа данных, поскольку это снижает вероятность возникновения ошибок написания или конфликта имен.
Область видимости переменных
При выполнении программы принципиальное значение имеет область видимости используемых переменных. Попытка использования переменных, которые не действуют в данном месте программы, приводит к синтаксической ошибке. В Visual Basic могут применяться глобальные и локальные переменные. Глобальные переменные доступны из любой части программы. Для локальных переменных можно задавать область видимости в рамках всего модуля, класса или отдельной процедуры. Присваивая имена переменным с учетом области ее действия, для удобства работы можно придерживаться формата, представленного в табл. 2.4.
Область видимости переменной |
Префикс |
Пример |
Глобальная |
g |
gdtmFinish |
Локальная внутри модуля |
m |
msngLength |
Локальная внутри процедуры |
нет префикса |
strLastname |
Для создания переменной, которую вы хотите определить в качестве глобальной, вначале главного модуля приложения поместите оператор Public. Например:
Public gdtmFinish As Date
Для объявления переменной, локальной внутри модуля или формы, используйте операторы Private или Dim. В этом случае объявленная переменная будет доступна для всех входящих в форму или модуль процедур, но в то же время окажется недоступной в процедурах других модулей и форм.
Переменные, локальные на уровне процедуры, создаются операторами Dim или static внутри процедуры. При наличии в одной области видимости нескольких переменных с одинаковым именем при вычислениях используется переменная, находящаяся на самом близком уровне вложенности. Например:
Module Modulel
Public intA As Integer
Sub Main()
Dim intA As Integer
intA = 5 ' Используется переменная из Sub Main
End Sub
End Module
Присвоение значения переменной
Прежде чем использовать переменную в программе, ей нужно присвоить значение. Самый простой способ присвоения состоит в использовании оператора присвоения (=), который имеет следующий синтаксис:
переменная = выражение
Аргумент переменная задает имя переменной, которой будет присвоено значение выражения, стоящего справа от знака равенства. Например:
ir.gFirst = 10 strLastname = "Иванов"
Справа от знака равенства может стоять не только константа, но и более сложное выражение. Например:
sngResult = sngFirst + 255
strName = "Иванов" & ": " s strTeam
Нулевое значение переменной
Иногда при работе с переменной возникает ситуация, когда необходимо, чтобы у нее отсутствовало определенное значение. Например, при работе с полем базы данных оно может являться необязательным для заполнения и будет принимать либо определенное значение, либо значение будет отсутствовать.
Для работы с такими переменными используется структура Nullabie. Следующая строка позволяет определить переменную типа Boolean, которая может принимать нулевое значение:
Dim bHasChildren As Nullabie(Of Boolean)
Наиболее важными свойствами структуры Nullabie являются Hasvalue и value. Чтобы определить, содержит ли переменная определенное значение или нет, используется свойство Hasvalue. Если это свойство принимает значение True, то получить значение переменной можно с помощью свойства value. По умолчанию при объявлении переменной типа Nullabie свойство Hasvalue принимает значение False.
При получении значения переменной типа Nullabie следует осуществлять проверку на его существование, иначе при попытке получения нулевого значения будет сгенерировано исключение:
If bHasChildren.HasValue Then
MsgBox("Есть дети")
Else
MsgBox("Нет никакой информации о детях")
End If
Присвоение значения переменной типа Nullabie осуществляется стандартным образом. Если переменной необходимо присвоить неопределенное значение, следует воспользоваться константой Nothing:
bHasChildren = Nothing
Константы
Константой называют элемент выражения, значение которого не изменяется в процессе выполнения программ. Приведем несколько примеров:
7 5.07 числовая константа
2 . 7Е+6 числовая константа (равна 2 700 000)
"Ошибка доступа к базе данных" символьная константа
#8/12/2004# константа типа "дата"
False логическая константа
Объявление констант
Объявление констант во многом аналогично объявлению переменных. Константы можно объявлять на уровне модуля или процедуры. Область их действия при этом определяется теми же правилами, что и для переменных.
Для объявления константы на уровне процедуры используется оператор const, имеющий следующий синтаксис:
Const имяКонстанты [As типДанных] = выражение Например:
Const strDBErrorMessage As String = "Ошибка доступа к базе данных"
При объявлении константы на уровне модуля дополнительно можно указать область ее действия. В этом случае оператор const имеет следующий синтаксис:
[Public | Private] Const имяКонстанты [As типДанных] = выражение
В приведенном далее примере константа strDBErrorMessage объявлена глобальной:
Public Const strDBErrorMessage As String = "Ошибка доступа к базе данных"