2.
ХРАНЕНИЕ
ИНФОРМАЦИИ В
КОМПЬЮТЕРЕ
2.1. Типы
данных в Visual
Basic
Тип данных в любом языке программирования, в том числе и в Visual Basic, определяет формат представления информации в памяти компьютера, а также допустимый диапазон значений и способ их обработки. Структура стандартных типов Visual Basic приведена на рис. 1. Различают числовые, символьные, логические и специальные типы. Каждые из этих групп типов дополнительно подразделяются на подгруппы.
Рис. 2. Стандартные типы данных
Числовые типы предназначены для хранения только числовой информации. Различают целые (без дробной части) и вещественные (с дробной частью) типы.
Целые – представляют числа в двоичном формате в виде простой комбинации бит, эквивалентной ее значению.
Вещественные – дополнительно делятся на числа с фиксированной и плавающей точкой. Тип с фиксированной точкой полностью аналогичен целым, но заранее определенное количество знаков числа отводится под дробную часть. Тип с плавающей точкой подразумевает, что разделитель целой и дробной части может занимать любое положение. Числа в этом формате состоят из двух частей: мантисса и экспоненциальная часть. Мантисса определяет значимые цифры числа и может занимать 7 (Single) или 15 (Double) знаков. Экспоненциальная часть определяет порядок числа. Общая форма записи и соответствующий ей эквивалент следующий:
1.125484Е-12 → 1,125484 · 10-12 или 2.256Е2 →
2,256 · 102
Символьный тип служит для хранения текстовой информации. Значение представляется как набор символов (строка), каждый из которых кодируется отдельным целым числом, состоящим из 8 бит (кодировка ANSI). При этом разделяют динамические строки (без определенного размера) и с фиксированным количеством символов, заранее определенным.
Логический тип предназначен для построения условий и может принимать только два значения: True и False.
Существуют также ряд специальных типов, которые служат для работы со специфическими данными, например время (Date) или формирование ссылок на другие объекты (Object).
Подробная информация обо всех стандартных типах в Visual Basic приведена в таблице 1.
Таблица 1
Стандартные типы данных в Visual Basic
Тип |
Хранимая информация |
Объем памяти (байт) |
Диапазон значений |
Значение по умолчанию |
Суффикс |
Byte |
Целые числа |
1 |
0 … 255 |
0 |
Нет |
Integer |
Целые числа |
2 |
-32768 … 32767 |
0 |
% |
Long |
Целые числа |
4 |
-231 … 231-1 |
0 |
& |
Single |
Вещественные числа |
4 |
От ±3,402823Е38 до ±1,401298Е-45 |
0 |
! |
Double |
Вещественные числа двойной точности |
8 |
От ±1,79769313486232Е308 до ±4,94065645841247Е-324 |
0 |
# |
Currency |
Числа: 15 цифр в целой части и 4 цифры в десятичной |
8 |
±922337203685477,5807 |
0 |
@ |
String |
Текстовая информация |
1 на каж-дый символ |
До 65 тыс. символов для строк фиксированной длины и до 2 млрд. для динамических строк |
«» (пустая строка) |
$ |
Boolean |
Логический тип |
2 |
True (Истина) или False (Ложь) |
False |
Нет |
Date |
Информация о дате и времени |
8 |
От 1-го января 100 года до 31 декабря 9999 года |
0 |
Нет |
Object |
Ссылки на любой объект |
4 |
Не определен |
Empty |
Нет |
Variant |
Значения любого из вышеперечисленных типов |
16+1 на каждый символ |
Не определен |
Empty |
Нет |
Примечание |
Тип Variant – это тип, который сам определяет требуемый тип данных. Переменной такого типа можно присваивать любые данные, что весьма полезно при создании сложных программ. Слово «String» напрямую описывает динамические строчки, а для определения строки фиксированной длины необходимо указать ее длину в символах (Number): String * Number |
2.2.
Переменные
Переменные – именованные элементы внутренней памяти компьютера, используемые для временного хранения информации. В различные моменты времени она может хранить разные значения.
Перед использованием переменной ее необходимо создать (объявить). Переменная объявляется двумя способами: явным и неявным.
Явное объявление означает, что для определения переменной должен быть использован оператор: Dim, Private, Static, Public. Например:
Dim VarName As DataType
· Dim – ключевое слово оператора объявления переменных.
· VarName – имя переменной.
· DataType – тип объявляемой переменной.
Оператор, объявляющий переменную, сообщает Visual Basic о том, что будет храниться в этой переменной и где эту переменную можно использовать. Часть программного кода, в котором можно использовать переменную, называют областью видимости переменной.
В большинстве программ, содержащих несколько форм или модулей программного кода, требуются переменные, доступные в любой части кода. Они называются глобальными переменными. Для создания подобной переменной необходимо поместить оператор объявления переменной с ключевым словом «Public» в раздел объявлений модуля.
Переменные, объявленные в программе как «Public», во многом подобны свойством формы и видны из любой части программы. На них можно ссылаться, как на встроенные свойства формы или элемента управления, а не как на обычные переменные.
Например, если имеется переменная «strMyName», объявленная как «Public» в форме «frmMain», получить доступ к ней можно с помощью выражения:
strSomeString = frmMain.strMyName
Такие переменные-свойства применяются лишь для обмена информацией между формами и другими частями программы.
Ключевое слово «Private» используется в разделе объявлений формы или модуля для создания переменной, видимой только в пределах модуля, в котором она создана. Такие переменные называются переменными уровня формы или модуля. Иногда их также называют частными переменными.
Аналогичного результата можно добиться, если в разделе объявлений модуля объявить переменную с помощью ключевого слова «Dim». Однако объявлять переменную с помощью этого ключевого слова можно в пределах необходимой процедуры (функции). Если переменная объявлена таким образом, то она может быть использована только в пределах этой процедуры (функции). Подобные переменные называются локальными.
Таким образом, каждая процедура может иметь собственный набор локальных переменных. Даже в том случае, когда их имена совпадают, конфликт имен не наблюдается.
Большинство переменных, созданных внутри процедуры, становятся ненужными после ее завершения. Но бывают случаи, когда необходимо сохранить значение переменной для использования при повторном вызове этой же процедуры. Такие переменные необходимо объявить с помощью ключевого слова «Static». Оно сообщает, что область видимости переменной ограничивается текущей процедурой, но переменная должна сохранять свое значение.
Примечание |
Если ключевое слово «Static» используется в объявлении самой процедуры, то все ее локальные переменные будут рассматриваться как статические. |
Использование оператора при объявлении переменной необязательно – неявное объявление. Поэтому всякий раз, когда вы допускаете опечатку в имени переменной, Visual Basic всегда будет воспринимать это как объявление новой переменной. Поэтому бывает очень полезно запрещать неявный способ объявления с помощью оператора «Option Explicit», записав его в самом начале раздела объявлений («General») любого программного модуля. Этот оператор будет работать только в его пределах.
Примечание |
Любая переменная, объявленная неявно, всегда будет иметь тип Variant независимо от ее места положения. |
2.3.
Константы
Применение переменных – это лишь один из способов хранения информации в памяти компьютера. Другой способ – использование констант. После определения констант их значения уже нельзя будет изменить в процессе выполнения программы. Они, как правило, используются для хранения неизменных значений (физические, математические постоянные или часто используемые строки).
Visual Basic предлагает целый ряд стандартных констант (не нуждающихся в предварительном объявлении) для определения цветовых наборов, типов доступа к данным, кодов клавиш и др. Все эти константы имеют префикс «vb».
Хотя Visual Basic имеет
обширный ряд
констант,
рано или
поздно
возникнет необходимость
в
собственных константах
пользователя.
Они определяются с помощью оператора «Const»:
Const ConstantName [As ConstantType] =
Value
· Const – ключевое слово, сообщающее о создании константы.
· ConstantName – имя константы.
· ConstantType – тип константы (необязателен).
· Value – значение константы.
Указание типа константы необязательно. При его отсутствии тип будет определен самостоятельно в зависимости от характера присваиваемого ей значения.
В рассмотренных выше примерах для объявления типа переменной или константы использовалось ключевое слово «As». Существует и другой метод – использование суффиксов типов данных. В этом случае тип указывается путем добавления в конец имени переменной или константы специального символа, определяющего ее тип (см. табл. 1). Например:
Dim VarName#
Примечание |
Не все типы имеют свой суффикс, что ограничивает этот метод в применении. |
2.4.
Массивы
Помимо отдельных ячеек памяти Visual Basic работает также с массивами.
Массив – это набор переменных одного типа с одним и тем же именем. Каждая такая ячейка памяти является элементом массива, и у каждой есть свой порядковый номер, определяющий ее место. Первому элементу обычно присваивается номер 0.
Объявить, или задать размер массива можно двумя способами: как при объявлении переменной и используя ключевое слово «To».
Чтобы объявить переменную как одну переменную, используют следующий синтаксис:
Dim | Public | Private ArrayName(Subscript)
As DataType
· Dim | Public | Private – ключевое слово Visual Basic, которое определяет область его видимости (см. выше раздел «Переменные»).
·
ArrayName – имя массива.
· Subscript – номер последнего элемента в массиве (например, если это число 6, то в массиве будет семь элементов; помните, что номера элементов в массиве начинаются с нуля).
· As – ключевое слово Visual Basic, которое предваряет объявление типа.
· DataType – любой допустимый в Visual Basic тип данных, например «Integer» или «Double».
Примечание |
При объявлении массива первым будет следовать элемент с индексом нуль. Но можно сделать так, что при объявлении массива первый его элемент получит индекс 1. Для этого поместите в раздел «General» любого модуля вашего проекта оператор «Option Base 1». При этом элементы всех массивов будут нумероваться с единицы. |
Следовательно, объявление массива из пяти элементов типа «Integer» должно выглядеть так:
Dim MyArray(4) As Integer
Чтобы присвоить каждому элементу этого массива некоторое значение, воспользуйтесь следующими операторами:
MyArray(0) =
9
MyArray(l) = 342
MyArray(2) = 2746
MyArray(3) = 0
MyArray(4) = 8901
При объявлении массива можно описать диапазон индексов с помощью ключевого слова To. Например, чтобы создать массив из пяти элементов типа «Integer», в котором значение индекса должно изменяться от 1 до 5, используйте такой оператор:
Dim MyArray (1 To 5) As Integer
Это самый простой способ начать нумерацию элементов массива с нужного вам значения, отличного от нуля.
Хотя обычно число элементов в массиве определяется при его объявлении, иногда необходимо изменить размеры массива во время выполнения программы. Изменение числа элементов в массиве называется переопределением размеров массива. Для изменения числа элементов уже существующего массива используют ключевое слово «ReDim» и следующий синтаксис:
ReDim [Preserve] ArrayName(Subscript) [As DataType]
· ReDim — ключевое слово Visual Basic, означающее изменение размеров массива.
· Preserve — необязательное ключевое слово Visual Basic, указывающее на необходимость сохранения прежних значений элементов массива. Если при переопределении размеров массива это ключевое слово не использовать, значения всех элементов будут равны: нулю — для числовых типов данных, пустой строке — для строкового типа и «Empty» — для типа Variant.
· ArrayName — имя массива.
· Subscript — индекс последнего элемента в массиве.
· As — ключевое слово Visual Basic, предваряющее объявление типа данных.
· DataTуре — любой допустимый в Visual Basic тип данных. При переопределении размера массива этот параметр необязателен, т.к. изменить тип невозможно. Тип массива можно переопределить ключевым словом «ReDim» только в том случае, если массив имеет тип «Variant».
Примечание |
Создавая массив, размер которого в дальнейшем будет изменяться, нельзя жестко задавать размер массива при его первом объявлении. Оператор «ReDim» можно применять только к так называемым динамическим массивам. |
Чтобы создать массив, размер которого в дальнейшем будет переопределяться, сначала необходимо создать массив без элементов:
' Создаем массив без элементов
Dim strMyArray() as String
' Определяем начальную размерность массива (5 элементов)
ReDim strMyArray(1 To 5)
' Присваиваем значения элементам массива
strMyArray(0) = "I am a pitcher."
strMyArray(1) = "I am a catcher."
strMyArray(2) = "I play first base."
strMyArray(3) = "I play second base."
strMyArray(4) = "I play third base."
strMyArray(5) = "I play shortstop."
'Добавляем элемент таким образом, чтобы сохранить
' значения элементов, определенных ранее
ReDim Preserve strMyArray(1 To 6)
'Присваиваем значение новому элементу массива
strMyArray(6) = "I am the designated hitter"
Помимо вышесказанного, динамические массивы обладают рядом дополнительных особенностей. Для них существует понятие пустого значения (Empty). Такая ячейка не занимает места в памяти компьютера, что позволяет использовать память более экономично.
Массивы, объявленные с уже конкретным количеством ячеек, называются статическими. Под них сразу резервируется необходимое количество памяти ОЗУ, определяемое его типом и количеством ячеек.
До сих пор обсуждались лишь одномерные массивы. Однако в Visual Basic можно создавать и многомерные массивы, число размерностей которых ограничено 60.
Двухмерный массив называют также матрицей. Каждая из ячеек имеет свой код, который представляет собой пару чисел, номер столбца и номер строки, которые однозначно определяют местоположение ячейки в сетке. Обратите внимание, что каждый элемент определен номерами столбца и строки, например:
iVar(2,3) = 49
Оператор объявления двухмерного массива имеет следующий синтаксис:
Dim | Public | Private MyArray(NumOfCols, NumOfRows) As DataType
Независимо от размерности массивов работа с ними осуществляется аналогично вышеприведенной для одномерных объектов.
Примечание |
Для переопределения размера многомерного массива можно также использовать оператор «ReDim». Однако можно изменять только лишь последнее измерение многомерного массива, а число измерений изменить нельзя. |
Для изменения размерности многомерного массива необходимо его сначала реинициализировать (уничтожить) с помощью следующего оператора:
Erase Arraylist
· Arraylist – реинициализуемые массивы, разделенные запятой.
Контрольные
вопросы для
самопроверки