- •Тема 12. Основи офісного програмування
- •End If
- •End If
- •End If
- •End If
- •11.5. Програмування розгалужених обчислювальних процесів з використанням оператора If
- •[Case Else
- •End Select
- •11.7. Програмування розгалужених обчислювальних процесів з використанням оператора Select Case
- •11.9. Програмування циклічних обчислювальних процесів з використанням оператора For … Next
- •11.11. Програмування циклічних обчислювальних процесів з використанням оператора Do … Loop
- •Контрольні питання
П
Select
Case <керуюча
змінна>
Case<список1>
<блок операторів 1> Case<список2>
<блок операторів 2>
Case
<список3>
<блок операторів 3>
……………………..
Case<список
n>
<блок операторів n> <блок
операторів гілки Else>]
[Case Else
End Select
де <керуюча змінна> - вираз або змінна числового або стрічкового типу, значення якої порівнюється зі значеннями констант такого ж типу, які наводяться у списках;
<список1>, <список2>, …, <списокn> - список констант, відкритих або закритих інтервалів;
<блок операторів 1>, <блок операторів 2>, …, <блок операторів гілкиElse> - один або більше допустимих у мові VBA операторів.
Щодо формату значень списків, то він може бути досить гнучким. У таблиці 15.4 Наведені можливі варіанти списків значень.
Табл.15.4. Варіанти списків значень оператора Сase
Список Сase |
Елементи списку |
25 |
Одна константа |
1, 3, 5, 7 |
Чотири константи |
1, 3, 5, 7 To 9, 11 |
Чотири константи та закритий інтервал |
“Луцьк” |
Одна стрічкова константа |
3, 5, Is > 7 |
Три константи та відкритий інтервал |
Is < 0, 0, 1, 3, 5 To 7, Is >10 |
Три константи два відкритих і один закритий інтервали |
Під час виконання оператора Select Case спочатку обчислюється значення елемента <керуюча змінна>, якщо він заданий числовим виразом. Це значення порівнюється зі значеннями констант, наведених у списку <список1>. У випадку, коли значення керуючої змінної співпаде з одним із значень елемента <список1>, виконуються оператори блоку <блок операторів 1>, і на цьому робота оператора закінчується. Якщо ж значення керуючої змінної не співпаде з жодним із значень елемента <список1>, комп’ютер переходить до порівняння значення керуючої змінної зі значеннями констант, наведених в елементі <список2> і т.д. Якщо ж значення керуючої змінної не співпаде з жодним із значень усіх списків, виконуються оператори <блок операторів гілки Else >, якщо гілка Else є, або відбувається остаточний вихід з оператора Select Case.
11.7. Програмування розгалужених обчислювальних процесів з використанням оператора Select Case
Формулювання задачі. Скласти підпрограму обчислення значення складної функції, наведеної в розділі 11.5, за допомогою оператора Select Case.
Нижче наведено програмний код розв’язування даної задачі.
Sub Select_Case()
'Завдання. Дано аргумент функції x.
'Необхідно обчислити:
'значення складної функції y, яка задана виразами:
'x^2-3*x+1, якщо x<-2;
'sin(3*x)^2*log(abs(2*x-1))/log(3), якщо -2=<x=<3;
'x^2+5*x+1, якщо 0<x<2;
'2^(-x), якщо x>=2;
Dim x, y As Single
x = Val(InputBox("Введіть значення аргумента x!"))
Select Case x
Case Is < -2
y = x ^ 2 - 3 * x + 1
Case -2 To 0
y = Sin(3 * x) ^ 2 * Log(Abs(2 * x - 1)) / Log(3)
Case 0.0000001 To 1.9999999
y = x ^ 2 + 5 * x + 1
Case Else
y = 2 ^ (-x)
End Select
MsgBox "x=" & Format(x, "0000.00") & " y=" & _
Format(y, "0000.00")
End Sub
11.8. Оператор циклу For … Next
Оператор циклу For … Next має такий формат:
For <параметр циклу> = <поч знач парам циклу> To <кін знач парам циклу> [Step <крок> ]
<блок операторів 1>
[Exit For]
<блок операторів 2>
Next [<параметр циклу > ]
де <параметр циклу> - проста змінна числового типу, яка є параметром циклу;
<поч знач парам циклу> - константа, проста змінна або вираз того ж типу, що і параметр циклу і значення якого визначає початкове значення параметра циклу;
<кін знач парам циклу> - константа, проста змінна або вираз того ж типу, що і параметр циклу і значення якого визначає кінцеве значення параметра циклу;
<крок> - константа, проста змінна або вираз того ж типу, що і параметр циклу і значення якого визначає крок зміни параметра циклу;
<блок операторів 1>, <блок операторів 1> - один або більше допустимих у мові VBA операторів.
Робота оператора For … Next полягає в наступному. Спочатку він надає елементу <параметр циклу> значення <поч знач парам циклу>. Якщо це значення виявиться меншим від значення <кін знач парам циклу>, то виконюються оператори тіла циклу, тобто оператори, які входять в <блок операторів 1> та <блок операторів2>. Далі до значення <параметр циклу> додасться значення елемента <крок>, і процес виконання оператора циклу повториться вже з новим значенням параметра циклу. Це триватиме доти, поки значення <параметр циклу> не перевищить значення <кін знач парам циклу> . У цьому випадку відбувається вихід із циклу. Зазначимо, що вихід із циклу може відбутися і передчасно, якщо спрацює елемент [Exit Do]. Елемент Exit Do зазвичай використовується у складі умовного оператора If … Then, який перевіряє альтернативну умову переривання циклу. Цей оператор циклу називають оператором циклу з лічильником, адже в ньому заздалегідь відомо кількість повторень циклу. Якщо початкове значення параметра циклу менше від кінцевого значення параметра циклу, то використовують параметр циклу зі знаком плюс, у протилежному випадку - зі знаком мінус. За замовчуванням оператор циклу використовує <крок>, що дорівнює одиниці, і тоді елемент [Step <крок> ] можна не вказувати ; якщо ж <крок> має бути відмінним від одиниці, то він повинен бути заданий явно.