Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_11_VBA.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
12.11 Mб
Скачать

Лекція №8.

Тема: Програмування на мові VBA. Масиви. Розмірність масиву. Одновимірні масиви. Статичні і динамічні масиви. Об’явлення масивів. Використання масивів. Використання ReDim для динамічних масивів.

Масиви

Масивом називається впорядкована послідовність однотипних елементів, кожний з яких має свій порядковий номер, який називається індексом. Елементи масиву розміщаються в послідовних комірках пам’яті. Щоб звернутись до елементу масиву, треба вказати ім’я масиву та індекс елементу масиву. Масиви бувають статичні, динамічні, одновимірні та багатовимірні.

Одновимірний масив – індексована послідовність елементів одного типу, що мають один індекс. Одновимірний масив представляється як вектор. Розмірність масиву – це кількість елементів у масиві. Ім’я масиву позначається ідентифікатором.

Запис одновимірного масиву:

Наприклад: запис одновимірного масиву A(n), що складається з п’яти елементів, тобто має розмірність n= 5

У цьому масиві , і так далі, де i=1,2,3,4,5 - індекси (порядкові номери) елементів у масиві

Статичні масиви - це масиви, які мають постійний або фіксований розмір, який відомий перед виконанням програми

Синтаксис оголошення статичного масиву:

Dim <Ім’яЗмінної>(<індекси>) [As <Тип>] [,<Ім’яЗмінної>(<індекси>) [As Тип>]] …

<індекси> - вказують на розмір масива, можна описувати до 60 індексів

Синтаксис цього параметру [<нижній> to]<верхній>]

Якщо нижній індекс не задано явно, то нижня границя масиву задається інструкцією Option Base на початку модуля в секції General Declarations, якщо ж і вона відсутня, нижня границя масиву дорівнює 0

Наприклад:

Dim A(12) As Integer – оголошує одновимірний масив цілих чисел. Розмір – 12 елементів. Причому за замовчуванням перший елемент масиву – А(0), а останній – А(11). В цьому випадку говорять, що 0 – базовий індекс. Його можна змінити, написавши інструкцію Оption Base 1 на початку модуля в секції. General Declarations Тоді першим елементом масиву буде А(1), а останнім А(12)

Останнє оголошення можна записати так

Dim A(1 to 12) As Integer

Динамічні масиви

Іноді в процесі виконання програми необхідно змінити розмір масиву. В цьому випадку масив оголошують як динамічний. При цьому не треба вказувати розмір.

Наприклад

Dim R() As Single

Потім в програмі необхідно обчислити необхідний розмір масиву в деякій змінній, наприклад, n і змінити розмір динамічного масиву за допомогою інструкції ReDim.

Синтаксис:

ReDim<Ім’яЗмінної>(<індекси>)[As <Тип>][,<Ім’яЗмінної>(<індекси>)[As Тип>]] …

Нариклад,

ReDim R(1 to n) встановлюються межі динамічного масиву від 1 до n. Якщо, наприклад, n=10, то встановлюються межі динамічного масиву від 1 до 10.

Для вирішення задачі по роботі з масивом потрібно виконати наступне:

  1. масив треба оголосити, як динамічний, тобто описати масив з завданням типу елементів динамічного масиву оператором Dim без вказання розміру

  2. обчислити (увести )необхідний розмір масиву в деякій змінній, наприклад, n

  3. змінити розмір динамічного масиву за допомогою оператора ReDim

  4. здійснити введення \ виведення елементів масиву

  5. обчислити масив

  6. вивести результати обчислень.

Уведення елементів одновимірного масиву у програму можна здійснити за допомогою одного з наведених способів:

1. Уведення елементів одновимірного масиву за допомогою функції InputBox:

For i = 1 To n

a(i) = Val(InputBox(“Уведіть елемент масиву А”)

Cells(2, i) = a(i) ‘Виведення елементів масиву на робочий лист

Next i

2. Уведення елементів одновимірного масиву за допомогою генератора випадкових чисел Randomize та функції Rnd() :

Randomize

For i = 1 To n

b(i) = Rnd() * 10 ‘ Уведення додатних елементів масиву

b(i) = (-1) ^ Int(Rnd() * 10) * (Rnd() * 10) ‘Уведення від’ємних елементів масиву

Cells(5, i) = b(i) ‘ Виведення елементів масиву на робочий лист

Next i

‘Range(Cells(5, 1), Cells(5, n)) = b ‘Виведення елементів масиву на робочий лист у діапазон (другий спосіб)

  1. Уведення елементів одновимірного масиву за допомогою зчитування елементів з комірок робочого листа.

Для цього потрібно попередньо записати елементи у комірки на робочому листі.

For i = 1 To n

a(i)= Worksheets(“Лист1”).Cells(3, i) ‘Зчитування елементів з Лист1, записаних у 3-му рядку, починаючи з стовпця А

Next i

Приклад.

Знайти суму елементів одномірного масиву, уведених з робочого листа Excel.

Private Sub sum_mas()

Dim a(), n as Integer

n = InputBox(“Введіть кількість елементів масиву”)

ReDim a(n)

For i = 1 To n

a(i) = Worksheets(“Лист1”).Cells(2, i)

Next i

s = 0

For i = 1 To n

s = s + a(i)

Next i

MsgBox Str(s)

End Sub

Приклад розв’язання задачі на одновимірні масиви

Умова задачі: Заданий масив А(n). Обчислити значення змінної D за формулою:

В ирішення: У задачі потрібно знайти суму елементів масиву А, що має розмірність n та розділити цю суму на обчислене значення мінімального елементу масиву.

Контрольний приклад: Задамо n =5 і масив А =( 4; -6; 1,3; 2,5; -1). Тоді:

D= (4+(-6)+1,3+2,5+(-1)) / (-6)= 0,8

Б лок-схема алгоритму:

так

ні

Лекція №9.

Тема: Програмування на мові VBA. Двовимірні масиви. Статичні і динамічні масиви. Об’явлення масивів. Використання масивів. Використання ReDim для динамічних масивів.

Двовимірний масив – індексована послідовність елементів одного типу. що мають два індекси. Двовимірний масив представляється у вигляді матриці.

Запис двовимірного масиву: , аналогічний запис ,

де ідентифікатор масиву; i, j –індекси (номер рядка та стовпця) елементів у масиві; n, m- розмірність масиву – кількість рядків та стовпців у матриці. Якщо n=m, то матриця вважається квадратною.

У загальному вигляді квадратна матриця А, що має розмірність n=m=3 буде виглядати так:

Статичні масиви - це масиви, які мають постійний або фіксований розмір, який відомий перед виконанням програми

Синтаксис оголошення статичного масиву:

Dim <Ім’яЗмінної>(<індекси>) [As <Тип>] [,<Ім’яЗмінної>(<індекси>) [As Тип>]] …

<індекси> - вказують на розмір масива, можна описувати до 60 індексів

Синтаксис цього параметру [<нижній> to]<верхній>[,[<нижній> to]<верхній>]

Якщо нижній індекс не задано явно, то нижня границя масиву задається інструкцією Option Base на початку модуля в секції General Declarations, якщо ж і вона відсутня, нижня границя масиву дорівнює 0

Щоб оголосити двовимірний масив (матрицю) розміру 3 на 2 дійсних чисел треба записати команди

Оption Base 1

Dim B(3, 2) As Single

або

Dim B(1 to 3, 1 to 2) As Single

Динамічні масиви

Іноді в процесі виконання програми необхідно змінити розмір масиву. В цьому випадку масив оголошують як динамічний і не треба вказувати його розмір.

Наприклад

Dim А() As Single

Потім в програмі необхідно обчислити необхідний розмір масиву в двох змінних, наприклад, n та m і змінити розмір динамічного масиву за допомогою оператора ReDim.

Синтаксис:

ReDim<Ім’яЗмінної>(<індекси>)[As <Тип>][,<Ім’яЗмінної>(<індекси>)[As Тип>]] …

Приклад 1

ReDim А(1 to n, 1 to m) встановлюються межі динамічного масиву від n до m (по кількості рядків та стовпців).

Приклад 2.

Dim B() As Single

N = 2

M = 2

ReDim B(1 to N, 1 to M)

В цьому прикладі показано використання інструкції ReDim.

Для вирішення задачі по роботі з масивом потрібно виконати наступне:

  1. масив треба оголосити, як динамічний, тобто описати масив з завданням типу елементів динамічного масиву оператором Dim

  2. обчислити (увести )необхідний розмір масиву у двох змінних, наприклад, n та m

  3. змінити розмір динамічного масиву за допомогою оператора ReDim

  4. здійснити введення \ виведення елементів масиву

  5. обчислити масив

  6. вивести результати обчислень.

У задачах на двовимірні масиви використовуються вкладені цикли (арифметичні)- внутрішній та зовнішній, керовані по двом індексам.

Уведення елементів двовимірного масиву у програму можна здійснити за допомогою одного з наведених способів:

1. Уведення елементів двовимірного масиву за допомогою функції InputBox:

For i = 1 To n

For j = 1 To m

a(i,j) = Val(InputBox(“Уведіть елемент масиву А”)

Next j

Next i

Range(Cells(1, 1), Cells(n, m)) = a ‘Виведення елементів масиву на робочий лист у діапазон

2. Уведення елементів одновимірного масиву за допомогою генератора випадкових чисел Randomize та функції Rnd() :

Randomize

For i = 1 To n

For j = 1 To m

b(i,j) = Rnd() * 10 ‘ Уведення додатніх елементів масиву

‘b(i,j) = (-1) ^ Int(Rnd() * 10) * (Rnd() * 10) ‘Уведення додатніх та від’ємних елементів масиву

Next j

Next i

Range(Cells(1, 1), Cells(n, m)) = b ‘Виведення елементів масиву на робочий лист у діапазон

Приклад розв’язання задачі на двовимірні масиви

Умова задачі: Задана матриця M(k, p). Побудувати вектор (одновимірний масив ) SM, кожний елемент якого дорівнює сумі елементів кожного стовпця матриці M, розділеній на значення максимального елементу цього стовпця.

Контрольний приклад: Задамо: k =4; р=5 та матрицю М

Знайдемо елементи вектора SM:

(4+(-8)+5+2,4) / 5= 3,4 / 5 = 0,68

(7+1+(-9)+3) / 7= 2 / 7 = 0,2857

(2+3,5+4+0,7) / 4 = 10,2 / 4 = 2,55

(6+3+(-6)+5) / 6 = 8 / 6 = 1,3333

(7,3+(-5)+8+1) / 8 = 11,3 / 8 = 1,4125

Таким чином, вектор SM = (0,68; 0,2857; 2,55; 1,3333; 1,4125)

Блок-схема алгоритму:

max = m(i,j)

ні

так