Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
A.P._Lutay_A.P._Informatika_ta_komp'yuterna_teh....doc
Скачиваний:
12
Добавлен:
29.04.2019
Размер:
3.28 Mб
Скачать

17.1.2 Оператор варіанти Select Case

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

Загальна форма оператора:

Select Case X

Case <значення1 або віраз1>

ділянка програми, що виконується, якщо Х = значення1 або выраз1

Case <значення2 або віраз2>

ділянка програми, що виконується, якщо Х = значення2 або выраз2

. . .

Case <значенняN або віразN>

ділянка програми, що виконується, якщо Х = значенняN або выразN

Case Else

ділянка програми, що виконується, якщо жодна з умов не відповідає

фактичному значенню Х

End Select

Виконання оператору Select Case залежить від значення змінної Х – змінної варіанти. У першій гілці обчислюється значення виразу1, якщо він є в операторі, результат або значення1 порівнюється з фактичним значенням змінної Х. Якщо в наслідок порівняння отримано значення “істина”, виконуються оператори, які йдуть після рядка Case. Коли отримано значення “брехня”, обчислюється значення виразу2, змінна Х порівнюється з отриманим результатом або значенням2, якщо значення рівні, виконується друга гілка і т.д. Гілка Case Else в операторі не обов'язкова, виконується, якщо жодна з умов не відповідає фактичному значенню Х.

Приклад застосування оператора Select Case

Щоб розглянути використання оператора Select Case на прикладі потрібно доробити програму, створену в п.17.1.1. Після редагування програма повинна включати засоби аналізу клавіші, натиснутої при введенні даних у полях txta, txtb, txtx, txty. Припустимим вважається натискання спеціальних клавіш (наприклад, клавіш керування курсором, Del, Home), клавіші Backspace, десяткової крапки, цифр від 0 до 9. У форму необхідно помістити ще один елемент - етикетку lblMesKey для виведення повідомлення у випадку натискання неприпустимої клавіші. Після натискання будь-якої клавіші в текстовому полі, якому відповідає подія KeyPress, потрібно виконати аналіз натиснутої клавіші. Якщо натиснута неприпустима клавіша, то видається повідомлення про помилку і вміст текстового поля знищується, у противному випадку ніяких дій не виконується. Аналіз натиснутої клавіші виконується за допомогою цілої числової змінної KeyAscii. Через цю змінну в момент натискання (подія KeyPress) процедурі, яка відповідає події, передається значення ASCII-коду натиснутої клавіші. Процедура повинна перевіряти символ, що вводиться, на припустимість. Список припустимих у процедурах кодів наведено в таблиці:

Значення змінної KeyAscii

Пояснення

0

Спеціальні клавіші

8

Backspace

46

Десяткова крапка

48. .57

Цифри від 0 до 9

На етапі візуального програмування потрібно змінити ім'я форми, помістити у форму додатковий елемент - етикетку lblMesKey.

Рисунок 17.4 - Вікно програми -приклада використання оператора Select Case

До коду програми потрібно додати процедуру, яка подана в таблиці.

Дані в рядку коду

Коментар

Private Sub txta_KeyPress (KeyAscii As Integer)

Процедура, що виконується у випадку натискання будь-якої клавіші в полі txta для введення перемінної а. Для створення процедури потрібно виконати подвійне клацання лівою кнопкою миші на текстовому полі.

lblMesKey.Caption = " "

Властивості Caption етикетки lblMesKey (для виведення повідомлення про помилку) привласнюється значення ““ (порожній рядок).

Select Case KeyAscii

Початок оператора Select Case, що реалізує розгалуження виконання програми в залежності від значення стандартної змінної KeyAscii

Case 0, 8, 46, 48 To 57

У тому випадку, якщо змінна KeyAscii дорівнює 0, 8 або 46, або знаходиться в діапазоні від 48 до 57 ніяких дій не виконується.

'Припустиме значення

Рядок коментарю, який введено для зручності читання коду програми.

Case Else

інакше, коли жодна з умов не відповідає значенню змінної KeyAscii виконуються такі дії

'Неприпустиме значення

lblMesKey.Caption = "Натиснута неприпустима клавіша"

Властивості Caption етикетки lblMesKey привласнюється значення "Натиснута неприпустима клавіша".

txtа.Text = " "

Властивості Text текстового поля txtа привласнюється значення ““ (порожній рядок).

KeyAscii = 0

Змінної KeyAscii присвоюється значення 0.

End Select

Завершення оператора Select Case.

End Sub

Завершення процедури txtа_KeyPress

Private Sub txtb_KeyPress (KeyAscii As Integer)

Процедура, що виконується у випадку натискання будь-якої клавіші в полі txtb для введення перемінної b. Для створення процедури потрібно виконати подвійне клацання лівою кнопкою миші на текстовому полі.

lblMesKey.Caption = " "

Властивості Caption етикетки lblMesKey (для виведення повідомлення про помилку) привласнюється значення ““ (порожній рядок).

Select Case KeyAscii

Початок оператора Select Case, що реалізує розгалуження виконання програми в залежності від значення стандартної змінної KeyAscii

Case 0, 8, 46, 48 To 57

У тому випадку, якщо змінна KeyAscii дорівнює 0, 8 або 46, або знаходиться в діапазоні від 48 до 57 ніяких дій не виконується.

'Припустиме значення

Рядок коментарю, який введено для зручності читання коду програми.

Case Else

інакше, коли жодна з умов не відповідає значенню змінної KeyAscii виконуються такі дії

'Неприпустиме значення

lblMesKey.Caption = "Натиснута неприпустима клавіша"

Властивості Caption етикетки lblMesKey привласнюється значення "Натиснута неприпустима клавіша".

txtb.Text = " "

Властивості Text текстового поля txtb привласнюється значення ““ (порожній рядок).

KeyAscii = 0

Змінної KeyAscii присвоюється значення 0.

End Select

Завершення оператора Select Case.

End Sub

Завершення процедури txtb_KeyPress

Private Sub txtx_KeyPress (KeyAscii As Integer)

Процедура, що виконується у випадку натискання будь-якої клавіші в полі txtx для введення перемінної x. Для створення процедури потрібно виконати подвійне клацання лівою кнопкою миші на текстовому полі.

lblMesKey.Caption = " "

Властивості Caption етикетки lblMesKey (для виведення повідомлення про помилку) привласнюється значення ““ (порожній рядок).

Select Case KeyAscii

Початок оператора Select Case, що реалізує розгалуження виконання програми в залежності від значення стандартної змінної KeyAscii

Case 0, 8, 46, 48 To 57

У тому випадку, якщо змінна KeyAscii дорівнює 0, 8 або 46, або знаходиться в діапазоні від 48 до 57 ніяких дій не виконується.

'Припустиме значення

Рядок коментарю, який введено для зручності читання коду програми.

Case Else

інакше, коли жодна з умов не відповідає значенню змінної KeyAscii виконуються такі дії

'Неприпустиме значення

lblMesKey.Caption = "Натиснута неприпустима клавіша"

Властивості Caption етикетки lblMesKey привласнюється значення "Натиснута неприпустима клавіша".

txtx.Text = " "

Властивості Text текстового поля txtx привласнюється значення ““ (порожній рядок).

KeyAscii = 0

Змінної KeyAscii присвоюється значення 0.

End Select

Завершення оператора Select Case.

End Sub

Завершення процедури txtx_KeyPress