Програмування розгалужених обчислювальних процесів з використанням оператора 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.