- •§ 1. Поняття про інформаційне моделювання
- •Опорний конспект
- •§ 2. Етапи розв’язання задач на комп’ютері
- •§ 3. Середовища розробки проектів
- •§ 4. Властивості елементів керування
- •§ 1. Поняття про інформаційне моделювання 2
- •Контрольна робота № 1
- •§ 5. Створення проектів
- •§ 6. Основні поняття мови програмування
- •9. Процедура кнопки «Обчислити» для задачі про калькулятор.
- •§ 7. Алгоритм та його властивості
- •Запитання
- •§ 8. Різновиди алгоритмів
- •Запитання
- •§ 9. Типи даних
- •§ 10. Лінійні програми
- •Запитання та вправи
- •Контрольна робота № 2
- •§11. Введення даних і виведення результатів
- •§ 12. Текстові файли даних
- •§ 13. Програми з розгалуженням
- •§ 1. Поняття про інформаційне моделювання 2
- •Запитання
- •§ 14. Елементи керування прапорці і перемикачі
- •§ 15. Алгоритмічна конструкція вибір
- •Контрольна робота № 3
- •§ 16*. Списки
- •§ 17. Підпрограми. Функції користувача
- •§ 18. Підпрограми. Процедури користувача
- •§ 19. Цикли. Цикл з параметром
- •§ 20. Задачі пошуку даних. Цикл «доки»
- •§ 21. Застосування циклів
- •Контрольна робота № 4
- •Розділ 2. Складені структури даних
- •§ 22. Одновимірні масиви. Створення масивів
- •§ 23. Пошук даних в одновимірному масиві
- •1. Пошук даних у масиві за заданим критерієм.
- •5. Проект «На метеостанції». Застосування масивів і процедур користувача у vb.
- •§ 24. Впорядкування одновимірного масиву
- •§ 1. Поняття про інформаційне моделювання 2
- •4. Моделювання предметних областей за допомогою масивів.
- •§ 25. Двовимірні масиви. Створення масивів
- •§ 26*. Опрацювання двовимірних масивів
- •1. Елементи керування DataGridView (vb) та DataGrid (vba).
- •Контрольна робота № 5
- •§ 27. Опрацювання текстових даних
- •§ 28. Структури даних (записи)
- •§ 1. Поняття про інформаційне моделювання 2
- •§ 29. Файли даних прямого доступу
- •5. Vb. Команди для роботи з файлами даних прямого доступу.
- •§ 30. Застосування файлів даних послідовного доступу
- •§ 31. Графіка у vb
- •§ 32. Поняття про об’єктно-орієнтоване програмування
- •Розділ 3. Задачі
- •Складніші задачі*
- •Розділ 4. Vba у програмах пакету ms office
- •§ 33. Застосування vba у ms word
- •§ 34. Vba у програмі ms excell
- •§ 35. Задача про облік товарів на складі
- •§ 36. Розв’язування математичних задач
- •§ 37. Робота 3 базами даних
- •Список літератури
- •§ 1. Поняття про інформаційне моделювання 2
§ 26*. Опрацювання двовимірних масивів
У цьому параграфі розглянемо особливі прийоми опрацювання масивів: використання грідів (сіток даних), дії з матрицями, застосування безрозмірних циклів.
1. Елементи керування DataGridView (vb) та DataGrid (vba).
Для роботи з масивами зручно користуватися елементами керування класу «гріди» (англ. DataGrid). Вони призначені для відображення на формі табличних даних з різних джерел (баз даних, електронних таблиць, файлів, масивів). Елементи керування класу DataGrid називають грідами (рідше — сітками даних).
У VBA використання грідів обмежене (оскільки використання компоненти DataGrid потребує додаткової ліцензії). Тому розглянемо застосування грідів DataGridView у VB для введення даних з грідів у масиви і для виведення даних з масивів у гріди.
Грід має вигляд таблиці, яка складається з рядків (Rows) і зазвичай підписаних користувачем стовпців (Columns). На їх перетині є клітинки (Cells), з яких можна читати дані і куди можна записувати дані «вручну» чи програмним способом.
Гріди
вставляють з панелі компонент Toolbox.
Вони
отримують порядкові номери, наприклад:
DataGridViewl,
DataGridView2
і
т.д.
На етапі конструювання у вікні властивостей треба задати кількість стовпців і бажано підписи стовпців (властивість Columns), а також інші властивості (AutoSize..., AllowUser... тощо). Програмним шляхом можна змінити підписи стовпців і додати порожні рядки. А ось стовпці вже додавати не можна.
Вираз DataGridViewl.Rows(i).Cells(j).Value дає доступ до даного, що є в і-му рядку в клітинці з номером j. Увага! Нумерація починається від нуля. У лівому верхньому куті таблиці (першим у таблиці) є значення DataGridViewl.Rows(0).Cells(0).Value. Якщо масиви створюють за принципом ігнорування нульового елемента, то для виведення таких масивів у грід треба брати до уваги розбіжність нумерації, зменшуючи номери у DataGridView на одиницю. Наприклад, занести деякий масив D(10, 10) з нумерацією елементів від одиниці у заздалегідь підготовлений (з необхідною кількістю стовпців і рядків) грід DataGridViewl можна одним із двох способів:
1) For i = 1 То 10
For j = 1 То 10
DataGridViewl.Rows(i - 1).Cells(j - 1).Value = D(i, j)
Next j
Next і
2) For 0 = 1 To 9
For 0 = 1 To 9
DataGridViewl ,Rows(i).Cells(j).Value = D(i + 1, j + 1)
Next j
Next і
Щоб ввести дані з гріду у масив, треба в циклі виконати команду D(i,j)=DataGridView1.Rows(i-1).Cells(j - 1).Value.
Розглянемо деякі інші можливості грідів.
Додати три порожні рядки до гріду можна командою DataGridViewl .Rows.Add(3).
Додати рядок з конкретними даними (2, "three", 4, 5, "Олег") можна так: DataGridViewl.Rows.Add(2, "three", 4, 5, "Олег").
Вставити такий рядок з даними перед, наприклад, третім рядком гріду можна так: DataGridViewl.Rows.Insert(3, 2, "three", 4, 5, "Олег").
Вивести у рядок гріду одновимірний масив А, оголошений як Object, можна одною такою командою (без використання циклу):
DataGridViewl .Rows.Add(A).
Задача 1. Виведіть таблицю Піфагора в грід.
Розв’язування. Вставимо на форму грід і кнопку «Вивести». У конструкторі для гріду побудуємо колекцію стовпців, які підпишемо «сі», «с2»,..., «с10» (чи інакше) і задамо властивості Autosize значення AllCells. Головний код розглядали у попередньому параграфі. Модифікуємо його для виведення таблиці у грід з автоматичним вставлянням рядків і призначимо кнопці «Вивести»:
Dim і, j, D(10, 10)
For i = 1 То 10
DataGridViewl .Rows.Add(1) 'Вставити у грід рядок
For j = 1 То 10
D(i,j) = i‘j
DataGridViewl .Rows(i - 1).Cells(j - 1).Value = D(i, j)
Next j
Next і
Результат подано на рис. 2.3.
Рис. 2.3. Таблиця Піфагора у гріді
Завдання 1. Для набору даних, що є у квадратному гріді, наприклад у таблиці Піфагора, чи введені у грід «вручну», обчислити:
а) суму парних елементів;
б) суму діагональних елементів (умова і = j);
в) суму наддіагональних елементів (умова і < j);
г) суму піддіагональних елементів (умова і > j);
д) кількість елементів, більших від деякого заданого числа d.
Завдання 2. Розв’яжіть задачу про продажі автомобілів з попереднього параграфа з використанням грідів.
Висновок. Гріди є зручним засобом для опрацювання табличних даних. Мало того, значення в грідах можуть належати до різних типів даних.
2. Опрацювання матриць. Двовимірні числові таблиці в математиці називають матрицями. Над матрицями визначені дії додавання, віднімання, множення на число і множення матриці на матрицю. Матриці зберігають у двовимірних масивах.
Задача 2. Використовуючи гріди (чи інші засоби, якщо гріди недоступні), реалізуйте додавання двох матриць А і В розміру 2 на 2 елементи.
Модель задачі. Треба знайти матрицю С, де С = А + В. Операція «+» означає поелементне додавання матриць А і В, тобто сij = аij + bij, де і = 1, 2; j = 1, 2.
Проект. Вставимо на форму кнопку і три гріди, що матимуть два рядки і два стовпці. Код кнопки має забезпечити:
зчитування чисел з двох грідів (чи двох файлів у VBA) у два двовимірні масиви А і В;
створення третього масиву С як поелементну суму двох перших;
виведення третього масиву у третій грід (в третій файл у VBA).
Числа у два перші гріди можуть бути введені після запуску проекту. Третій грід має заповнитися після натискання кнопки. Код кнопки матиме такий вигляд:
Dim А(2, 2), В(2, 2), С(2, 2) As Integer
<ввести дані в масиви А і В з грідів чи інакше >
For і = 1 То 2
For j = 1 То 2
C(i,j) = A(i,j) + B(i,j)
Next j
Next і
<вивести дані з масиву С у грід чи інакше>
Завдання 1. Реалізуйте код, задавши вхідні набори даних як будь-які цілі числа.
Завдання 2. Модифікуйте попередній код для обчислення такої матриці: С = 3А + 2В. Тут 3А означає, що всі елементи матриці А треба помножити на 3.
Завдання 3*. Обчисліть і виведіть у грід матрицю С = А * В. Тут множення треба трактувати як множення матриць (див. формули в довідниках чи в мережі).
3*. Безрозмірний цикл For Each («для кожного»). Розглянемо алгоритмічну конструкцію пошуку в багатовимірних масивах, у колекціях чи інших складених структурах даних. Пошук реалізується шляхом перегляду всіх елементів:
For Each <елемент> In <структура даних> <команди, зокрема, lf> Next <елемент> |
Задача 3. У тривимірному масиві А(3, 3, 3) обчислити суму додатних елементів.
Розв’язування. Тривимірний масив А (як куб чисел) можна заповнити за допомогою трьох вкладених циклів із застосуванням формули чи генератора випадкових чисел так:
For і = 1 То n
For j = 1 То n
For k = 1 То n
А(і, j, k) = ...
Next k
Next j
Next і
Тоді код розв’язування задачі буде такий:
Dim n As Single, А(3, 3, 3) As Single, s As Single
<заповнити масив А як куб чисел>
s = 0
For Each n In А
If n > 0 Then s = s + n
Next n
<вивести s>
Зверніть увагу, цикл «для кожного» замінив три вкладені цикли «для».
Завдання 1. Реалізуйте код розв’язування задачі 3.
Завдання 2. Застосуйте команду For Each для обчислення середнього арифметичного додатних чисел у деякому двовимірному масиві В(10, 10).
Вправи
Розв’яжіть задачу 2 для матриць розміру 3 на 3.
Розв’яжіть задачу № 14 свого варіанта з розділу «Задачі».
