Програмування розгалужених обчислювальних процесів з використанням оператора If
End If
виведе вікно повідомлення з розміщеним у ньому текстом «Оптова ціна велика!» і зменшить значення змінної curOnтЦіна на 10 одиниць, але лише у тому випадку, якщо виконуватиметься умова curOптЦіна > 1000. У протилежному випадку цей оператор буде пропущений.
Багатоблочний умовний оператор має формат:
If <умова 1> Then
<блок операторів 1>
ElseIf <умова 2> Then
<блок операторів 2>
ElseIf < умова 3> Then
<блок операторів 3>
……………………..
ElseIf< умова n> Then
<блок операторів n>
End If
Робота багатоблочного умовного оператора полягає в наступному. Якщо <умова1> приймає значення True, то виконується <блок операторів1>, у протилежному випадку перевіряється <умова2>; якщо <умова2> приймає значення True, то виконується <блок операторів2>, у протилежному випадку перевіряється <умова3>; і т.д., поки не перевіриться < умова n>. Якщо жодна з умов не буде істинною, оператор If пропускається і виконується оператор, записаний після слів End If.
Робота повноформатного багатоблочного умовного оператора, наведеного на початку розділу, здійснюється аналогічно за одним винятком. Якщо жодна з умов не буде істинною, то виконується оператор, записаний після Else.
Програмування розгалужених обчислювальних процесів з використанням оператора If
Формулювання задачі. Скласти підпрограму обчислення значення складної функції
Нижче наведені форма та програмний код розв’язування даної задачі.
Private Sub CommandButton1_Click()
'Завдання. Дано аргумент функції 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 = CSng(TextBox1.Text)
If x <= -2 Then
y = x ^ 2 - 3 * x + 1
ElseIf (x >= -2) And (x <= 0) Then
y = Sin(3 * x) ^ 2 * Log(Abs(2 * x - 1)) / Log(3)
ElseIf (x > 0) And (x < 2) Then
y = x ^ 2 + 5 * x + 1
Else
y = 2 ^ (-x)
End If
MsgBox "x=" & Format(x, "0000.00") & " y=" & _
Format(y, "0000.00")
TextBox1.Text = Format(x, "0000.00")
TextBox2.Text = Format(y, "0000.00")
TextBox3.Text = TextBox3.Text _
+ "x=" + Format(x, "0000.00") + " y=" + _
Format(y, "0000.00") + vbCr
End Sub
11.6. Умовний оператор вибору Select Case
![]() |
Повний формат оператора Select Case такий:
де <керуюча змінна> - вираз або змінна числового або стрічкового типу, значення якої порівнюється зі значеннями констант такого ж типу, які наводяться у списках;
<список1>, <список2>, …, <список n> - список констант, відкритих або закритих інтервалів;
<блок операторів 1>, <блок операторів 2>, …, <блок операторів гілки Else > - один або більше допустимих у мові VBAоператорів.
Щодо формату значень списків, то він може бути досить гнучким. У таблиці 15.4 Наведені можливі варіанти списків значень.
Табл.15.4. Варіанти списків значень оператора Сase
Список Сase | Елементи списку |
Одна константа | |
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.