Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОБЩИЙ_файл_ПОСОБИЕ.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
22.69 Mб
Скачать

Питання для самодіагностики

  1. Яке призначення операторів циклу?

  2. У яких випадках використовуються цикли з параметром? Приведіть приклади.

  3. У яких випадках використовуються оператори умовного циклу? Приведіть приклади.

  4. Чим відрізняється застосування ключових слів While і Until?

  5. Чи можуть ключові слова While і Until одночасно вживатися в одному операторі циклу?

  6. Намалюйте схеми алгоритмів для циклічних процесів із передумовою і постумовою і поруч запишіть відповідні оператори циклу. Поясните їхню дію.

  7. Чому в циклах з умовою для введення даних використовується функція InputBox, а не текстові поля?

  8. Опишіть синтаксис функції InputBox.

  9. Приведіть приклад реалізації функції InputBox у програмному коді.

  10. У яких випадках використовується оператор MsgBox? Приведіть приклади.

  11. Опишіть синтаксис функції MsgBox().

  12. У яких випадках при організації циклу застосовується функція MsgBox()?

  13. З якою метою в циклах з умовою використовується змінна i? Чи обов'язкове її використання?

  14. Придумайте два завдання, у яких би застосовувалися оператори циклу з верхнім і нижнім закінченнями.

5.5. Технологія розробки та використання користувацьких процедур і функцій Теоретичні відомості

У попередніх лабораторних роботах розглядалися ситуації, у яких кожний проект є сукупність блоків (процедур), з яких складається код програми, при цьому кожна процедура виконує завдання або його частину. Процедура обробки подій після запуску додатка на виконання постійно перебуває у стані очікування події, з яким ця процедура зв'язана.

У програмному середовищі Visual Basic for Applications можна створювати блоки програмного коду, на які потім можна посилатися в основній програмі або використовувати у додатках MS Excel, MS Word та ін. Для того, щоб забезпечити таку можливість, кожному блоку програми необхідно присвоити ім'я, за яким він може бути викликаний і виконаний.

Крім процедур обробки подій, у програму можна включати процедури й функції, які не пов'язані з подіями. Вони виконують окремі дії й можуть бути використані багаторазово. Використання процедур і функцій дозволяє заощаджувати час і підвищити надійність програми.

Під процедурою або функцією розуміється послідовність операторів, які потрібно багаторазово виконувати в різних місцях проекту. При цьому необхідний блок команд записується в коді тільки один раз, після чого до нього можна звертатися з будь-якої частини програми.

Процедура – це підпрограма, при виклику якої виконуються деякі дії, але при цьому від неї не потрібно повертати основній програмі які-небудь значення.

Синтаксис користувацької процедури може бути таким:

[Public/Private][Static] Sub <Ім'я процедури>(<Параметри>)

<Оператори>

End Sub.

Процедури, що оголошені із ключовим словом Public, можна викликати в будь-якому модулі додатка (кожна форма – це окремий модуль).

Процедури, що оголошені як Private, можна викликати тільки в поточному модулі.

Слово Static означає, що всі змінні, що оголошені в процедурі, будуть статичними, тобто їх значення зберігаються між викликами.

Параметри (аргументи) процедури забезпечують зв'язок процедури з додатком і являють собою дані, які передаються в процедуру при її виклику.

Функція – це підпрограма, що викликається для виконання яких-небудь розрахунків або для перевірки. Після завершення роботи функції, вона повертає управління перерваної програмі й передає їй результат розрахунку або перевірки.

Особливістю користувацьких функцій є ще й те, що вони стають складовими елементами системних функцій і включаються в категорію "Определенные пользователем". При виконанні різних розрахунків в MS Excel, MS Access і ін. вони можуть використовуватися поряд зі стандартними системними функціями.

Синтаксис користувацької функції може бути таким:

Function <Ім'я функції> (<Параметри>) ([As <тип>])

<Оператори>

End Function.

У складі операторів функції обов'язково повинен бути оператор присвоєння імені функції значення, що отримується і яке повертається при звертанні до неї.

Як правило, користувацькі процедури й функції містять формальні параметри (аргументи), що застосовуються для зберігання значень, які при звертанні до них будуть передаватися в підпрограму або функцію.

Між користувацькими процедурами й функціями є ряд відмінностей, сутність яких полягає в наступному:

1. Функція має тип даних (аналогічно змінної) і може повертати в програму значення, що присваюється функції за допомогою оператора:

<Ім'я функції> = Значення.

2. Виклик функції, як правило, здійснюється за допомогою вказівок її імені й параметрів в правій частині якого-небудь оператора.

3. На відміну від функції процедура викликається за допомогою окремого оператора:

Call <Ім'я процедури> (Фактичні параметри)

або <Ім'я процедури> Фактичні параметри.

Якщо при виклику процедури використовується ключове слово Call (викликати), то список параметрів повинен бути зазначений у дужках. Якщо ж процедура викликається без використання ключового слова Call, то її параметри перераховуються без дужок.

При створенні користувацьких процедур або функцій імена формальних параметрів, із вказівкою типу даних кожного з них, беруться у дужки. Між параметрами застосовується в ролі роздільника кома.

Для функцій, крім формальних параметрів, необхідно вказувати тип результату, що повертається.

Всі аргументи процедури можна розділити на вхідні і вихідні (результат реалізації процедури). Для функції всі аргументи є вхідними, а результат повертає сама функція. Аргументи процедур і функцій можуть бути обов'язковими й необов'язковими. Необов'язкові аргументи записуються після обов'язкових; при цьому для вказівки необов'язкових аргументів використовується ключове слово Optional.

Якщо в програмному коді виникає необхідність використання користувацької процедури або функції, варто вказати їх ім'я, а в дужках формальні параметри замінити на фактичні. При цьому необхідно витримувати їх кількісний склад, послідовність перерахування й типи даних. При порушенні цих вимог транслятор призупинить обчислювальний процес і видасть повідомлення про помилку.

На простому прикладі демонструється технологія формування й використання користувацької процедури, що забезпечує розрахунок вартості товару. Нехай цій процедурі (підпрограмі) присвоєне ім'я "ВартістьП". Відповідно до наведеної вище технології формування процедура може мати такий вигляд (рис. 5.40):

Sub ВареістьП(x As Currency, y As Integer, z As Currency) z=x*y

End Sub

Рис. 5.40. Користувацька процедура розрахунку вартості

У цій користувацькій процедурі x і y – вхідні формальні параметри, а z – вихідний формальний параметр.

Дана процедура може бути використана в проекті "Касовий апарат", що розглянуто у підрозділі 5.3. На рис. 5.41 представлена спрощена форма зазначеного проекту.

Рис. 5.41. Ескіз форми "Касовий апарат"

Для визначення вартості товару й видачі результату в текстове поле може бути використана процедура, що виконується при клацанні на кнопці Розрахунок. У цій процедурі використовується підпрограма (користувацька процедура) ВартістьП з різними варіантами заміни формальних параметрів на фактичні.

У першому варіанті при звертанні до користувацької процедури використовується службове слово Call (рис. 5.42).

Private Sub CmdРозрахунок_Click() Dim CurZіna As Currency Dim CurVartist As Currency Dim IntKilkist As Integer CurZіna=CCur(TxtЦіна.Text) IntKilkist=CInt(TxtКількість.Text)

Call ВартістьП(CurZіna, IntKilkist, CurVartist) TxtРезультат.Text=Format(CurVartist, “# ##0.00”)

End Sub

Рис. 5.42. Перший варіант звертання до процедури ВартістьП

При такому варіанті звертання до користувацької процедури вхідні й вихідні фактичні параметри повинні бути поміщені в круглі дужки обов'язково.

У другому варіанті звертання до користувацької процедури службове слово Call не використовується (рис. 5.43).

Option Explicit

Private Sub CmdРозрахунок_Click() Dim CurZіna As Currency Dim CurVartist As Currency Dim IntKilkist As Integer CurZіna=CCur(TxtЦіна.Text) IntKilkist=CInt(TxtКількість.Text) ВартістьП CurZіna, IntKilkist, CurVartist TxtРезультат.Text=Format(CurVartist, “# ##0.00”) End Sub

Рис. 5.43. Другий варіант звертання до процедури ВартістьП

При такому варіанті звертання до процедури фактичні параметри перераховуються без дужок.

Результати виконання проекту при двох варіантах звертання до користувальницької процедури ВартістьП аналогічні й представлені на рис. 5.44.

Рис. 5.44. Результат використання користувацької процедури