- •§ 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
§ 18. Підпрограми. Процедури користувача
Коли користувач ініціює подію (наприклад, натискає кнопку на формі), то він здійснює виклик (запуск) процедури реакції на подію. Після виконання такої процедури керування проектом автоматично передається у точку виклику (наприклад, на форму). Тепер користувач може ініціювати іншу подію, що веде до виклику, і виконання іншої процедури. У цьому параграфі створюватимемо процедури, які не є реакціями на події, а призначені для розв’язування окремих підзадач.
1. Поняття про підпрограми-процедури користувача. Розглянемо підпрограми-процедури користувача, які дають змогу виконати певні дії, зокрема, розв’язати деяку підзадачу.
Загальний опис підпрограми-процедури такий:
Sub <назва>(<список формальних параметрів>) <серія команд> End Sub |
Назву придумує користувач. У списку формальних параметрів наводять змінні. Процедура сама не виконується. Процедуру викликають з головної програми за допомогою такої команди виклику:
Саll< назва>(<список фактичних параметрів>) |
Тут Call (викликати), Sub (підпрограма) — службові слова.
Списки формальних і фактичних параметрів повинні збігатися ш кількістю параметрів та їхніми типами. Параметри дають змогу передати з головного коду в процедуру вхідні дані, а з процедури в головний код — результати.
Дія команди виклику. Під час виконання команди виклику значення фактичних параметрів надаються відповідним формальним параметрам. Виконується серія команд (тіло процедури). Результати обчислень через параметри-результати передаються у зворотному напрямку. Виконується наступна команда після команди виклику.
Задача 1. Прямокутний трикутник заданий довжинами двох катетів. Побудувати процедуру, за допомогою якої можна обчислити значення гіпотенузи.
Розв’язування. Цю задачу ми розв’язували раніше за допомогою функції користувача. Тепер нашою метою є навчитися використовувати процедури. Процедуру назвемо gipotenuza. Змінні а та b міститимуть значення катетів, а змінна с — результат. Код процедури *ає такий вигляд:
Sub gipotenuza(ByVal a, ByVal b, ByRef с)
с = Sqr(a ^ 2 + b ^ 2) ‘VBA
End Sub
Складемо головний код зі звертанням до процедури:
Dim а, b, с
а = 3 : b = 4
Call gipotenuza(a, b, с)
<вивести с>
Розгляньте на рис. 1.21 схему пересилання значень параметрів еж головною програмою і процедурою. Обчислення і пересилання починяються командами а = 3: b = 4 (далі за стрілками) і закінчуються командою <вивести с>.
Рис 1.21. Схема пересилання значень
Завдання 1. Реалізуйте код у консольному режимі і переконайтеся, що для значень катетів 3 і 4 отримаємо результат 5.
Завдання 2. Модифікуйте код, щоб додатково обчислити пер метр і площу прямокутного трикутника. Є два способи розв’язуваня завдання: 1) використання попередньої процедури зі збільшенням кіль кості параметрів або 2) створення двох додаткових процедур. Який спосіб ви обрали?
Завдання 3. Розв’яжіть задачу 1 у вигляді візуального проекту.
Довідка 1. У VBA виклик процедури можна записувати без службового слова Call і без круглих дужок, що охоплюють перелік параметрів: < назва> <список фактичних параметрів>. Наприклад,
gipotenuza а, b, с.
2. Процедури як засіб реалізації принципу декомпозиції алгоритмів. Якщо для розв’язування завдання 2 задачі 1 ви обрали другий спосіб, то це означає, що ви розумієте призначення і вмієте застосовувати процедури для реалізації принципу декомпозиції алгоритмів.
Отже, створимо дві такі процедури:
Sub perymetr(ByVal a, ByVal b, ByVal с, ByRef p)
p = a + b +c
End Sub
Sub ploshcha (ByVal a, ByVal b, ByRef s)
s = a * b / 2
End Sub
Складемо головний код зі звертанням до трьох процедур:
' Це головний код Dim а, Ь, с
а = InputВох("Введіть перший катет")
b = InputВох("Введіть другий катет")
Call gipotenuza(a, b, с)
Call perymetr (a, b, c, p)
Call ploshcha (a, b, s)
<вивести c>
<вивести p>
<вивести s>
У результаті декомпозиції алгоритму головний код складається з команд введення даних, викликів процедур і команд виведення результатів. Перетворення даних у головному коді зазвичай не виконують. Це роблять у процедурах. Такий стиль програмування прийнято називати процедурним. Зверніть увагу, що коди процедур відокремлені від головного коду.
Завдання 4. Реалізуйте описану програму, ввівши у вікно коду коди трьох процедур і головний код як процедуру Sub main().
Завдання 5. Додайте до кодів ще одну процедуру з назвою sota, яка визначає висоту, опущену на гіпотенузу. Визначіть висоту.
Завдання 6. Реалізуйте розв’язок задачі 1 (завдання 2-5) як візуальний проект.
3. Приватні та загальнодоступні підпрограми. Підпрограми, які зміщені в коді проекту (чи в модулі), є власністю проекту (модуля ). Вони можуть бути викликані будь-яким кодом чи об’єктом проекту (модуля). Об’єкти інших проектів (модулів) доступу до цих підпрограм не мають. Описи таких підпрограм зазвичай починаються зі службового слова Private, але відповідно до принципу замовчування його можна і не писати. Ось чому, описуючи підпрограми, ми е вживали це слово.
Якщо до підпрограм треба надати доступ з інших проектів, форм чи модулів, то підпрограми оголошують як загальнодоступні службовим словом Public. У цьому розділі книжки задачі, де треба виикористати опис Public, не розглядатимемо.
4. Ще раз про локальні та глобальні змінні. Якщо в процедурі чи функції треба використати, окрім параметрів, додаткові змінні, то ці змінні оголошують командою Dim у процедурі чи функції. Такі змінні називають локальними. Після закінчення роботи підпрограми локальні змінні втрачають значення.
Ви вже знаєте, що змінні, оголошені над підпрограмами, називають глобальними. Вони зберігають свої поточні значення на вході на виході кожної підпрограми. Глобальні змінні ми використовували під час розв’язування задачі про голосування в § 14.
Якщо використовувати глобальні змінні, то процедури і функції можна писати без параметрів, покладаючись на глобально описані змінні на початку коду. Перевагою таких кодів є компактність текстів коду і заголовків процедур, а недоліком — незахищеність від випадкових помилок і немобільність коду (неможливість без доопрацювання застосувати процедури в інших програмах). Ось чому підпрограми, які створюють професіонали і які є предметом купівлі-продажу чи обміну, створюють з використанням формальних параметрів і локальних змінних.
Довідка 2. Щоб усі локальні змінні процедури зберігали свої значення за межами процедури, у VBA таку підпрограму оголошують зі словом Static. У VB такі змінні оголошують зі словом Static у самій підпрограмі.
5. Поняття про структурне програмування. Ви вже знайомі з принципом декомпозиції великих задач і алгоритмів, відповідно до якого їх потрібно поділяти на простіші частини і послідовно деталізувати (наповнювати) частини, тобто створювати і реалізовувати часткові розв’язки, з яких складатиметься розв’язок задачі. Цей принцип лежить в основі всіх стилів програмування, зокрема структурного.
Структурний стиль програмування передбачає:
Використання трьох базових алгоритмічних структур (лінійної, розгалуження, циклу) для створення розв’язку чи часткових розв’язків.
Намагання уникати команди переходу GoTo.
Написання програм, зрозумілих для осіб, які їх читатимуть.
Систему заходів перевірки правильності кодів: аналіз програми до її виконання, перевірка програм на тестових даних, взаємоконтроль під час колективної роботи над створенням складних програм тощо.
Розглянемо ці принципи детальніше.
Базові структури. Нагадаємо, що є три базові алгоритмічні конструкції (структури): 1) лінійна (слідування); 2) розгалуження; 3) цикл. Доведено, що будь-який алгоритм можна реалізувати за допомогою базових алгоритмічних структур та їх комбінацій.
Потрібно уникати команд переходу. Вважається, що команді переходу GoTo (особливо до попередньої частини програми) ускладнюють читання програми. Тому їх використання рекомендують зводити до мінімуму. Уникнути команд переходу можна за допомогою таких конструкцій мови, як команда If-Then-Else, команда вибору Select Case, підпрограм з параметрами, команд циклу For і While, які вивчатимемо в наступних параграфах.
Зауваження. Щоб завчасно вийти з деякої конструкції, є команди «негайного» виходу Exit: Exit If, Exit Select, Exit While, Exit For, Exit Sub тощо.
Зрозумілість кодів. До деяких кодів користувач може повертатися через певний час, також ці коди можуть читати інші особи. Тому коди мають бути зрозумілими не лише авторові. Для цього змінних та іншим об’єктам надають назви, які відповідають змісту задачі, а також пишуть коментарі до кодів, де пояснюють дії команд, команди записують з певними відступами від лівого поля. Таке написання команд називають структурованим.
Правильність програми треба перевіряти до її виконання Один із способів перевірки програм — це поставити себе на місце виконавця-комп’ютера і покроково з ручкою в руках виконати ко; для таких вхідних даних (тестів), для яких це легко зробити чи розв’язок задачі відомий. Такий прийом називають трасуванням коду. Якщо отриманий результат достовірний, то з великою вірогідністю можна стверджувати, що код правильний. Інший спосіб — застотувати засіб середовища розробки, який називають налагоджувачем Debug). Він призначений для покрокової перевірки коду з демонстрацією у вікні коду чи у вікні Debug проміжних значень змінних. Це іає змогу з’ясувати правильність коду або виявити помилки.
Вправи
1. Дано процедуру
Sub taskl (ByVal a, ByVal b, ByRef с, ByRef d)
с = a + 2 * b
d=c*2-3*a
End Sub
Які значення змінних:
а) с і d після виконання команди Call taskl (2, 3, с, d);
б) k і n після виконання команди Call taskl (3, 2, к, n)?
2*. Дано подібну процедуру, але параметр с описаний зі словом ByVal:
Sub task2(ByVal a, ByVal b, ByVal с, ByRef d)
с = a + 2 * b
d=c*2-3*a
End Sub
Які значення змінних:
а) с і d після виконання команди Call task2(2, 3, с, d);
б) k і n після виконання команди Call task2(3, 2, к, n)?
3. Складіть процедуру, яка для заданої сторони куба обчислює його площу бічної поверхні та об’єм.
4. Складіть процедуру, яка обчислює вартість декількох одиниць деякого товару.
5. Складіть процедуру, яка для трьох чисел обчислює суму, добуток і середнє арифметичне.
6. Складіть процедуру, яка для заданого числа повертає повідомлення: «число додатне», «число від’ємне», «число 0».
7. Розв’язок задачі 1 з розділу «Задачі» оформіть у вигляді головного коду і процедури.
