Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Пользовательский тип

Можно определить данные, состоящие из нескольких логически связанных между собой элементов – структура данных (User-Defined Data Type). Каждый пользовательский тип описывается с помощью инструкции Type в области Declarations. Завершение определения пользовательского типа данных – инструкция End Type. Например:

Type sqn

sqn_zero As Integer

sqn_unity As Integer

End Type

Важно

  • Определяемые пользователем типы данных могут включать в себя один или несколько элементов любого типа данных, в том числе массивы и определенные пользователем типы данных.

  • Не допускается номеров строк и меток строк в блоке Type...End Type.

  • Можно создавать массивы типов данных, определяемых пользователем. При описании массива фиксированного размера с пользовательским типом данных нельзя использовать переменные для задания размерности массива.

  • Структура пользовательского типа данных может быть многоуровневой. Обращение к элементу структуры осуществляется при помощи составного имени для исключения неоднозначности. Полное составное имя включает в себя имена структуры и всех подструктур, в которые входит опеределяемый элемент. Имена подструктур должны следовать в порядке иерархии, т.е. в том же порядке, в котором они определены в структуре.

  • Для структур в целом применимы только операторы присваивания, элементы структур можно использовать в выражениях, соответствующих типу элемента.

Пример

Подсчитать нули и единицы в единичной квадратной матрице.

Type sqn

sqn_zero As Integer

sqn_unity As Integer

End Type

Sub count_element()

Dim arr As sqn ‘определение переменной ‘пользовательского типа

Dim A(), i As Integer, j As Integer, d As Integer

d = InputBox("Введите размерность матрицы")

ReDim A(1 To d, 1 To d) ‘квадратная матрица

For i = 1 To d

For j = 1 To d

If i = j Then ‘диагональный элемент

A(i, j) = 1

Else

A(i, j) = 0

End If

Next j

Next i

arr.sqn_unity = d ‘количество единиц

arr.sqn_zero = d^2- arr.sqn_unity ‘количество нулей

Debug.Print arr.sqn_zero, arr.sqn_unity

End Sub

Оператор Dim arr As sqn определяет переменную arr приведенного выше пользовательского типа данных sqn, состоящую из двух элементов. В процедуре обращение к элементам структуры выполнено с указанием названия структуры в виде arr.sqn_zero и arr.sqn_unity.

Раздел 4.Операторы управления

Любая процедура это последовательность операторов. Стандартный порядок выполнения операторов – последовательный, сверху-вниз или слева-направо, если несколько операторов записаны в одной строке и разделены двоеточием.

Управляющие операторы позволяют изменить этот порядок. Процедура, включающая управляющие операторы, может принимать решения в зависимости от значений данных или от состояния приложения.

Управляющие операторы, определяя альтернативный порядок выполнения команд (ветвление) или повторение некоторой совокупности команд (циклы), ограничивают операторными скобками некоторую совокупность команд.

Операторы комментариев и операторы объявления переменных не являются исполнительными операторами.