Под организацией данных понимается независимость отдельных данных (хранятся в отдельных непоследовательных ячейках памяти) или их связанность (хранятся в связанной последовательности ячеек памяти).
Связанными данными в Visual Basic 4 являются массивы (совокупность связанных данных одного типа) и записи (совокупность связанных данных разных типов).
3.2.2. Константы
Константа - данное, значение которого однозначно определяется написанием и не может быть изменено.
Пример:
3.1415926 6.02ЕЗ (значение 60200) 123 “Visual Basic “ “Иванов “
Для хранения постоянных величин Visual Basic позволяет объявить константы, т.е. выделить участки памяти, содержимое которых не меняется (при попытке модификации выдается сообщение об ошибке). Объявление констант осуществляется оператором
[Public | Private] Const имя [As type] =выражение Имя констант принято записывать прописными буквами (правила записи имен см. ниже).
Значения ключевых слов следующие:
Public - константу можно использовать в любых процедурах и функциях;
Private - константу можно использовать только внутри модуля (см. ниже), в котором она определена.
Пример:
Const /V= 3.1415926
Const MY_NAME = “Юра “
Тип константы можно не объявлять (устанавливается на основе значения — Const CODE = 35 автоматически получит тип integer). Однако константа PI в примере может быть любого из трех типов: single, double или currency. По умолчанию принимается тип, занимающий наименьший объём памяти. Поэтому лучше явно указывать тип специальными символами в операторах объявления констант. Используемые символы показаны в таблице:
Символ объявления типа | Тип данных |
% | integer |
& | long |
1 | single |
# | double |
@ | currency |
$ | string |
Пример:
Const ONE& = / (резервирует 4 байта)
Const ONE# = 1 (резервирует 8 байтов, хранится в виде числа двойной точности с плавающей точкой).
В Visual Basic имеется большое число встроенных констант, значения которых определены заранее и их можно использовать без предварительного определения. Примерами таких констант являются:
vbOKCancel = 1 — аргумент функции MsgBox для вывода в диалоговом окне командных кнопок ОК и Cancel;
vbYesNoCancel = 3 — аргумент функции MsgBox для вывода в диалоговом окне командных кнопок Yes, No, Cancel;
vbOk = 1 — значение, которое возвращает MsgBox, если пользователь щелкнул по кнопке ОК в диалоговом окне;
Полную информацию о встроенных константах можно найти в Object Browser.
Кроме того, в комплекте Visual Basic имеется файл CONSTANT.TXT, содержащий десятки часто используемых констант. Необходимые константы могут быть скопированы в программу. 3.2.3. Имена
Имена используются для обозначения объектов в программе (константа является объектом программы). Правила образования имен:
Примеры:
Правильные имена Неправильные имена StartTime CM*PER*INCH
А2 23В
color File (ключевое слово) • VariableName BMW_360
Хорошим тоном при программировании на любом языке является осмысленный выбор имен для объектов программы (присваивать объектам имена, соответствующие контексту и несущие описательную нагрузку). В качестве примера можно привести имя процедуры обработки события, связанного с щелчком мыши по командной кнопке, запускающей программу btnStart_CUck: первая часть имени состоит из сокращения слова кнопка (button — btn) и слова Start, вторая часть определяет событие — Click.
3.2.4. Оператор объявления
Оператор объявления резервирует в памяти место для хранения данных определенного типа и организации и присваивает ему имя, по которому производится обращение к данным.
Оператор имеет вид:
{Dim | Global} имя [({описатель})} [As [New] тип} [, имя [([описатель])] [As [New]w“n] ] . . .
Dim, Global, As, New — ключевые слова (Global используется для объявления глобальных данных (см. ниже). New используется для создания нового объекта на основе существующих объектов, например формы);
имя — имя объекта (имя переменной, массива);
тип - тип данных;
описатель — определяет организацию данных (например, массива, см. ниже).
Пример:
Dim Name, YourName As String, N As Integer, Money As Currency,
SiirName As String* 15
(переменная SurName определена как символьная фиксированной длины в 15 символов).
При описании имен прописные и строчные буквы воспринимаются одинаково. Однако после определения ссылки на эту переменную должны соответствовать последней форме записи (производится автоматическое преобразование текста программы).
Visual Basic допускает использование имен без объявления их типа (в этом случае автоматически определяется тип, требующий для размещения минимальной памяти), однако целесообразно и является признаком хорошего тона явно объявлять типы используемых данных.
Из рассмотренных в предыдущей главе примеров программ для работы с формами и управляющими элементами известно, что любая программа состоит из формы и элементов управления, которым поставлены в соответствие процедуры. Более сложные программы могут включать несколько форм.
Существует понятие области действия (scope) данных, определяющее возможность доступа к тем или данным (например, к переменной) в отдельных процедурах одной формы или в процедурах, относящихся к разным формам одной программы.
Если оператор объявления какой-либо переменной находится внутри процедуры обработки события, то доступ к этой переменной (возможность ее использования) возможен только в рамках данной процедуры. Такая переменная называется локальной (local).
Для того чтобы одна и та же переменная могла использоваться в разных процедурах одной формы, оператор объявления переменных должен быть помещен в раздел общих объявлений (general), доступ к которому открывается щелчком мыши по элементу “general” раскрывающегося списка окна Object формы. Объявленная таким образом переменная имеет статус действующей на уровне модуля (modul-level variable) и может использоваться (доступна) в любой процедуре данной формы. Для того чтобы одна и та же переменная могла использоваться в процедурах разных форм одной программы она должна быть объявлена как глобальная переменная (global variable). Используется ключевое слово Global вместо Dim.
Пример:
Global Name, YourName As String, N As Integer, Money As Currency,
SurName As String* 75
Операторы объявления глобальных переменных помещаются в-модулях кода (code modules, см. ниже) и эти переменные могут использоваться во всей программе.
Схема, иллюстрирующая области действия переменных, показана на рис. 3.1.
В Форме 1 переменная Р объявлена в разделе общих объявлений (general) формы и может быть использована как в Процедуре X, так и в Процедуре Z. Изменение значения переменной в одной из процедур влечет за собой изменение и в другой процедуре.
Рис. 3.1
Объявленные переменные И в Процедуре Х и G в Процедуре Z Формы 1 определены только внутри этих процедур, аналогично переменной G в Процедуре_У Формы 2. Эти переменные определены только в рамках своих процедур. Более того, для одноименных переменных G в Процедуре Z и в Процедуре Y выделяются разные ячейки памяти и изменение значения переменной
G в одной из процедур не влечет изменения значения в другой процедуре.
Переменные А и В определены как глобальные для всей программы и доступны во всех процедурах Формы 1 и Формы 2. Изменение значения переменных в одной из процедур одной из форм влечет изменение значений в других процедурах и формах.
Рассмотренные области действия переменных справедливы и для других объявляемых данных (констант, пользовательских типов данных, массивов и др.).
Как было сказано выше, описания глобальных данных помещаются .в модуль кода. Определения формы и все связанные с ней программы хранятся в отдельном файле с расширением .FRM. Программы, состоящие из нескольких форм и соответственно из нескольких таких файлов, размещаются в файлах модулей кода с расширением. Такие файлы создаются при выборе в меню Insert (Вставить) команды Module (Создать модуль) или при щелчке мыши на одноименной кнопке панели инструментов.
3.2.5. Пользовательские типы данных (записи)
Данные различных типов можно сгруппировать по какому-либо признаку в удобную для использования одну структуру. В ряде языков программирования такие структуры называются записями (records).
Оператор объявления пользовательского типа данных (записи) помещается в модуль и имеет вид:
Type имя записи имя элемента записи [(описатель)} As тип
[имя элемента записи [(описатель)} As тип}
End Type
Оператор создает указанную структуру данных, но не выделяет под неё память. Память выделяется рассмотренным оператором описания, в котором в качестве типа указывается имя записи (имя пользовательского типа данных).Пример:
Dim Student_l, Student_2 As Student Описаны два имени (Student_l, Student_2 ), для каждого из которых определены заданные в структуре компоненты (Familia, Name, Voyast, Birthdate, Length, Wegith) и для хранения значений которых выделяется память соответственно заданному типу (длине и способу представления).
Для обращения к конкретному свойству (элементу структуры) определенного объекта используется составная запись
имя переменной.элемент структуры
Например, Student'_]. Birthdate определяет дату рождения студента Student_7.