
- •§ 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
§ 30. Застосування файлів даних послідовного доступу
З текстовими файлами даних ви вже знайомі. Ці файли інакше називають файлами даних послідовного доступу. Вони зберігаються на носіях в незакодованому вигляді, тому можуть бути переглянуті, створені та відредаговані в текстовому редакторі Блокнот чи іншому. Це суттєва перевага файлів даних послідовного доступу над файлами даних прямого доступу. Однак вони мають і недолік — не прямий, а послідовний, доступ до елементів. Деякий елемент такого файлу може стати доступним лише після послідовного перегляду всіх попередніх елементів.
1. Основні поняття. Елементи файлу даних послідовного доступу можуть не мати фіксованої довжини. Тому до них і не можна організувати прямий доступ, а лише послідовний. Зате у файл даних послідовного доступу можна записувати будь-які дані: числа, тексти, масив структур (записів). Все, що виводять для огляду на екран, можна записати у файл послідовного доступу для постійного зберігання і можливого опрацювання іншими програмами, зокрема, програмою Блокнот. Дані у такому файлі розмежовують зазвичай комами у рядках. У кінці рядка файлу автоматично формується невидима позначка «Кінець рядка», а в кінці файлу — позначка «Кінець файлу».
2. Дії з файлами даних послідовного доступу. Перед створенням чи використанням файли потрібно відкрити. Файл даних послідовного доступу може бути відкритий одним із трьох способів (відповідно до виду запланованих користувачем робіт):
для створення файлу, тобто для виведення даних з оперативної пам’яті у файл (режим Output);
для використання файлу, тобто для введення даних в оперативну пам’ять з файлу (режим Input);
для доповнення певного файлу даними (режим Append).
Розглянемо, як створюють файл даних програмним способом. За
допомогою циклу дані заносять у файл послідовного доступу. Для цього застосовують команди Print або Write. Цілу структуру даних занести у файл послідовного доступу не можна, лише частинами, які називають полями. Значення декількох змінних, зокрема, полів даних, заносять в один рядок файлу списком одною командою (Print або Write). У разі застосування команди Print ці значення у рядку будуть розмежовані пропусками, а у разі застосування команди Write — комами. Текстові дані будуть подані у лапках.
Розглянемо, як використовують файл даних. Спочатку файл даних відкривають для послідовного введення даних з рядків файлу у змінні. Таке введення даних з кожного рядка виконують у циклі за допомогою команди Input. Цілий рядок з текстового файлу в одну текстову змінну можна ввести командою LineInput.
Після опрацювання файлів їх закривають.
3. Команди для виконання дій з файлами даних послідовного доступу. Команди для роботи з файлами даних послідовного доступу розглядали у § 12.
4*. Перетворення файлів. Розглянемо алгоритм перетворення файлу даних прямого доступу у файл даних послідовного доступу.
1. Відкрити файл даних прямого доступу з деякою назвою z1 і номером nf1. Відкрити файл даних послідовного доступу z з номером nf у режимі створення (виведення даних у файл).
2. Доки не кінець файлу nf 1, прочитати поточний рядок з файлу nf1 і занести його у деяку поточну змінну типу структура; записати значення змінних, що є полями поточної структури, у файл nf.
3. Закрити два файли.
Розглянемо алгоритм перетворення файлу послідовного доступу у файл прямого доступу.
1. Відкрити файл даних прямого доступу з деякою назвою z1 і номером nf1. Відкрити файл даних послідовного доступу z з номером nf у режимі використання (зчитування даних з файлу).
2. Доки не кінець файлу nf, прочитати дані з поточного рядка файлу nf і занести їх у прості змінні або поля деякої структури; записати значення змінних чи утворену структуру у файл з номером nf1.
3. Закрити два файли.
Коди обох алгоритмів наведено у п.5.
5. Проект «Моделювання роботи з базою даних засобами файлів різних типів». Змоделюємо предметну область про студентів за допомогою різних структур даних: набору простих змінних, масиву структур, файлу даних прямого доступу, файлу даних послідовного доступу, створеного програмно і/або «вручну» у Блокноті. Кожний об’єкт класу «Студенти» характеризуватимемо двома властивостями: прізвищем і балом успішності. Кількість властивостей може бути розширена.
У проекті виокремимо такі сім етапів (складових):
створення файлу даних послідовного доступу (кнопка 1) програмним способом шляхом введення даних з клавіатури у масив записів або в прості змінні (на вибір користувача, що реалізуємо групою перемикачів), а потім виведення даних у файл; назву файлу даних має пропонувати комп’ютер, її можна прийняти або замінити; оскільки кількість даних невідома, процес введення даних закінчити, якщо ввести слово «finish2» замість прізвища; виведемо повідомлення у текстове поле, що підтверджує виконання робіт;
використання створеного файлу (кнопка 2) для зчитування даних з файлу у прості змінні й відображення даних у багаторядковому текстовому полі у вигляді таблиці; виведемо повідомлення у текстове поле, що підтверджує виконання робіт;
перетворення файлу даних послідовного доступу у файл даних прямого доступу (кнопка 3);
перетворення файлу даних прямого доступу у файл даних послідовного доступу (кнопка 4);
використання файлу даних послідовного доступу, заздалегідь створеного у Блокноті (кнопка 5) і виведення повідомлення про це (рис. 2.6);
відшукання потрібних даних з виведенням результатів у текстове поле (кнопка 6);
завершення роботи (кнопка 7).
Рис. 2.6. Моделювання предметної області із застосуванням файлів
Розглянемо код проекту для середовища VBA. В аналогічному коді для VB треба лише поміняти команди роботи з файлами, а також назви деяких елементів керування і команд. Файли проектів для VBA і VB можна завантажити із сайту www. hlynsky.lviv.ua.
Програмування. Код створюємо за декілька етапів.
Спочатку у розділ Module помістимо опис структури:
Type student
s As String * 15
bal As Integer
End Type
У розділі Declarations опишемо глобальні змінні.
Dim а(25) As student, zstudent As student, і As Integer
Запрограмуємо кнопку 1 з метою створення двома способами файлу даних послідовного доступу d:\myfile3.txt чи іншого.
Private Sub CommandButton1_Click()
Dim nf As Integer
nf = FreeFile
z = InputВох("Введи повну назву файлу або прийми цю:", _
"Назва файлу", "d:\myfile3.txt")
Open z For Output As nf 'Відкриваємо файл для виведення
і = 0
dali: і = і + 1 'Тут застосовано позначку dali
TextBox1.Text = "Опрацьовуємо " + Str(i) + " об'єкт"
If OptionButtonl.Value = True Then
'1-й спосіб: вводимо дані у запис, доки ,s="finish2"
With а(і) 'Створюємо масив записів
.s = InputВох("Введіть прізвище", _
"Кінець даних? Введи finish2")
If Trim(.s) = "finish2" Then GoTo finish
.bal = lnputBox("BBefliTb бал")
End With
Write #nf, a(i).s, a(i).bal 'Записуємо поля у рядок файлу
Else
'2-й спосіб: вводимо дані у прості змінні
s = InputBox(“Введіть прізвище”, _
"Кінець даних? Введи finish2")
If Trim(s) = ”finish2" Then GoTo finish
bal = InputBox(“Введіть бал”)
Write #nf, s, bal 'Записуємо змінні у рядок файлу
End If
GoTo dali 'Повернутися на початок коду
finish: Close nf
TextBox1.Text = "Файл створено. Маємо " + Str(i - 1) + _
" рядків даних у файлі" + z
End Sub
Запрограмуємо кнопку 2 для використання створеного файлу послідовного доступу. Дані з файлу введемо у прості змінні та виве- цемо їх на екран у багаторядкове текстове поле.
Private Sub CommandButton2_Click()
Dim nf As Integer
Dim u As String
nf = FreeFile
z = InputBox("Введіть повну назву файлу або прийми цю:", _
"Назва файлу", "d:\myfile3.txt")
Open z For Input As nf 'Відкриваємо файл для введення
u = "" ’Створюватимемо багаторядкове текстове дане
While Not EOF(nf) 'Доки не кінець файлу...
Input #nf, s, bal 'Зчитуємо дані про наступний об'єкт з файлу
u = u + s + Chr(9) + Str(bal) + vbCr
Wend
TextBox2.Text = u Close nf
TextBox1.Text = "Вміст файлу " + z + _
" виведено в поле поряд"
End Sub
Запрограмуємо кнопку 3 для занесення даних з файлу послідовного доступу "d:\myfile3.txt" у файл даних прямого доступу "d:\myfile3.dat". Вміст файлу не показуємо, але виводимо повідомлення про виконану роботу.
Private Sub CommandButton3_Click()
Dim nf As Integer
newline = Chr(13)
nf = FreeFile
z = InputBox(“Введи повну назву файлу або прийми цю:”, _
"Назва файлу послідовного доступу", "d:\myfile3.txt")
z1 = InputВох("Введи повну назву файлу або прийми цю:", _
"Назва файлу прямого доступу", "d:\myfile3.dat")
Open z For Input As nf 'Відкриваємо файл для зчитування
nf1 = FreeFile
Open z1 For Random As nf1 Len = Len(zstudent)
While Not EOF(nf) 'Доки не кінець файлу...
Input #nf, s, bal 'Читаємо дані з файлу у дві змінні
zstudent.s = s 'і заносимо ці дані в поточний запис
zstudent.bal = bal
'Поточний запис записуємо у файл прямого доступу
Put #nf1,, zstudent
Wend
Close nf: Close nf1
TextBox1.Text = "Файл прямого доступу " + z1 +" створено"
End Sub
Програмуємо кнопку 4 для занесення даних з файлу прямого доступу "d:\myfile3.dat" у файл послідовного доступу "d:\myfile4.txt" з виведенням вмісту файлу в текстове поле 2 і повідомлення про виконану роботу.
Private Sub CommandButton4_Click()
Dim nf As Integer
Dim nf1 As Integer
TextBox2.Text =""
z1 = InputВох("Введи повну назву файлу або прийми цю:", _
"Назва файлу прямого доступу", "d:\myfile3.dat")
nf1 = FreeFile
Open z1 For Random As nf1 Len = Len(zstudent)
nf = FreeFile
z = InputВох("Введи повну назву файлу або прийми цю:", _
"Назва файлу послідовного доступу", "d:\myfile4.txt")
Open z For Output As nf
u = "" 'Формуємо багаторядкове текстове дане
While Not EOF(nfl)
Get nf1,, zstudent 'Зчитуємо наступне дане з файлу
'Заносимо поля у файл послідовного доступу
Write #nf, zstudent.s, zstudent.bal
u = u + zstudent.s + Chr(9) + Str(zstudent.bal) + vbCr
Wend
TextBox2.Text = u 'Виводимо вміст файлу
Close nf: Close nf1
TextBox1.Text = "Файл послідовного доступу" + z + _
" створено. Вміст виведено у поле поряд"
End Sub
Запрограмуємо кнопку 5 для читання файлу d:\myfile5.txt, створеного у Блокноті. Виведемо вміст файлу в текстове поле.
Private Sub CommandButton5_Click()
Dim nf As Integer
TextBox2.Text = “”
nf = FreeFile
z = InputBox("Введи повну адресу файлу або прийми цю:", _
"Дай відповідь", "d:\myfile5.txt")
'Цей файл має бути створений у блокноті в кодуванні ANSI
If Dir(z) = "" Then 'Перевіряємо, чи є файл на диску
u = "Створи в Блокноті файл " + z + " спочатку"
Else
Open z For Input As nf u = ""
While Not EOF(nf)
Input #nf, s, bal
u = u + s + Chr(9) + Str(bal) + vbCr
Wend
End If
TextBox2.Text = u 'Виводимо вміст файлу
Close nf
TextBox1.Text = "Це файл послідовного доступу" + z + _
" створений у Блокноті"
End Sub
Довідка. Функція Dir(z) набуває значення якщо файлу з назвою z немає на диску.
Запрограмуйте кнопку 6 для пошуку даних у будь-якому фай лі послідовного доступу. Самостійно придумайте критерій пошуку реалізуйте його (див. попередній проект).
Private Sub CommandButton6_Click()
…
End Sub
Запрограмуємо кнопку 7.
Private Sub CommandButton7_Click()
End 'Кінець роботи. Закрити форму
End Sub
Завдання 1. Виконайте проект і поекспериментуйте з ним.
Завдання 2. Доповніть структуру ще двома полями з даними про студентів на свій розсуд, наприклад, рік народження, номер телефону, адреса, захоплення тощо.
Висновки*. Двовимірні масиви, масиви структур і файли даних застосовують під час моделювання (описування і дослідження) різних предметних областей. Для цього застосовують також засоби реляційних таблиць у системах керування базами даних MS Access, MySQL тощо. Між цими двома способами моделювання є зв’язок: будь-яку таблицю з бази даних можна експортувати у грід на візуальній формі чи у файл даних послідовного доступу і продовжити опрацьовувати дані візуальними засобами; і навпаки, сформований у VB чи VBA файл даних послідовного доступу чи наповнений даними грід можна імпортувати у систему керування базами даних і перетворити у таблицю бази даних. Якщо деякі задачі щодо перетворення даних розв’язати засобами середовищ керування базами даних складно, то дані опрацьовують засобами мови програмування зі збереженням результатів у файлах чи шляхом створення VBA-кодів для роботи з базами даних. Завдяки такому підходу можна розв’язати майже будь-яку задачу. Тому застосування файлів даних має велике теоретичне і практичне значення.
Вправи
Модифікуйте проект, ввівши власні творчі елементи до сценарію моделювання деякої іншої предметної області і забравши зайві елементи сценарію (наприклад, перетворення файлів тощо).
Створіть у Блокноті файл даних на деяку тему, виведіть дані з файлу в текстове поле або/і в список.
Додатково до вправи 2 організуйте пошук за власним критерієм і виведіть знайдені об’єкти в окремий список.