ЗМІСТ:
Масив – це впорядкований набір даних одного типу, кожен з яких має свій порядковий номер, що називається індексом. Розрізняють статичні та динамічні масиви.
Той факт, що масив є сукупність елементів, а не один елемент, вказує на те, що цей тип даних відноситься до даних структурованого типу.
Масив характеризується:
ім’ям (ідентифікатором);
розмірністю;
розміром;
типом елементів;
значенням елементів.
Ім’я масиву записується за правилами запису імен простих змінних. Отже, всі елементи масиву мають одне і те ж ім’я – ім’я масиву.
Звертання до елемента масиву здійснюється за допомогою його імені та індексу. Окремий елемент масиву – це індексна змінна, ім’я якої складається з імені масиву та індексів елемента. Тобто, кожен елемент в масиві має свій порядковий номер (індекс).
Індекс – порядковий номер елемента масиву. Таких номерів може бути декілька. Кількість індексів визначає вимірність масиву.
У Visual Basic нумерація елементів масиву за замовчуванням починається з нуля. В математиці елементи масивів нумеруються з одиниці (1). Оператор Option Base дозволяє задати індексацію з 1.
Синтаксис: Option Base 1
Цей оператор повинен знаходитись в секції (General) (Declrations) контейнеру (форми, модулю, класу). Допустимими значеннями для Option Base є тільки 0 або 1.
Розмірність масиву визначається за кількістю вимірів (індексів), які необхідно задати, для того щоб визначити місцезнаходження елемента у масиві. Залежно від розмірності масиви поділяють на:
одномірні, якщо індекс один;
двомірні, якщо індексів два;
тримірні, якщо індексів три і т.д.
Наприклад:
a(5) – п’ятий елемент одномірного масиву а;
b(4,5) – елемент двомірного масиву b, що знаходиться у 4-ій стрічці та 5-му стовпчику;
c(i, j, k) – елемент тримірного масиву c, що знаходиться у i-ій стрічці, j-му стовпчику та k-ій пластині.
Структури одномірного, двомірного та тримірного масивів наведені на рис.1, 2 та 3 відповідною.
Рис.1 Структура одномірного масиву
Рис. 2. Структура двомірного масиву
Рис. 3. Структура тримірного масиву
Теоретично, розмірність масиву можу бути будь-якою, але найчастіше використовуються одномірні (які в математиці називають вектором) та двомірні масиви (матриці).
Розміри масиву визначаються мінімальними та максимальними значеннями його індексів. Значення індексів задають при оголошенні масиву.
Тип елементів масиву – це один зі стандартних типів даних, передбачених мовою VB або тип даних, які визначає розробник проекту. Інакше кажучи, можуть бути масиви даних числового типу, масиви рядків, масиви дат, масиви даних і т.д. Важливо зрозуміти те, що всі елементи масиву мають бути одного і того ж типу: якщо, наприклад, перший елемент масиву має тип Single, то і всі інші також мають бути тільки цього типу.
Оголошення масивів. Масиви бувають статичні та динамічні. Розміри статичних масивів задаються під час їх оголошення, а динамічних – ні. Розміри статичних масивів під час виконання програмного коду змінювати не можна, а динамічних – можна.
Для оголошення статичного масиву використовують оператор Dim.
Синтаксис:
Dim <ім'я> (n) As <тип>,
де <ім'я> – довільний ідентифікатор;
n – натуральне число, яке вказує на розмірність масиву (max кількість елементів в масиві).
Приклад. Dim а(5) As Single – означає, що маємо 5 значень в масиві а (a0,a1,a2,a3,a4) одинарної точності з плаваючою десятковою комою.
Для встановлення інших границь масиву необхідно використати наступний синтаксис:
[Static | Public| Dim|<Імя >(<нижня границя > То <верхня границя>)
Visual Basic дозволяє також створювати багатовимірні масиви. При оголошенні багатовимірного масиву, границі кожного виміру розділяються комами.
Синтаксис:
Dim <Ім’я> (<нижня границя> То <верхня границя>, ...,
<нижня границя> То <верхня границя>)
Приклад. Dim X(10 To 80, 1 То 25, 1956 То 2050) – задано тривимірний масив X, де 10,1,1956 – нижні границі; 80, 25, 2050 – верхні границі.
Інколи при оголошенні масиву його розмір невідомий. В такому випадку слід оголошувати динамічний масив. Це дозволяє змінювати його розмір під час виконання програми.
Під час оголошення динамічних масивів не вказують значення індексів за кожним із його вимірів. Приклад опису динамічних масивів:
Dim p(), r() As Double – оголошені два динамічні масиви р та r елементів типу Double;
Dim s () – оголошений динамічний масив s елементів типу Variant.
Якщо під час виконання програми розміри динамічного масиву стають відомими (вони можуть бути обчислені, введені з клавіатури тощо), то потрібно перевизначити його з допомогою оператора ReDim, як це показано у такому фрагменті:
m = Val(InputBox(“Введіть максимальне значення першого індексу масиву s!”))
m = Val(InputBox(“Введіть максимальне значення другого індексу масиву s!”))
ReDim s(m,n)
Динамічний масив створюється в два етапи. Спочатку масив визначають в секції (General) (Declarations) контейнеру (форми, модуля) без указання розміру.
Приклад.
Dim А( ) As Variant
Потім за допомогою оператора ReDim встановлюють фактичний розмір масиву.
Синтаксис:
ReDim [ Preserve ] <ім'я> (границі) [As тип даних]
Оператор ReDim використовується тільки в процедурах. Тип даних вказувати необов'язково, оскільки він вже визначений оператором Dim.
Не допускається оголошувати масив з даними одного типу, а потім використати ReDim для приведення до іншого типу, за виключенням випадку, коли масив містить змінні типу Variant.
При використанні оператора ReDim виникає небезпека втрати вмісту масиву, оскільки після зміни розмірності елементам присвоюються значення за замовчуванням. Щоб не було втрати вмісту необхідно застосовувати ReDim разом з ключовим словом Preserve.
Приклад.
Dim А( ) As Variant
Private Sub Command 1_Click()
ReDim Preserve A(50 To 15)
Тіло процедури
End Sub
При використанні ключового слова Preserve можна змінювати тільки верхню границю.
Приклад.
Dim А( ) As Variant
Private Sub Command 1_Click
ReDim A (10 To 20)
ReDim Preserve A(10 To 25)’ Вірно
ReDim Preserve A(15 To 25)’ Помилка
Тіло процедури
End Sub
Функція ARRAY створює новий масив типу Variant, який буде відразу заповнений зазначеними елементами. Якщо потрібно створити масив іншого типу, то його оголошують за допомогою оператора Dim.
Синтаксис:
Аrrау(<список елементів масиву>)
Список елементів масиву перелічуються через кому. При відсутності списку, створюється масив нульової довжини.
Зверніть увагу, що нумерація елементів масиву починається з 0. Для початку відліку з 1, використовують Option Base 1.
Приклад. Створити масив А з елементами 5, 7, 12. Змінній В присвоїти значення елемента масиву А, який стоїть на третьому місці.
Dim A,B As Integer ’Оголошені цілочисельні змінні,
A=Array(5,7,12) ’Створено масив з трьох елементів. Індексація елементів масиву
починається з 0.
B=A(3) ’В передається третій елемент масиву А.
Print B
Опис одновимірного масиву здійснюється оператором Dim такими способами:
Dim Ім’я_змінної (Nmax) [<As Тип_елементів>]
Dim Ім’я_змінної (Nmin To Nmax) [<As Тип_елементів >]
У першому випадку вважається, що Nmin=0. Якщо потрібно, щоб нижня межа діапазону зміни індексу у всіх масивів, описаних першим способом, була не 0, а 1, то перед першою процедурою коду потрібно помістити оператор Option Base 1.
У цьому разі верхня межа буде визначати кількість елементів у масиві.
Доступ до елемента масиву здійснюється за допомогою імені масиву й індексу.
Слід мати на увазі, що будь-яка обробка масивів здійснюється поелементно.
Приклад: Введення одновимірного масиву B розміром N:
Dim B(N)
For i=1 To N
B(i)=Inputbox(“Введіть B(“& i &”)” & “елемент масиву”, “Вікно вводу вектора”)
Next i
Приклад. Виведення одновимірного масиву B(N):
For i=1 To N
Print B(i)
Next i
Приклад. Сума елементів масиву B(N):
S=0
For i=1 To N
S=S+ B(i)
Next i
Приклад. Сума двох масивів А і В розміром N:
For i=1 To N
C(i)=A(i) + B(i)
Next i
Приклад. Визначити кількість елементів масиву В(N), що задовольняють умову В(і)>Т, де Т – задане число:
K=0
For i=1 To N
If B(i)<=T goto м1
K=K 1
м1
Next i
Приклад. Визначення суми елементів масиву В(N), задовольняючих заданій умові (В(і)>Т):
S=0
For i=1 To N
If B(i)>=T Then S=S B(i)
Next i
Приклад. Формування масиву В(М) із елементів іншого масиву А(N), задовольняючих заданій умові (А(і)>Т):
j=0
For i=1 To N
If A(i)>T Then
j=j 1
B(j)=A(i)
End If
Next i
Приклад. Пошук максимального елементу в масиві А(N) із запам’ятовуванням його положення (індексу) в масиві:
P=A(1)
K=1
For i=2 To N
If P<=A(i) Then
P=A(i):K=i
End If
Next i
Приклад. Об’єднання двох масивів А і В розміром N в один масив С розміром 2N з чергуванням елементів початкових масивів:
For i=1 To N
C(2*i-1)=A(i)
C(2*i)=B(i)
Next i
Приклад. Упорядкування масиву А(N) в порядку зростання елементів:
For i=1 To N-1
P=A(i):K=i
For j=i 1 To N
If A(j)<=P Then
P=A(j):K=j
End If
Next j
A(k)=A(i):A(i)=P
Next i
Перед створенням двовимірний масив також оголошують, при цьому залежно від місця оголошення масив може бути як локальним, так і глобальним. Якщо кількість елементів масиву відома, то це – масив з фіксованими межами. У випадку змінної кількості елементів створюють динамічний масив. Синтаксис оголошення двовимірного масиву:
Dim <ім’я масиву> (<число1>,<число2>)[<As тип даних>]
де ім'я масиву – ім'я змінної типу «масив»;
число1 – розмір масиву (число рядків);
число2 – розмір масиву (число стовпців);
тип даних – тип даних масиву (за замовчуванням: тип Variant).
Кожен елемент масиву має свій індекс (місце розташування в масиві), що складається з номера рядка та номера стовпця. По замовчуванню значення нижньої межі масиву рівнюється нулю.
Наприклад, елементи двовимірного масиву А(2,3), що складається із трьох рядків і чотирьох стовпців, характеризуються такими індексами:
А(0,0); А(0,1); А(0,2); А(0,3)
А(1,0); А(1,1); А(1,2); А(1,3)
А(2,0); А(2,1); А(2,2); А(2,3)
Але, якщо в розділі General модуля програми помістити оператор Option Base 1, то елементи масиву будуть нумеруватись з одиниці. При необхідності базовий індекс при оголошенні масиву можна змінювати шляхом використання ключового слова То:
Dim StrMyArray(1 To 3, 1 To 4) As String.
Під час роботи з масивами використовують оператори циклу For…Next, при цьому лічильник повторень циклів пов’язується з індексами елементів.
У якості індексів можна використовувати не тільки константи, але і змінні, що дає можливість задавати дії над будь-якими елементами масиву. В пам’яті елементи двовимірного масиву розташовуються порядково.
У мові VB 6.0 не визначені операції із матрицями, тому будь-яка обробка матриць здійснюється поелементно.
Приклад. Введення двовимірного масиву В розміром 4х5.
Dim B(4,5)
For i=1 To 4
For j=1 To 5
B(i,j)=Inputbox(“Введіть B(“& i &”,”& j &”)” & “елемент масиву”, “Вікно вводу матриці”)
Next j
Next i
Введення двовимірного масиву в наведеній програмі здійснюється по рядкам.
Приклад. Виведення двовимірного масиву по рядкам
For i=1 To 5
For j=1 To 5
Print B(i,j)
Next j
Next i
В даній програмі виведення нового рядка масиву здійснюється в новий рядок форми.
Приклад. Визначення суми елементів двовимірного масиву В розміром NxM:
S=0
For i=1 To N
For j=1 To M
S=S B(i,j)
Next j
Next i
Приклад. Сума елементів двовимірних масивів А та В розміром NxM:
,
i=1,2,…,N j=1,2,…,M
For i=1 To N
For j=1 To M
C(i,j)=A(i,j) B(i,j)
Next j
Next i
Приклад. Обчислення суми елементів кожного рядка матриці В розміром NxМ. Результат отримати у вигляді вектора D, тобто обчислити
For i=1 To N
S=0
For j=1 To M
S=S B(i,j)
Next j
D(i)=S
Next i
Приклад. Обчислення добутку С матриці А розміром NxМ на вектор В розміром М, тобто обчислити
For i=1 To N
For j=1 To M
S=S A(i,j)*B(j)
Next j
С(i)=S
Next i
Приклад. Перестановка рядків матриці:
а) з використанням допоміжної змінної Р
For К=1 To M
Р=A(і,К)
A(і,К)=A(j,К)
A(j,К)=Р
Next К
б) з використанням допоміжного масиву С
For К=1 To M
С(К)=A(і,К)
Next К
For К=1 To M
A(і,К)=A(j,К)
Next К
For К=1 To M
A(j,К)=С(К)
Next К
Приклад. Пошук мінімального елемента матриці:
Р=А(1,1)
К=1 : L=1
For i=1 To N
For j=1 To M
If P<=A(i,j) Then Goto metka1
P=A(i,j)
K=i
L=j
metka1:
Next j
Next i
Питання для перевірки:
Що таке масив? З якою метою використовуються масиви даних?
Які існують види масивів? Наведіть приклади.
Що означає поняття вимірність масиву?
Наведіть приклади одновимірних, двовимірних і тривимірних масивів.
Як здійснюється введення та виведення елементів матриці на мові Visual Basic?
Введення-виведення елементів одновимірного масиву. Наведіть приклади.
Наведіть приклади формування елементів одновимірного масиву на довільному проміжку за допомогою функції RND.
Яким чином формується масив по умові. Наведіть приклади.
Яким чином можна обробити масив, відсортувати його елементи?
Наведіть приклади формування елементів двовимірного масиву на довільному проміжку за допомогою функції RND.
Який алгоритм визначення найбільшого та найменшого елементів матриці?
Для чого використовується функція Option Base?
Яку пару елементів масиву можна назвати граничною?
Для чого використовується ключове слово Preserve?
За допомогою якого оператору можна оголосити масив типу Variant?
З якою метою створюється масив елементів?
Який значення має властивість елементів керування «Index»?
Як можна змінити кількість елементів у масиві?
Яка особливість новостворених елементів?
Як можна створювати багатовимірні масиви?
Войтюшенко Н. М., Інформатика і комп’ютерна техніка: навч. пос. [для сутд. вищ. навч. закл.]/ Н.М. Войтюшенко, А.І.Остапець. – К.: Центр учбової літератури, 2009. – 564 с.
Трофименко О.Г. Програмування в Visual Basic. [Методичний посібник для лабораторних занять]. – Одеса, 2004. – 38 с.
Рогоза М.Є. Основи інформатики та технологій програмування: навчальний посібник / Рогоза М.Є., Рамазанов С.К., Велігура А.В., Танченко С. М. - Луганськ: Вид-во СНУ ім. В.Даля, 2012. - 568 с.