- •§ 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
§ 28. Структури даних (записи)
У першому розділі ми розглянули поняття об’єкт, клас об’єктів, екземпляри класу, інформаційне моделювання, імітували створення бази даних. Тепер навчимося зберігати дані про реальні об’єкти в оперативній пам’яті і файлах даних.
1. Поняття структури даних користувача. На прикладі задачі про студентів розглянемо об’єкти, для опису яких використовують дані різних типів. Об’єкт «Студент» можна змоделювати за допомогою таких властивостей: прізвище, ім’я, рік народження, рейтинговий бал — середній бал за деякий період навчання (зі 100 балів). Декілька екземплярів класу «Студенти» можна задати так:
Прізвише |
Ім’я |
Рік народження |
Бал |
Петренко |
Віктор |
1994 |
65 |
Катренко … |
Остап |
1995 |
75 |
Тут кожний рядок містить дані текстового і числового типів. Отже, рядок складається з даних різних типів. Для зберігання одного рядка в оперативній пам’яті застосовують структуру даних, яку називають структурою у VB або записом (чи типом користувача) у VBA. Терміни «запис» і «структура» вважатимемо синонімами.
Структура чи запис складається з полів (інші терміни — властивості, компоненти). У кожному полі зберігається одне дане деякого конкретного типу. У вищенаведеному прикладі є такі поля: прізвище, ім’я, рік народження, бал.
Розглянемо приклади даних, які можна зберігати в структурі:
прізвище, ім’я, адреса студента;
прізвище, ім’я студента, оцінки з декількох предметів;
прізвище спортсмена, оцінки суддів;
назва філіалу компанії, доходи за певний період;
рядок турнірної таблиці з футболу чи інших змагань тощо.
Структуру даних (запис) у коді передусім треба описати.
2. Описування структури. У VB структуру з k полями описують за допомогою такої конструкції:
Structure <назва структури> Dim <назва поля 1> As <тип поля 1>; … |
Dim <назва поля k> As <тип поля к>; End Structure |
Замість службового слова Dim можна використовувати слова Ргivate або Public.
У VBA запис (тип користувача) описують так:
Туре <назва типу> |
<назва поля 1> As <тип поля 1>; … |
<назва поля k> As <тип поля k>; |
End Туре |
Усі назви придумує користувач. Типом поля може бути будь-який зі стандартних типів (Integer, Long, Single, Double, String) або інша структура.
У VBA опис Туре поміщають в окремий модуль, що додається до проекту командами з головного меню Insert => Module. У VB опис структури можна розташувати в окремому модулі або у розділі Declarations.
Нагадування. У VBA довжину п текстового даного можна конкретизувати типом String*n, де п — деяке число.
3. Моделювання об’єктів за допомогою структур. Розглянемо предметну область про студентів і змоделюємо об’єкт «Студент» за допомогою структури, що містить відомості про анкетні дані особи: прізвище (surname), ім’я (name), рік народження (year), рейтинговий бал (bal).
Структуру назвемо student:
Structure student 'Це у VB
Dim surname As String
Dim name As String
Dim year As Integer
Dim bal As Single
End Structure
Структуру (запис) з текстовими полями фіксованої довжини у VBA описують так:
Type student 'Це у VBA
surname As String*20
name As String*15
year As Integer
bal As Single
End Type
Модифікуємо структуру, доповнивши її додатковими полями. Поле про рік народження (year) у VBA замінимо записом birthday з такими полями: рік (year), місяць (month), день (day). Отримаємо (у термінах VBA) такий тип користувача:
Type student
name As String*20
surname As String* 15
Type birthday
year As Integer
month As Integer
day As Integer
End Type
bal As Single
End Type
Завдання 1. Опишіть таку структуру у термінах VB.
Завдання 2. Змоделюйте об’єкт «Автомобіль» за допомогою структури даних. Опишіть структуру.
4. Оголошення змінних типу структура і масиву структур. Коли структуру (запис) описано, треба оголосити змінні типу «структура» за допомогою команди Dim так:
Dim <назва змінної> As <назва структури (запису) > |
Наприклад,
Dim studl As student
Dim stud2 As student
Dim stud3 As student.
Ці команди резервують місце в оперативній пам’яті для трьох змінних, куди можна буде помістити дані про трьох студентів. У групі зазвичай є більше студентів. Оголосити так велику кількість змінних можна, але опрацьовувати їх не зручно. На допомогу приводить складена структура даних, яку називають масивом структур (масивом записів):
Dim <назва масиву>(<кількість елементів>) As <структура (запис)> |
Наприклад, масив структур для 25 студентів (домовимося нумерацію вести від одиниці) можна оголосити так:
Dim stud(25) AS student.
У таких масивах зберігають цілі таблиці з даними: відомості про групу осіб, учнів класу, групу студентів, про філіали компанії, про результати змагань чи конкурсів з декількома учасниками тощо.
Декілька таблиць зазвичай описують предметну область.
Отже, структури і масиви структур дають змогу моделювати предметні області засобами мови програмування.
5. Опрацювання структур. Дії виконують не з усією структурою а з її полями. Дані вводять у поля структури або у поля масиву структур з клавіатури, з масивів даних, зі списків, з файлів тощо.
Масив структур опрацьовують так, як звичайні масиви. Опрацьовані дані виводять з полів структур на екран чи у файли. Після виведення результатів дані зберігаються в оперативній пам’яті (т структурах) до закінчення роботи програми.
Доступ до конкретного поля дає така складена назва:
<Назва змінної>.<Назва поля> |
Наприклад, назви полів структури першого студента такі:
studl.name,
studl.surname,
studl.birthday.year,
studl.birthday.month,
studl.birthday.day,
studl.bal
У випадку масиву структур назви змінних, що містять дані пр: першого студента (якщо нумерація від одиниці), будуть такі:
stud(1).name,
stud(1/surname,
stud(1).birthday.year,
stud(1).birthday.month,
stud(1).birthday.day,
stud(1).bal.
Аналогічно для другого студента:
stud(2).name,
stud(2).surname
…
З полями виконують такі ж дії, як з простими змінними. Наприклад:
stud(1).name = "Володимир"
stud(1).sumame = "Трошкін"
stud(1).birthday.month = InputВох("Введіть місяць")
TextBox1.Text = stud(1).surname
Debug.Print stud(1).surname 'VBA
Console.WriteLine(stud(1).surname) 'VB
stud(1).bal = (a + b + с + d) / 4.
6. Команда With. Команда With (читається віз, перекладається з) задає контейнер, всередині якого можна записувати крапку і назви волів (властивостей) без назви структури (об’єкта).
Команда має такий вигляд:
With <назва об’єкта (структури)> <контейнер> End With |
Наприклад,
With stud(1)
.name = "Володимир"
.surname = " Трошкін "
.birthday.month = InputВох("Введіть місяць")
End With
Команда With призначена для компактного написання коду.
7. Опрацювання масиву структур. Проект «Автосалон». Елементи масиву структур опрацьовують за допомогою алгоритмічної конструкції «цикл».
Задача 1. Розробити проект з назвою «Автосалон» відповідно до наступного сценарію.
Сценарій проекту. Дані про п’ять видів автомобілів, що є на складі автосалону, треба ввести з клавіатури в масив структур (після натискання на кнопку «Створити»).
Кнопка «Вивести» має забезпечити виведення на екран (в елемент керування класу «списки») всіх відомостей про всі автомарки: марка, рік випуску, об’єм двигуна, ціна, колір, кількість на складі. Список підпишемо так: «Усі моделі авто».
Рис. 2.4. Проект «Автосалон»
Кнопка «Знайти» має забезпечити пошук у масиві структур всіх авто синього кольору і виведення відомостей про назву автомарки та її ціну в інший список — «Шукані авто».
Інтерфейс проекту. Форму треба сконструювати так, як показано на рис. 2.4 (або краще, підібравши картинку для тла форми, великі шрифти для підписів елементів керування тощо, створивши меню у VB замість кнопок).
Моделювання. Змоделюємо предметну область. Нехай структура складається з таких полів: марка, рік випуску, об’єм двигуна, ціна, колір, кількість на складі. Опишемо структуру, якій дамо назву avto у середовищах VB і VBA.
Structure avto 'VB
Dim marka As String
Dim rik As Integer
Dim dvygun As Single
Dim cina As Integer
Dim kolir As String
Dim kilkist As Integer
End Structure
Type avto 'VBA
marka As String*10
rik As Integer
dvygun As Single
cina As Integer
kolir As String*10
kilkist As Integer
End Type
Розглянемо змінні, які будуть глобальними: n — кількість автомобілів (нехай n <= 5) і а(5) — масив структур, який міститиме дані про всі автомобілі. Оголосимо ці змінні:
Dim n As Integer
Dim а(5) As avto
Програмування. Виконаємо такий алгоритм.
У VB структуру і глобальні змінні опишемо під командою Public Class Forml. А у VBA тип запису опишемо в окремому модулі, і глобальні змінні — на початку коду.
Складемо і введемо код для кнопки «Створити»:
Dim і As Integer
n = InputBox("Введіть кількість авто")
For і = 1 То n
a(i).marka = InputВох("Введіть марку авто")
a(i).rik = InputBox(“Введіть рік випуску”)
a(i).dvygun = InputВох("Введіть об’єм двигуна")
a(i).cina = InputВох("Введіть ціну авто")
a(i).kolir = InputВох("Введіть колір авто")
a(i).kilkist = InputВох("Введіть кількість на складі")
Next і
Складемо і введемо код кнопки «Вивести» з використанням контейнера With:
Dim і As Integer, z As String
For і = 1 To n
With a(i)
z = .marka + Chr(9) + Str(.cina) + Chr(9) + Str(.dvygun) + _
Chr(9) + Str(.rik) + Chr(9) + .kolir + Chr(9) + Str(. kilkist)
ListBoxl.Items.Add(z) 'VB
ListBox1.AddItem z 'VBA
End With
Next і
Довідка. Функція Chr(9) у текстових виразах забезпечує пропуски між даними і вирівнювання даних на екрані у стовпцях. Вона діє як натискання на клавішу Tab на клавіатурі під час введення текстів. Замість Chr(9) можна використовувати сталу vbTab.
Складемо і введемо код кнопки «Знайти»:
Dim і As Integer, z As String, color As String
color = InputВох("Введіть потрібний колір")
For і = 1 To n
With a(i)
If Trim(.kolir) = color Then
z = .marka + Chr(9) + Str(.cina)
ListBox2.Items.Add(z) "VB
ListBox2.AddItem z 'VBA
End If
End With
Next і
Завдання 1. Запустіть проект на виконання й переконайтеся, до результат відповідає технічному завданню (рис. 2.4).
Завдання 2. Переробіть код першої кнопки, застосувавши контейнер With.
Завдання 3. Модифікуйте код, щоб одержати інформацію про машини, які були випущені після 2008 року і ціна яких менша від 20000 у.о.
8*. Зчитування даних з файлу даних у масив структур. Масив структур зберігається в оперативній пам’яті, яка після закінчення роботи проекту очищається. Тому недоліком проекту «Автосалон», де використано масиви структур, є необхідність під час кожного перезапуску «вручну» вводити дані (відомості про автомобілі) з клавіатури.
Зручніше вводити вхідні дані з клавіатури лише один раз, а використовувати їх багаторазово. Таку можливість надають файли даних.
З текстовими файлами даних ви вже знайомі. Наберемо в Блокноті текст, що складається з рядків:
"Мерседес", 2009, 3.0, 22000, "чорний", 3
"Тойота", 2010, 2.2, 19999, "сірий", 4 і т.д.
Збережемо його у файлі myavto.txt на диску d: чи іншому. Модифікуємо код кнопки «Створити», щоб ввести дані з файлу у масив структур так:
Dim z As String
Dim n As Integer
z = "d:\myavto.txt"
FileOpen(1, z, OpenMode.Input) 'VB
Open z For Input As #1 'VBA
n = 0 'Готуємо лічильник
Розділ 1. ОСНОВИ ПРОГРАМУВАННЯ 2
