КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Типы данных. Константы и переменныеОсновными видами данных являются константы и переменные, каждая из которых может относится к одному из стандартных (встроенных) типов, перечисленных в таб. 2.1. Таблица 2.1. Стандартные типы данных
Символ из третьей колонки является идентификатором типа объекта и при определенных условиях должен быть завершающим в его имени. Все объекты данных можно разделить на константы и переменные. Константы могут быть числовыми, строковыми и логическими. Числа имеют следующее представление: 92 – целое число, 4.23 – вещественное число, 9.23D+78 – вещественное число в экспоненциальной форме, 9.23*10^78. Строка - это последовательность символов, заключенная в кавычки.
Строковая константа должна быть заключена в кавычки, например, “Кот”. Константе можно назначить символическое имя, тогда она определяются в начале программы. Синтаксис константы 1) объявление [Public | Private] Const ИМЯ_КОНСТАНТЫ [As ТИП] = ВЫРАЖЕНИЕ где ИМЯ_КОНСТАНТЫ содержит максимум 255 символов и должно начинаться с буквы, может содержать цифры, большие и малые буквы латинского алфавита; последним должен быть один из символов !, #, % или $; по умолчанию будет присвоен символ !; ВЫРАЖЕНИЕ – значение, которое хранится в константе, это может быть число, другая константа, текст или арифметическое выражение без возведения в степень; если используется имя другой константы, то она должна быть предварительно определена; например, CONST cat$ = “кот Кутя”; 2) обращение [имя_библиотеки.] [имя_модуля..] имя_константы где имя_библиотеки – обычно имя класса элемента управления (ЭУ); имя_модуля – имя модуля, в котором определена константа. Необходимо не допускать круговых ссылок; например, пусть имеется два модуля, причем в модуле_1 присутствует следующее объявление Public Const conA = conB*2 'константа доступна везде в приложении а в модуле_2 находится объявление Public Const conB = conA*2 'константа доступна везде в приложении здесь возникает ошибка – круговой цикл, вследствие чего код выполняться не будет. Логические константы: True (ИСТИНА) и False (ЛОЖЬ). Значения констант не могут изменяться в процессе выполнения программы. В отличие от констант, содержание переменных может изменяться при выполнении программы. Хотя в Basic допускается просто применять новую переменную в нужном месте программы, следует все переменные объявлять явно в начале программы. По области определения различают следующие виды переменных: а) локальные – объявляются внутри процедуры или функции и доступны только внутри такой подпрограммы, б) контейнерные – объявляются с ключевым словом Dim в секции (General)(Declarations) контейнера (форма, модуль или класс) и доступны только в соответствующем текущем контейнере, в) глобальные - объявляются с ключевым словом Public в секции контейнера и доступны во всем проекте. Локальные переменные при выходе из процедуры удаляются из памяти и при новом вызове процедуры инициализируются заново, Однако, если объявить переменную как статическую, то при выходе из процедуры ее содержимое сохраняется (хотя сама переменная оказывается недоступной), при новом же вызове процедуры переменная получает значение, которое она имела при последнем выходе из данной процедуры. Синтаксис объявления переменной: Dim [Shared] | ReDim | Static | Private | Public ИМЯ_ПЕРЕМЕННОЙ As КЛАСС | ТИП где Shared – указание на то, что переменную можно использовать во всех функциях и процедурах модуля; ИМЯ_ПЕРЕМЕННОЙ – имеет максимальную длину до 255 символов и образуется по тем же правилам, что и имя константы; As ТИП – присутствует в объявлении, если в имени переменной последний символ не является идентификатором типа; например, Dim k As Integer но Dim c%; КЛАСС для объектных переменных, а ТИП для обычных переменных. В одном операторе объявления может присутствовать несколько однотипных переменных, имена которых разделяются запятыми: Dim i As Integer, k As Integer. Для каждой переменной ее тип должен быть указан явно, иначе она получит тип Variant (см. ниже). В одном операторе объявления можно также объединять несколько объявлений переменных разных типов: Dim i As Integer, s As Double. В Basic каждая переменная при первом ее использовании либо сразу же после явного объявления инициализируется начальным значением, например, для переменных типа Integer по умолчанию используется значение 0. Однако целесообразно выполнять явную инициализацию переменных требуемыми начальными значениями. Присвоить некоторое значение переменной можно оператором, имеющим следующий шаблон: ИМЯ_ПЕРЕМЕННОЙ=СТРОКОВОЕ_ВЫРАЖЕНИЕ | АРИФМЕТИЧЕСКОЕ_ВЫРАЖЕНИЕ где Арифметическое_выражение – это комбинация чисел, арифметических констант, числовых переменных и некоторых функций, которые связаны между собой арифметическими операциями; Строковое_выражение – это комбинация текстов, текстовых констант, текстовых переменных и определенных функций, которые связаны операцией + или &; например, k = 5 или cat = “Ветка”. Тип переменной должен соответствовать типу выражения. Необходимо также соблюдать соответствие между типом числовой переменной и типом арифметического выражения. VB пытается автоматически преобразовывать типы данных. Для явного преобразования типов используются следующие функции: CBool преобразует в Boolen, CByte – в Byte, CCur – в Currency, CDate – в Date, CDbl – в Double, Cint – в Integer, CLng – в Long, CSng – в Single, CStr – в String, Cvar – в Variant, CVErr – в Error. По умолчанию, если тип данных явно не указывается, переменной назначается тип Variant, который в различных ситуациях может представлять разные типы данных. При использовании переменных типа Variant для арифметических операций они должны содержать нечто, что может интерпретироваться как числа; для строковых операций вместо сцепления + надо использовать &. До присвоения значений переменная Variant имеет значение Empty, отличающееся от 0, от строки нулевой длины "" или от значения Null; для тестирования на присвоенность какого-либо значения используется функция IsEmpty: If IsEmpty(v2) Then v2 = 0. Значение Null распространяется по всему выражению, если хотя бы одна его часть содержит это значение; может присваиваться только вариантной переменной. Для выяснения, содержит ли переменная значение Null используется функция IsNull: If IsNull(v2) Then z = Null. Переменные не получают значения Null, помимо явного присвоения.
Кроме стандартных (встроенных) типов данных можно, используя ключевое слово Type, создавать типы данных, определяемые пользователем: [Private | Public] Type ИМЯ_ТИПА ЭЛЕМЕНТ_1 [([РАЗМЕРНОСТЬ])] As ТИП
ЭЛЕМЕНТ_2 [([РАЗМЕРНОСТЬ])] As ТИП … End Type Определение общего (Public) собственного типа данных возможно только в секции (General)(Declarations) модуля. Для определения пользовательского типа данных в форме или в модуле класса используется слово Private. Пример: ‘(General)(Declarations) (Module) Type usrPerson ‘Объявление пользовательского типа Name As String Number As Integer End Type Public usrSupp As usrPerson, usrCopy As usrPerson ‘ Объявление двух переменных типа usrPerson Private Sub NamNum() usrSupp.Name = “Natali Goncharova” usrSupp.Number = 999 usrCopy = usrSupp End Sub Пользовательские типы могут быть составными. В этом случае сначала нужно определить базисный тип, который будет использоваться далее в составных типах: ‘(General)(Declarations) (Module) Type usrName ‘Объявление базисного типа Name As String Famile As String End Type Private Type usrPerson ‘Объявление составного типа типа Name As usrName Number As Integer End Type Dim usrSupp As usrPerson Private Sub NamNum() usrSupp.Name = “Natali ” usrSupp. Famile = “ Goncharova ” usrSupp. Number = 999 End Sub При образовании имени переменных считается общепризнанной “венгерская нотация”, в соответствии с которой имя состоит из одного или нескольких префиксов и базового имени: <префикс><Базовое_имя>. Базовое имя (имя, задаваемое пользователем) начинается с большой буквы. Таблица 2.2. Префиксы типов данных
|