![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Часто доводиться програмувати вибір однієї з декількох взаємовиключних можливостей, що називаються альтернативами.
Приклад 6.11. Нехай Ви хочете зобразити в графічному вікні одну з трьох фігур (окружність, квадрат чи трикутник) одним з чотирьох кольорів (червоним, зеленим, жовтим чи чорним). Тут Ви маєте справу з 12 альтернативами, з яких Вам треба вибрати тільки одну.
Можна запропонувати наступну програму для такого вибору (код 6.12):
Код 6.12 |
![]() |
Програма складається з двох частин: у першій частині вибирається колір, а в другій — вибирається фігура, що зображується обраним кольором. При цьому передбачається, що дві змінні — Колір і Фігура, — вже одержали потрібні значення. (Ці значення користувач міг, наприклад, внести в текстові поля чи ввести за допомогою вікон введення.)
Як Ви бачите, програма дуже проста — у ній всього 7 умовних операторів, що виконуються послідовно, один за одним. Ці оператори не містять слова Else — за допомогою кожного з них здійснюється не подвійний, а одинарний умовний перехід. Може здатися, що це і є ідеальне вирішення проблеми вибору альтернативи.
Однак, Ви можете побачити в цій програмі (і не без підстави) один недолік: у своїй роботі вона буде робити зайві перевірки умов. Дійсно, якщо, наприклад, за допомогою першого оператора обраний червоний колір, то немає сенсу виконувати 3 оператори, що залишились і у яких вибираються інші кольори. Але ці оператори все-таки будуть виконуватися послідовно!
Одним зі способів усунення цього недоліку є включення до умовних операторів слова Else, наприклад, так:
Код 6.13 |
![]() |
Але читати (а тим більше, писати) такі програми не дуже приємно — Ви самі бачите, чому.
На щастя, у мові Visual Basic є більш простий спосіб запису програми, що покликана вибирати альтернативу. Цей спосіб застосовується в тому випадку, коли умова в умовних операторах наступна: Змінна = Значення. Він полягає у використанні оператора Select Case.
Розглянемо спрощений синтаксис цього оператора (детальніше оператор Select Case буде розглянутий у другій частині посібника, присвяченій перевірці складних умов).
SelectCase Змінна Case Значення 1 ПослідовністьОператорів 1... CaseЗначення(N-1) ПослідовністьОператорів(N-1) [CaseElse Послідовністьоператорів ] End Select |
Вважається, що ціле число N (кількість альтернатив) не менше двох — інакше і вибір не треба було б робити.
З використанням оператора Select Case код 6.13 буде мати більш «приємний» вигляд:
Код 6.14 |
![]() |
Для програмування вибору альтернативи в наборі Toolbox середовища Visual Basic є дуже зручний інструмент — Option Button (Кнопка-перемикач).
— піктограма цього інструмента.
З його допомогою на екранній формі створюються особливі об'єкти керування — кнопки-перемикачі, що обов'язково поєднуються у групи (кнопок повинно бути не менше двох в одній групі).
Для об'єднання кнопок у групу найкраще помістити їх на особливий об'єкт, що називається Рамкою (Frame). Об'єкти класу Рамка створюються за допомогою інструмента Frame з набору Toolbox середовища Visual Basic.
— піктограма цього інструмента.
Об'єднані в групу, кнопки-перемикачі одержують цікаву особливість — якщо одна з них буде «натиснута», то інші автоматично стають «вимкненими». При цьому значення властивості Value y «натиснутої» кнопки буде дорівнює True, а у «вимкненій» — False. Використовуючи цю властивість, за допомогою кнопок-перемикачів можна легко запрограмувати введення і вибір різного роду альтернатив.
Приклад 6.12. На мал. 6.7 зображено вікно додатка, за допомогою якого в графічному вікні малюються кола різного кольору. Колір вибирає користувач за допомогою кнопок-перемикачів, поміщених на об'єкт Рамка з написом «Колір кола» на бордюрі (напис на бордюрі об'єкта Рамка — це значення властивості Caption цього об'єкта).
![]() |
Мал. 6.7. Використання кнопок-перемикачів для вибору альтернативи |
Об'єкт класу Рамка має особливу властивість, завдяки якій його називають об'єктом-контейнером (контейнерами є також об'єкти класів Екранна форма і Графічне вікно) — сховищем інших об'єктів, що знаходяться всередині (щоб помістити об'єкт всередину рамки, потрібно спочатку цю рамку створити і тільки потім помістити всередину її цей об'єкт (але не навпаки!)) рамки. Ця властивість така: переміщаючи рамку, Ви разом з нею переміщаєте і всі об'єкти, що знаходяться всередині; знищуючи рамку, Ви знищуєте і всі об'єкти, що знаходяться в ній; роблячи рамку невидимою (Об'єкт невидимий, якщо значенням його властивості Visible є False), Ви робите невидимими і всі об'єкти, що знаходяться в ній.
Нові поняття:
алгебра логіки (булева алгебра), альтернатива, оператор вибору альтернативи Select Case, об'єкт Рамка, об'єкт Кнопка-перемикач, об'єкт-контейнер.
Питання для роздумів
Могли б Ви самостійно довести справедливість наведених у цьому розділі правил булевої алгебри (правил винесення загального доданка і загального співмножника за дужки, правил де Моргана й інших)?
Могли б Ви самостійно визначити істинність виразу
(X > 5) Or (X = 0 And Y < 0) Or (Not (X >= Z))
для шести комбінацій значень величин X, Y, Z, наведених у табл. 6.5?
Табл. 6.5. | |||
Номер | X | Y | Z |
-10 | |||
-10 | |||
-10 | |||
-10 | |||
-10 | -10 | ||
-10 |
Як буде виглядати код 6.11, якщо замінити усі вхідні в нього оператори If Then Else операторами Select Case?
Скільки об'єктів класу Рамка і скільки об'єктів класу Кнопка-перемикач потрібно створити на екранній формі, щоб з їх допомогою вирішити задачу прикладу 6.11 про малювання різних геометричних фігур різного кольору?
Вправи
Запрограмуйте додаток, за допомогою якого можна перевірити істинність виразу
(X > 5) Or (X = 0 And Y < 0) Or (Not (X > - Z))для будь-яких значень величин, що вводяться Вами, X, Y, Z (у тому числі і тих, що наведені в табл. 6.5).
Спроектуйте два варіанти додатка, що вирішує задачу приклада 6.11 — з використанням кнопок-перемикачів і з використанням двох текстових полів для вводу значень змінних Колір і Фігура. У першому випадку використайте в програмі умовний оператор If Then Else, а в другому — оператор Select Case?
Дата публикования: 2014-12-28; Прочитано: 265 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!