Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Лекція 6




МАСИВИ

Лекція 5

План лекції:

5.1. Статичні масиви

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

5.3. Функція створення масиву Array

5.4. Використання одновимірних маси

5.5. Використання двовимірних масивів

 

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

Кожен елемент масиву має свій номер (індекс). Причому таких номерів може бути декілька. Кількість різних індексів визначає вимірніть масиву. Бувають одновимірні (вектори), двовимірні (матриці), тривимірні і т.д. кожен індекс може набувати різних значень з визначеного діапазону. Мінімальне Nmin і максимальне Nmax значення діапазону зміни індексу називається граничною парою. Кількісь різних знвчень індексу визначає кількість елементів К в масиві. Так, для одновимірного масиву

К = Nmax-Nmin+1

При використанні масивів в Visual Basic нумерація масивів за замовчуванням починається з нуля. В математиці елементи масивів нумеруються з одиниці (1). Оператор Option Base дозволяє задати індексацію з 1.

Синтаксис: Option Base 1

Зауваження! Цей оператор повинен знаходитись в секції (General) (Declrations) контейнеру (форми, модулю, класу). Допустимими значеннями для Option Base є тільки 0 або 1.

 

5.1. СТАТИЧНІ МАСИВИ

 

Для об’явлення масивів використовують оператор 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 – верхні границі.

5.2. ДИНАМІЧНІ МАСИВИ

 

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

Динамічний масив створюється в два етапи. Спочатку масив визначають в секції (General) (Declarations) контейнеру (форми, модуля) без указання розміру.

Приклад. '(General) (Declarations)

Dim А() As Variant

Потім за допомогою оператора ReDim встановлюють фактичний розмір масиву.

Синтаксис: ReDim [ Preserve ] <ім'я> (границі) [As тип даних]

Оператор ReDim використовується тільки в процедурах. Тип даних вказувати необов'язково, особливо, коли тип вже визначений оператором Dim.

Приклад. '(General) (Declarations)

Dim А() As Variant

Private Sub Command 1_Click()

ReDim A(50То10)

Тіло процедури

End Sub

Не допускається оголошувати масив з даними одного типу, а потім використати ReDim для приведення до іншого типу, за виключенням випадку, коли масив містить змінні типу Variant.

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

Приклад. '(General) (Declarations)

Dim А() As Variant

Private Sub Command 1_Click()

ReDim Preserve A(50 To 15)

Тіло процедури

End Sub

 

Зауваження! При використанні ключового слова Preserve можна змінювати тільки верхню границю.

 

Приклад. ‘(General) (Declarations)

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

 

5.3. ФУНКЦІЯ СТВОРЕННЯ МАСИВУ ARRAY

 

Призначення.

Функція створює новий масив типу Variant, який буде відразу заповнений зазначеними елементами. Якщо Ви хочете створити масив іншого типу, то оголошуйте його за допомогою оператора Dim.

Синтаксис: Аrrау(<список елементів масиву>)

Список елементів масиву типу Variant, в якому елементи розділяються комами. При відсутності списку, створюється масив нульової довжини.

 

Зауваження! Зверніть увагу, що нумерація елементів масиву починається з 0. Якщо хочете почати з 1, використовуйте Option Base 1.

 

Приклад. Створити масив А з елементами 5, 7, 12. Змінній В присвоїти значення елемента масиву А, який стоїть на третьому місці.

Dim A,B As Integer ’Об’явлені цілочисельні змінні,

A=Array(5,7,12) ’Створено масив з трьох елементів. Індексація елементів масиву починається з 0.

B=A(2) ’В передається другий елемент масиву А.

Print B ’Повертається 12.

5.4. ВИКОРИСТАННЯ ОДНОВИМІРНИХ МАСИВІВ

 

Описування одновимірного масиву здійснюється оператором 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

5.5. ВИКОРИСТАННЯ ДВОВИМІРНИХ МАСИВІВ

 

Часто доводиться обробляти великі груп даних.

Перед створенням двовимірний масив також оголошують, при цьому залежно від місця оголошення масив може бути як локальним, так і глобальним. Якщо кількість елементів масиву відомо, то це масив з фіксованими межами. У випадку змінної кількості елементів створюють динамічний масив. Для оголошення масиву використовують оператор

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

Print

Next i

В даній програмі виведення нового рядка масиву здійснюється в новий рядок форми.

Приклад. Сумування елементів масиву. Для двовимірного масиву В розміром NxM необхідно обчислити

S=0

For i=1 To N

For j=1 To M

S=S+B(i,j)

Next j

Next i

Приклад. Підсумовування матриць. Для двовимірних масивів А та В розміром N x M. Необхідно обчислити

, 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

Приклад. Підсумовування діагональних елементів матриці. Обчислення ліду матриці. Для матриці В розміром N x N

REM Обчислення сліду матриці

S=0

For i=1 To N

S=S+B(i,j)

Next i

Приклад. Підсумовування елементів рядків матриці. Необхідно обчислити суму елементів кожного рядка матриці В розміром N x М. Результат отримати у вигляді вектора D, тобто обчислити

REM Сумування матриці по рядкам

For i=1 To N

S=0

For j=1 To M

S=S+B(i,j)

Next j

D(i)=S

Next i

Приклад. Транспонювання матриці. Необхідно заменіти рядки матриці її стовпцями, а стовпчики – рядками, тобто обчислити

, i=1,2,…,N j=1,2,…,M

REM Транспонування матриці

For i=1 To N

For j=1 To M

B(i,j)=A(j,i)

Next j

Next i

Приклад. Множення матриці на вектор. Для обчислення добутку С матриці А розміром N x М на вектор В розміром М, тобто обчислити

REM Множення матриці на вектор

For i=1 To N

For j=1 To M

S=S+A(i,j)*B(j)

Next j

С(i)=S

Next i

Приклад. Множення матриці на матрицю. Для множення матриці А(N,К) матрицю В(К,М) необхідно обчислити

, i=1,2,…,N j=1,2,…,M

REM Множення матриці на матрицю

For i=1 To N

For j=1 To M

S=0

For l=1 To K

S=S+A(i,l)*B(l,j)

Next l

С(i,j)=S

Next j

Next i

Приклад. Перестановка рядків матриці:

а) з використанням допоміжної змінної Р

REM Перестановка рядків

For К=1 To M

Р=A(і,К)

A(і,К)=A(j,К)

A(j,К)=Р

Next К

б) з використанням допоміжного масиву С

REM Перестановка рядків

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

КОНТРОЛЬНІ ЗАПИТАННЯ

 

1. Що таке масив? З якою метою використовуються масиви даних?

2. Які існують види масивів? Наведіть пиклади.

3. Що означає поняття вимірність масиву?

4. Наведіть приклади одновимірних, двовимірних і тривимірних масивів.

5. Як здійснюється введення та виведення елементів матриці на мові Visual Basic?

6. Введення-виведення елементів одновимірного масиву. Наведіть приклади.

7. Наведіть приклади формування елементів одновимірного масиву на довільному проміжку за допомогою функції RND.

8. Яким чином формується масив по умові. Наведіть приклади.

9. Яким чином можна обробити масив, відсортувати його елементи?

10. Наведіть приклади формування елементів двовимірного масиву на довільному проміжку за допомогою функції RND.

11. Який алгоритм визначення найбільшого та найменшого елементів матриці?

12. Для чого використовується функція Option Base?

13. Яку пару елементів масиву можна назвати гранічною?

14. Для чого використовується ключове слово Preserve?

15. За дапомогою якого оператору можна оголосити масив типу Variant?





Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 409; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.