Програмування циклічних обчислювальних процесів з використанням оператора Do … Loop
Формулювання задачі. Використовуючи оператор Do While … Loop, скласти підпрограму табулювання функції , якщо аргумент функції xнабуває значень з інтервалу
, змінюючись кожен раз на величину кроку
Нижче наведені форма та програмний код розв’язування даної задачі.
Private Sub CommandButton1_Click()
'Завдання. Дано функцію
'y=sin(3*x);
'інтервал зміни аргумента [1; 3];
'крок зміни аргумента h=0.2;
'Необхідно :
'протабулювати задану функцію на заданому інтервалі;
Dim x, y, xp, xk, h As Single
Dim k As Integer
xp = CSng(TextBox1.Text)
xk = CSng(TextBox2.Text)
h = CSng(TextBox3.Text)
x = xp
Do While x <= xk + h / 2
y = Sin(3 * x)
TextBox5.Text = TextBox5.Text + "x=" + _
Format(x, "0000.00") + " y=" + Format(y, "0000.00") + vbCr
x = x + h
Loop
End Sub
Private Sub CommandButton2_Click()
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""
End Sub
Private Sub CommandButton3_Click()
End
End Sub
Формулювання задачі. Використовуючи оператор Do … Loop While, скласти підпрограму табулювання функції , якщо аргумент функції xнабуває значень з інтервалу
, змінюючись кожен раз на величину кроку
Нижче наведено програмний код розв’язування даної задачі.
Private Sub DoLoopWhile()
Dim x, y, xp, xk, h As Single
Dim k As Integer
xp = 1
xk = 3
h = 0.2
x = xp
Do
y = Sin(3 * x)
MsgBox "x=" & Format(x, "00.00") & " y=" & _
Format(y, "000.000")
x = x + h
Loop While x <= xk + h / 2
End Sub
Формулювання задачі. Використовуючи оператор Do Until … Loop, скласти підпрограму табулювання функції , якщо аргумент функції xнабуває значень з інтервалу
, змінюючись кожен раз на величину кроку
Нижче наведено програмний код розв’язування даної задачі.
Private Sub DoUntilLoop()
Dim x, y, xp, xk, h As Single
Dim k As Integer
xp = 1
xk = 3
h = 0.2
x = xp
Do Until x > xk + h / 2
y = Sin(3 * x)
MsgBox "x=" & Format(x, "00.00") & " y=" & _
Format(y, "000.000")
x = x + h
Loop
End Sub
Формулювання задачі. Використовуючи оператор Do Until … Loop, скласти підпрограму табулювання функції , якщо аргумент функції xнабуває значень з інтервалу
, змінюючись кожен раз на величину кроку
Нижче наведено програмний код розв’язування даної задачі.
Private Sub DoLoopUntil()
Dim x, y, xp, xk, h As Single
Dim k As Integer
xp = 1
xk = 3
h = 0.2
x = xp
Do
y = Sin(3 * x)
MsgBox "x=" & Format(x, "00.00") & " y=" & _
Format(y, "000.000")
x = x + h
Loop Until x > xk + h / 2
End Sub
11.12. Оператор циклу For … Each
Оператор циклу For Eachмає такий формат:
For Each<елемент> In<набір>
<блок операторів 1>
[Exit For]
<блок операторів 2>
Next[<елемент > ]
де <елемент> - змінна типу Variant, що дозволяє розмістити в ній об’єкт VBA;
<набір> - ім’я колекції об’єктів, одного об’єкту VBAабо масиву, за винятком масивів, елементи яких мають тип, сконструйований розробником проекту.
У процесі виконання оператора For Eachоб’єкт вибирається із конкретного набору і розміщується у змінній типу Variant.Це дозволяє використовувати цю змінну в операторах циклу з метою виконання певних дій з об’єктом. Оператор For Eachзручно використовуватитоді, коли масив або діапазон комірок електронної таблиці передаються функції користувача. У цьому випадку змінна <елемент> може бути того ж типу, що і елементи масиву. На кожному кроці змінна <елемент> містить наступний елемент масиву.
Контрольні питання
1. Яке ви знаєте функції перетворення типів даних?
2. Дайте характеристику оператора присвоєння. Наведіть приклади.
3. Складіть таблиці істинності результатів для логічного заперечення, додавання та множення.
4. Наведіть чотири формати для умовного оператора If .
5. Дайте характеристику умовного оператора Select Case.
6. Дайте характеристику оператора циклу For … Next.
7. Наведіть чотири формати для оператора циклу Do … Loop.
8. Дайте характеристику оператора For Each.