- •§ 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
5. Vb. Команди для роботи з файлами даних прямого доступу.
Команда відкривання доступу до файлу z має такий вигляд:
FileOpen(nf, z, OpenMode.Random,,, Len (zs)).
Тут Len (zs) — функція, що визначає довжину одного даного типу структура. Три коми означають, що пропущено два необов’язкові параметри.
Команда записування даного zs у файл з номером nf у позицію, задану номером і, має такий вигляд: FilePut(nf, zs, і).
Команда записування даного zs у файл nf у наступну (поточну) позицію така: FilePut(nf, zs).
Команда зчитування г-го даного з файлу nf і присвоєння його змінній zs така: FileGet(nf, zs, і).
Команда зчитування поточного (наступного) даного з файлу nf і присвоєння його змінній zs така: FileGet(nf, zs).
Команда закривання файлу з номером nf така: FileClose (nf).
6. Проект «Моделювання бази даних про студентів». Предметну область про студентів опишемо таблицею «Студенти». Для моделювання застосуємо структуру (запис) з двома полями: прізвище студента і рейтинговий бал з навчання. Розробимо проект відповідно до наступного технічного завдання (сценарію).
Проект має експлуатуватися у трьох режимах:
створення масиву структур (записів) і файлу даних;
використання файлів даних з метою введення даних в оперативну пам’ять і виведення даних на екран для перегляду;
пошук потрібних даних, наприклад, виведення прізвищ студентів, рейтинговий бал яких не менший за 71 (зі 100 можливих, зазвичай такі студенти отримують стипендію).
Режими вибиратимемо за допомогою трьох кнопок. Опишемо сценарії опрацювальників подій (коди кнопок).
Код першої кнопки має створити масив структур і файл даних. Для цього дані про k студентів у режимі діалогу з клавіатури введемо у масив структур. Ці дані запишемо у файл даних прямого доступу для постійного зберігання.
Код другої кнопки моделюватиме ситуацію, коли масиву структур у пам’яті немає. Використаємо створений файл даних. З файлу дані занесемо у масив структур і виконаємо такі дії: всі дані у вигляді таблиці занесемо у текстове поле «Поле з усіма даними», а прізвища —- у список «Список прізвищ».
Увага! Прізвища студентів у файлі непонумеровані. Передбачимо в коді їх автоматичну нумерацію. Для цього під час формування списку прізвищ заповнимо асоціативний масив з назвою т, який міститиме порядкові номери студентів (їх номери у файлі). Цей масив буде використано для пошуку студентів за певним критерієм.
Рис. 2.5. Моделювання бази даних про студентів
Код третьої кнопки реалізує такі дії: очищає список; виконує пошук студентів у масиві структур за критерієм bal >= z1, де z1 — деяке число, яке користувач введе з клавіатури, наприклад, 71. Прізвища студентів, що відповідають критерію відбору, будуть додані до списку прізвищ, а відомості про студента (прізвище і бал) — занесені у два текстові поля, що є під кнопкою 3 (рис. 2.5, кнопка «Знайти дані»).
Паралельно зі створенням списку прізвищ створимо асоціативний масив m з номерами відібраних студентів. Якщо об’єкт пошуку знайдено і дані відображено на екрані у списку і полях, то має з’явитися вікно повідомлень з текстом «Далі», що створюватиме паузу до натискання кнопки ОК у вікні повідомлень. Натискання на кнопку ОК продовжить процес пошуку потрібних студентів. Якщо вікно не з’явиться, то це означає, що пошук закінчено.
Розглянемо сценарій для коду списку з відібраними прізвищами. Якщо у списку прізвищ вибрати деяке прізвище, то у двох текстових полях мають з’явитися додаткові відомості про вибраний об’єкт — прізвище студента і його бал. Під час створення цього коду буде застосовано асоціативний масив т.
Розглянемо необов’язковий фрагмент проекту. У групі елементів керування «Почати спочатку» поміщено три перемикачі та кнопку, за допомогою якої роботу з проектом можна розпочинати не із самого початку, а з будь-якого режиму експлуатації (третього, другого, першого). Наприклад, якщо файл з даними уже є на диску, то його вдруге створювати не треба і натискати на першу кнопку немає сенсу. Натискання на четверту кнопку відповідає натисканню:
на кнопку 3, якщо ввімкнено перемикач «файл уже є», тобто дані введені та відображені (цей перемикач перший на малюнку, його номер 1 у коді) — запуск третього режиму експлуатації;
на кнопку 2, якщо ввімкнено перемикач «файл є, показати дані» (він другий на малюнку, номер 2 у коді) — запуск другого режиму експлуатації проекту;
на кнопку 1, якщо ввімкнено перемикач «файлу немає, створити» (перемикач на малюнку третій, номер 3 у коді) — це запуск першого режиму.
Зауваження. Після запуску проекту фокус встановимо на кнопці 1 командою CommandButtonl.SetFocus. SetFocus — стандартний метод (тут кнопки 1). Якщо фокус є на кнопці 1, то на неї натискати не обов’язково, достатньо натиснути на клавіатурі на клавішу Enter.
Кнопка 5 — резервна. Вона призначена для реалізації креатинних ідей.
Програмування. Розглянемо код проекту для середовища VBA. Для VB код легко можна адаптувати. Для цього треба застосувати лише відповідні команди для роботи з файлами і замінити назви деяких елементів керування і команд.
Зауваження 1. Всі коди цього та інших проектів для середовищ VB і VBA можна завантажити із сайту www.hlvnskv.lviv.ua з розділу «Файли проектів». Тому вручну коди можна не вводити.
Ми ж виконаємо такий алгоритм.
1. Спочатку у модуль Modulel помістимо опис типу запису:
Type student
s As String * 15
bal As Integer
End Type
2. У розділі Declarations оголосимо глобальні змінні:
Dim а(10) As student
Dim zstudent As student
Dim k As Integer 'Кількість записів у масиві
Dim k1 As Integer 'Кількість записів у файлі
Dim m(10) As Integer 'Асоціативний масив з номерами студентів
3. Запрограмуємо кнопку 1 для створення масиву записів і файлу.
Private Sub CommandButton1_Click()
Dim nf As Integer
Dim і As Integer nf = FreeFile
Open "d:\myfile1.dat" For Random As nf Len = Len(zstudent)
k = InputВох(“Введіть кількість записів”)
TextBox1.Text= k
For і = 1 To k 'Створюємо масив записів
With a(i)
.s = InputВох(''Введіть прізвище студента")
.bal = InputВох("Введіть бал студента")
End With
Put nf, і, a(i) 'Записуємо запис у файл
Next і
Close nf 'Закриваємо файл даних
End Sub
4. Запрограмуємо кнопку 2 для введення даних з файлу у масив записів і виведення даних у список і текстове поле на формі.
Private Sub CommandButton2_Click()
Dim u As String
Dim nf As Integer
Dim і As Integer
nf = FreeFile
ListBox1.Clear 'Очищуємо список
'Відкриваємо раніше створений файл
Open "d:\myfile1 .dat" For Random As nf Len = Len(zstudent)
k1 = FileLen("d:\myfile1 .dat") / Len(zstudent)
TextBox1.Text = k1
'Формуємо таблицю для текстового поля
u=””
For і = 1 To k1
Get nf, i, zstudent 'Вводимо дане з файлу у запис
а(і) = zstudent 'Створюємо масив записів заново
u = u + zstudent.s + " " + Chr(9) + Str(zstudent.bal) + vbCr
ListBox1.AddItem zstudent.s 'Створюємо список прізвищ
m(i) = і 'Цей масив зберігає номери студентів
Next і
TextBox3.Text = u 'Виводимо таблицю на екран
End Sub
5. Запрограмуємо кнопку 3 для пошуку прізвищ за критерієм bal >= z1, де значення z1, наприклад 71, буде введене користувачем.
Private Sub CommandButton3_Click()
Dim і As Integer, z1 As Integer, ml As Integer
ml = 0 'Це лічильник знайдених об'єктів
TextBox4.Text = TextBox5.Text = '"'
ListBox1.Clear
z1 = InputBox("Введіть критерій пошуку")
For i = 1 To k1
If a(i).bal >= z1 Then
TextBox4.Text = a(i).s: TextBox5.Text = a(i).bal
ListBox1.AddItem a(i).s 'Відібрані прізвища заносимо у список
ml = ml + 1
m(m1) = і 'Утворюємо масив з номерами відібраних студентів
MsgBox ("Далі")
End If
Next і
End Sub
6*. Запрограмуємо четверту кнопку для вибору режиму функціонування проекту.
Private Sub CommandButton4_Click()
If OptionButtonl.Value = True Then CommandButton3_Click
If OptionButton2.Value = True Then CommandButton2_Click
If OptionButton3.Value = True Then CommandButton1_Click
End Sub
7. Запрограмуємо метод списку для виведення у текстові поля додаткових відомостей про особу, прізвище якої вибрали мишею у списку прізвищ.
Private Sub ListBox1_Click()
Dim z As Integer 'Допоміжна змінна
z = ListBox1.ListIndex + 1 'Далі застосовуємо масив m
TextBox4.Text = a(m(z)).s
TextBox5.Text = a(m(z)).bal
End Sub
8. Оскільки ми плануємо почати роботу з першої кнопки, то надаємо їй фокус на етапі завантаження форми. Клацнувши на формі, введемо у заготовку команду CommandButtonl.SetFocus.
Private Sub UserForm_Initialize()
CommandButtonl.SetFocus
End Sub
Завдання 1. Реалізуйте проект і поекспериментуйте з ним. Завдання 2. Доповніть структуру ще двома полями з даними про студентів і виведіть ці додаткові дані на форму під час пошуку даних чи вибору прізвища у списку.
7. VB. Фрагмент коду проекту. Атрибут <VBFixedString(n)>. Розглянемо початок коду проекту і код першої кнопки (створення файлу даних прямого доступу) для середовища VB. Зверніть увагу, що відмінності від VBA є лише в описі структури і в командах для роботи з файлами.
Public Class Forml
Structure student 'Опис структури
<VBFixedString(15)> Dim s As String
Dim bal As Integer
End Structure
Dim a(10) As student 'Опис глобальних змінних
Dim zstudent As student
Dim k As Integer 'Кількість записів у масиві
Dim k1 As Integer 'Кількість записів у файлі
Private Sub Button 1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Buttonl.Click
Dim nf, k, і As Integer
Dim z As String
nf = FreeFile()
z = "d:\myfile10.dat"
FileOpen(nf, z, OpenMode.Random,,, Len(zstudent))
k = InputВох("Введіть кількість записів")
TextBox1.Text = k
For і = 1 To k 'Створюємо масив записів
With a(i)
.s = InputВох("Введіть прізвище студента")
.bal = lnputBox("Введіть бал студента")
End With
FilePut(nf, a(i), і) 'Записуємо структуру у файл
Next
FileClose(nf) 'Закриваємо файл даних
End Sub
End Class
Дані, які будуть заноситися у файл даних прямого доступу, повинні мати фіксовану довжину. Тому поля типу String у структурі описують з атрибутом <VBFixedString(n)>, де п — деяке число, наприклад, так: <VBFixedString(15)> Dim s As String. Атрибут дає таку вказівку компілятору: на етапі записування даного у файл розглядати його як текстове дане довжиною п символів.
Задача 1. Визначіть обсяг даного типу Mystudents:
Structure Mystudents 'Це лише у VB
<VBFixedString(15)> Dim surname As String
<VBFixedString(10)> Dim name As String
Dim year As Integer
Dim reityng As Single
End Structure
Розв’язування. Обсяг даного — 15 + 10+ 4 + 4 = 33 байти.
Вправи
Організуйте в коді кнопки 5 пошук студентів за двома параметрами, наприклад, за умовою z1<bal<z2 чи іншою.
Модифікуйте проект для іншої предметної області: автомобілі, парфуми, продукти тощо.
Виберіть предметну область, опишіть структури даних, розробіть власний сценарій опрацювання даних. Нарисуйте ескіз форми для проекту. Опишіть сценарій.
Модифікуйте проект, ввівши до сценарію моделювання деякої предметної області власні творчі елементи. Можна вставити у проект нові елементи керування: медіаплеєр для відтворення звуку чи відео, календар для роботи з датами, власний браузер для пошуку відомостей тощо.
