3.2 Структурированные типы данных
Для реализации и обработки базы данных в программе будем использовать массивы и пользовательский тип данных - запись.
Массив - это самый распространенный структурный тип данных. Массив представляет собой упорядоченную совокупность данных одного типа. Порядок элементов задается индексами, то есть порядковыми номерами элементов в соответствующей структуре. В Visual Basic массивы могут одномерными и многомерными. Допустимое число измерений около 60.
При описании массивов к уже знакомой структуре описания переменных добавляется необходимость указания размерности:
Dim | Public | Private | Static} <имя переменной> (<список размерностей>) [As <имя типа>]
Каждое измерение в списке отделяется запятой и определяется заданием верхней и нижней границы изменения индексов. Массивы - это структуры с прямым доступом к элементам. Доступ осуществляется посредством указания имени массива и индекса элемента. Индекс элемента прописывается в круглых скобках.
Приведем пример:
Public Sub MyArray()
Const LowBound As Integer = -5, HighBound As Integer = 5
Dim MyArr(LowBound To HighBound) As Byte
Dim I As Integer
Debug.Print "Элементы массива MyArr:"
For I = LowBound To HighBound
MyArr(I) = I + 6
Debug.Print MyArr(I)
Next I
End Sub
При исполнении данной процедуры будут напечатаны числа от 1 до 11.
Рассмотренный пример показывает работу со статическим массивом. Количество элементов такого массива определено в момент объявления его в программе. Visual Basic имеет мощное средство работы с массивами - динамические массивы. Массив считается динамическим, если при первоначальном объявлении не указывается его размерность, но в последующем она может быть определена и переопределена оператором ReDim. Размерность определяется динамически в той процедуре и в тот момент, когда она становится фактически известной. При этом границы изменения индексов можно задавать не только как константы, но и как выражения, зависимые от переменных. Если же при переопределении массива задать ключевое слово Preserve, можно сохранить все ранее полученные значения элементов и расширить массив, добавив новые элементы.
Приведем пример работы с динамическим массивом:
- Объявление динамического массива на уровне модуля
Public Vector() As Integer
Public Sub DinArray()
- Определяется фактическая размерность массива Vector
Dim N As Byte, I As Byte
N = InputBox("Введите число элементов вектора")
ReDim Vector(1 To N)
For I = 1 To N
Vector(I) = 2 * I + 1
Next I
- Массив расширяется с сохранением ранее вычисленных элементов
ReDim Preserve Vector(1 To 2 * N + 1)
For I = N + 1 To 2 * N + 1
Vector(I) = 2 * I
Next I
-А теперь печать
Debug.Print "Элементы Vector:" & Chr(13)
For I = 1 To N * 2 + 1
Debug.Print Vector(I)
Next I
End Sub
При исполнении данной процедуры будет выдан запрос на определение количества элементов массива, затем печать выведенных значений. Например, если ввести число 10, то вначале будут напечатаны нечетные числа от 3 до 21, а затем четные от 22 до 42.
Запись относится к сложным типам данных, который конструируется, как и массив, объединением совокупности данных простых типов. В отличие от массива, запись представляет собой объединение элементов, каждый из которых может иметь свой тип. Элементы записи называют ее полями. Запись хорошо ассоциируется с таблицей. В этом случае имена полей записи соответствуют наименованиям столбцов таблицы, а значения элементов записи - значениям соответствующих ячеек какой-либо строки таблицы.
Формально в Visual Basic отсутствует понятие «запись». Чтобы обеспечить работу с записями, в Visual Basic предусмотрены средства для определения пользовательского типа. Таким образом, записи в Visual Basic называются типом, определенным пользователем. Синтаксис такого определения определен следующим образом:
[Private | Public] Type <имя типа>
<имя элемента> [([<размерность массива>])] As <тип элемента>
[<имя элемента> [([<размерность массива>])] As <тип элемента>]
End Type
Определение типа дается на уровне модуля, и если оно является закрытым (Private), то оно распространяется на один модуль, а для общих (Public) типов - на все.
Приведем пример определения типа и его использования:
- Определение структуры записи из двух полей
Type Fam
FirstName As String
LastName As String
End Type
Type Person
Fio As Fam
Birthdate As Date
End Type
Public Sub UserType()
- Объявление переменных типа запись
Dim Semenoff As Person
Dim Arhipov As Person
- Присваиваются значения полям соответствующих записей
Semenoff.Fio.FirstName = "Авдей"
Semenoff.Fio.LastName = "Семенов"
Semenoff.Birthdate = #11/2/1975#
Arhipov.Fio.FirstName = Semenoff.Fio.FirstName
Arhipov.Fio.LastName = "Архипов"
Arhipov.Birthdate = #18/11/1976#
- А теперь просмотр результата в окне вывода
MsgBox (Semenoff.Fio.FirstName & " " & Semenoff.Fio.LastName & "родился " & Semenoff.Birthdate)
MsgBox (Arhipov.Fio.FirstName & " " & Arhipov.Fio.LastName & " родился " & Arhipov.Birthdate)
End Sub
Как видно из представленного фрагмента программы, определенный пользователем тип используется при описании программных переменных так же, как и стандартные типы. Здесь же показан принцип работы с записями. Записи обрабатываются поэлементно. Для доступа к элементу записи используется составное имя, которое состоит из имени записи и имени соответствующего поля или полей. Соответствующие имена разделяются знаком точка. Другая форма обращения к элементу записи предполагает использование оператора присоединения (With …. End With). Рассмотрим на примере принцип кодирования данной инструкции языка Visual Basic.
With Arhipov
.Fio.FirstName = Semenoff.Fio.FirstName
.Fio.LastName = "Архипов"
.Birthdate = #7/21/1966#
End With
Над элементами записи можно выполнять все операции, которые допустимы над данными соответствующего типа. В целом над записью можно выполнять только операцию присвоения.
Применительно к поставленной задаче имеем:
Размещено на http://www.allbest.ru/
Рис. 1. Тип - запись с информацией о товаре
Таблица 2. Формат данных
Характеристика |
Тип |
Длина |
|
Код товара |
Integer |
- |
|
Название |
String |
25 |
|
Количество на складе |
Integer |
- |
|
Страна производитель |
String |
15 |
|
Дата выработки |
String |
10 |
|
Срок годности |
Integer |
- |
- Введение
- 1. Назначение системы
- 2. Анализ предметной области
- 3. Алгоритмическая часть
- 3.1 Работа с файлами
- 3.2 Структурированные типы данных
- 3.3 Сортировка
- 3.4 Алгоритм работы программы
- 4. Программная реализация
- 4.1 Назначение программы
- 4.2 Лингвистическое обеспечение
- 4.3 Техническое и программное обеспечение
- 4.4 Описание данных
- 4.5 Проектирование интерфейса
- 4.6 Структура программы
- 4.7 Структура программного комплекса
- 4.8 Инструкция пользователя
- 4.9 Результаты работы программы
- Заключение