Съставни типове данни Печат

Съставни типове данни

Във VBA са реализирани два типа съставни данни:

-         масиви;

-         тип, определен от потребителя.

10.1. Масиви

Масивите са първият съставен тип данни, който се появява в езиците за програмиране от високо ниво, и се използва в изчислителните задачи при работа с вектори и матрици. В литрературата се наричат подреден тип данни.

Масивът е клас от обекти, които се състоят от елементи от един и същи тип /наредена последователност от еднотипни елементи, означавани с едно и също име, снабдено с един или повече индекси/.

Във VBA са реализирани два типа масиви – статични и динамични масиви. В много езици за програмиране терминът масив се използва за статичните масиви, тъй като в тях не се реализират динамични (СИ, Паскал и др.).

10.1.1. Статични масиви

Ако броят на елементите е известен предварително се изпозлват статични масиви.

Статичният масив е съвкупност, състояща се от фиксиран брой елементи.

Синтаксисът при дефиниране на масиви е:

Dim | Private | Public | Static име на масив ([индекси]) [As тип]

където:

индексите, ако се задават представляват следната последователност:

[долна граница1 To] горна граница1 [, [долна граница2 To] горна граница2] ... [ , [долна границаN To]  горна границаN]

Както се вижда единствените задължителни параметри в дефиницията са името на масива и кръглите скоби след него. Когато е зададена само горната граница за индекс, долната се приема по премълчаване и е определена от компилаторската опция Option Base. Когато не е зададен типът на базовите елементи се приема по премълчаване за Variant. Когато и Option Base не е зададен номерацията се приема от 0.

Dim | Private | Public | Static, To, As са ключови думи.

Опцията Option Base в модула предшества описанието на подпрограмата и функцията и действа в границите на дадения модул.

За масивите не са разрешени никакви операции, а за елементите на масивите са възможни тези оперции, които са допустими за типа данни към които се отнасят.

Посочването на елемент от масив /цитиране/ става, като след името в кръгли скоби се поставят действителни индекси.

Например петивтелемент от едномерния масив с име А ще се цитира с А(5). Действителните индекси могат да бъдат константи, променливи или изрази.

10.1.2. Работа с едномерни масиви

В този раздел ще илюстрираме ползването на масиви в програмите на VBA с множество характерни алгоритми върху едномерни масиви.

Задача 1. Съставете програма на VBA, която въвежда елементите на едномерния масив А(М), М ≤ 30 и определя сумата от неговите елементи.

Option Explicit

Option Base 1

Sub sumarray()

Dim i, m As Integer

Dim Sum As Single

Dim A(30) As Single

m = InputBox("Въведете брой елементи на масива", "Въвеждане на данни", 5)

' Логически контрол на текущия брой елементи

Do While m 30

m = InputBox("Грешен брой елементи. Въведи ново m", "Въвеждане на данни", 5)

Loop

For i = 1 To m

A(i) = InputBox("A[" & i & "]=", "Въвеждане елементите на масива А", 1)

Next

Sum = 0

For i = 1 To m

Sum = Sum + A(i)

Next

MsgBox "Стойността на сумата от елементите на масива е=" & Sum

End Sub

Задача 2. Съставете програма на VBA, която въвежда елементите на едномерния масив А(м), м≤40 и определя най-големия елемент и неговото място в масива.

Option Explicit

Option Base 1

Sub maxelement()

Dim i, m, kmax As Integer

Dim Max As Single

Dim A(40) As Single

m = InputBox("Въведете брой елементи на масива", "Въвеждане на данни", 5)

' Логически контрол на текущия брой елементи

Do While m 40

m = InputBox("Грешен брой елементи. Въведи ново m", "Въвеждане на данни", 5)

Loop

For i = 1 To m

A(i) = InputBox("A[" & i & "]=", "Въвеждане елементите на масива А", 1)

Next

Max = A(1)

kmax = 1

For i = 2 To m

If A(i) > Max Then Max = A(i): kmax = i

Next

MsgBox "Стойността на най-големия елемент от масива е=" & Max

MsgBox "Най-големият елемент от масива се намира на " & kmax & " място"

End Sub

10.1.3. Динамични масиви

В случаите, когато размерността на масив не е известна се използват динамични масиви.

Динамичният масив е масив, при който броят на елементите и техния тип може да се променя в процеса на работа на програмата.

Синтаксис:

Dim | Private | Public nameArray () [As]

където:

nameArray е името на масива;

nameType е името на типа на елементите;

Dim | Private | Public, As са ключови думи.

За динамичните масиви не са разрешени никакви операции, а за елементите на масивите са възможни тези операции, които с допустими за типовете данни, към които те се отнасят.

За работа с динамичните масиви, заделяне на памет за тях (определяне на размерността, границите на изменение на индексите, типът на елементите) или промяна (промена на размерността, границите на изменение на индексите, типът на елементите) се изпозлва операторът Redum.

10.2. Типове данни, определени от потребителя

Както за простите типове данни е въведен потребителския тип Enum, така и за съставните е дадена възможност за създадване на собствени типове данни.

Типът данни, определен от потребителя в другите езици за програмиране често се нарича записи. Затова този термин ще се изпозлва за дадения тип данни.

Типът на данните, определн от потребителя (записи) е клас обекти, съдържащи фиксиран брой елементи. Елементите могат да бъдат от различен тип. Синтаксисът е:

За записите са допустими само операции присвояване, а за елементите операции, които са допустими за типовете данни, към които те се отнасят.