- •§ 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
4. Моделювання предметних областей за допомогою масивів.
Задача 3. Змоделювати предметну область про студентів трьома текстовими масивами: масивом імен чи прізвищ А, масивом В з оцінками відповідних осіб і масивом С з адресами цих осіб. Упорядкувати масив А за алфавітом, переставляючи одночасно елементи в масивах В і С.
Розв’язування. Занесемо в масив А такі імена:
Наталка, Тарас, Юля, Роман, Галя, Андрій.
Задача зводиться до впорядкування елементів масиву А з даними типу String за зростанням. Тут «більшим» є текст, який починається з букви, що в алфавіті міститься дальше. Код буде той же, що і вище, але перші п’ять команд треба замінити на такі:
' Програма упорядкування масиву імен
Dim А(6) As String
Dim с As String
Dim і, j, n
A(1) = "Наташа": A(2) = "Тарас": A(3) = "Роман"
A(4) = "Галя": A(5) = "Юля": A(6) = "Андрій"
Після виконання програми отримаємо список імен за алфавітом:
Андрій Галя Наталка Роман Тарас Юля.
Масиви В і С називають асоційованими до масиву А, оскільки вони містять додаткові відомості про осіб, імена яких занесені в масив А. Тому, щоб оцінки й адреси завжди асоціювалися (узгоджувалися) із заданою особою, потрібно, міняючи місцями елементи в масиві А, міняти так само місцями елементи в масивах В і С.
Завдання 1. Для масиву А створіть два асоційовані масиви В і С з будь-якими значеннями, що логічно відповідають змісту задачі. Доповніть код командами переставляння місцями значень у масивах В і С (команди такі ж, як і для масиву А). Виконайте код і переконайтеся, що під час упорядкування імен правильно переставляються значення в асоційованих масивах.
Завдання 2. Знайшовши спочатку в масиві А особу з іменем Галя і з’ясувавши її номер, виведіть на екран її оцінку та адресу.
5*. Пошук даних в упорядкованому масиві. Метод бісекції. Нехай в масиві А є імена осіб, а асоційовані масиви В і С містять оцінки й адреси цих осіб.
Задача 4. Визначити оцінку й адресу конкретної особи, наприклад, Галі.
Розв’язування. Нехай в масиві А є такі імена: Наталка, Ростик, Тарас, Роман, Галя, Андрій, Юля. Позначимо номер шуканого елемента в масиві А через г. Вважатимемо, що нумерація елементів починається від одиниці. Оскільки ім’я Галя є п’ятим у масиві імен, то 2 = 5. Відповідь — значення В(5) і С(5).
Однак насправді формальний виконавець імен не бачить, тому він спочатку розглядає (вибирає) перший елемент масиву А і порівнює його з еталоном, тобто перевіряє, чи А(1) = "Галя". Якщо А(1) = "Галя", то 2 = 1, і виконавець пошук закінчує, якщо ні, то він розглядає другий елемент масиву. Якщо А(2) = "Галя", то z = 2 і т.д. У нашому випадку вибирань і порівнянь буде 5, поки буде визначено, що 2 = 5. Відповідь: В(z) і С(z).
Якщо масив має багато елементів і шуканий елемент є десь у його кінці, то описаний алгоритм пошуку неефективний, зважаючи на велику кількість невдалих вибирань. Обчислювальну складність такого алгоритму оцінюють як О(п).
Для ефективного розв’язування задачі пошуку потрібного даного застосовують метод бісекції — послідовного ділення впорядкованого масиву навпіл. Обчислювальна складність цього алгоритму — 0(log2n).
Метод бісекції застосовують до впорядкованого масиву. Тому масив А треба спочатку впорядкувати, наприклад, за зростанням. Відповідно треба поміняти місцями елементи в масивах В і С.
Далі розглядатимемо задачу за умови, що масив А вже є впорядкований за зростанням і два асоційовані масиви змінені.
Упорядкований масив А містить п — 7 елементів (формальний виконавець їх не бачить):
Андрій Галя Наталка Роман Ростик Тарас Юля.
Алгоритм методу бісекції такий:
Вибрати середній елемент: А(4). Тут А(4) = "Роман".
Якщо А(4) = "Галя", то відповідь k = 4 і стоп (але це не так).
Якщо А(4) < "Галя", то далі шукати в правій частині масиву:
5 6 7
Ростик Тарас Юля,
Якщо А(4) > "Галя”, то далі шукати у лівій частині масиву:
1 2 3
Андрій Галя Наталка.
Вибрати середній елемент А(2).
Якщо А(2) = "Галя" (а це так), то відповідь k = 2 і стоп, інакше — пошук продовжити праворуч чи ліворуч.
Як бачимо, елемент "Галя" був знайдений за дві операції вибирання елементів масиву А, а не за п’ять, як раніше.
Виконаємо формальний опис алгоритму бісекції. Нехай у змінних n1 і n2 містяться номери першого й останнього елементів, тобто спочатку n1=1 і n2=n. Нехай змінна z міститиме шуканий номер. Спочатку покладемо z = 0. Розглянемо алгоритм.
m = (n1 + n2) \ 2 - це номер середнього елемента А(m).
Якщо А(m) = "Галя", то z = т і перейти до п. 6.
Якщо n1 = n2, то перейти до п. 6.
Якщо А(m) < "Галя", то n1 = m + 1 і перейти до п.1.
Якщо А(m) > "Галя", то n2 = m - 1 і перейти до п.1.
Вивести z.
Відповідь на поставлене в умові задачі 4 запитання дає команда <вивести B(z), C(z)>.
Третій пункт алгоритму дає змогу з’ясувати, чи є в масиві шуканий елемент. Результатом роботи алгоритму буде або номер шуканого елемента, або число 0, якщо такого елемента в масиві немає.
Завдання 1. Перевірте правильність алгоритму, застосувавши його для масиву з двох елементів ("Іра", ”Оля”), намагаючись відшукати в ньому ім’я: а) Оля, б) Леся.
Завдання 2. Складіть код розв’язування задачі 4 самостійно.
Завдання 3. Покращіть алгоритм, щоб у ньому була менша кількість команд розгалуження.
Висновок. Якщо великий масив невпорядкований, то деяке значення у ньому формальний виконавець знаходить за, можливо, велику кількість операцій читання (вибирання) його елементів. Використовуючи алгоритм поділу впорядкованого масиву навпіл, задачу розв’язують за значно меншу кількість операцій читання (вибирання) елементів. Економія ресурсів виконавця (часу розв’язування задачі) суттєва. Ось чому перед пошуком інформації дані треба впорядковувати.
Вправи
Упорядкуйте усно за зростанням таку послідовність чисел: 5, -7, 4, 6, 0, -2.
Упорядкуйте усно наведену вище послідовність чисел за спаданням.
Упорядкуйте в алфавітному (лексикографічному) порядку (за зростанням) такі імена: Іра, Оля, Леся, Галя, Люба.
Розв’яжіть задачу № 12 свого варіанта з розділу «Задачі».
5*. Складіть програму для алгоритму впорядкування масиву методом мінімальних елементів.
6*. Складіть програму для алгоритму впорядкування масиву методом вставки.
7*. Складіть програму для методу бісекції.
