- •Тема 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
- •Контрольні питання
11.11. Програмування циклічних обчислювальних процесів з використанням оператора 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 зручно використовувати тоді, коли масив або діапазон комірок електронної таблиці передаються функції користувача. У цьому випадку змінна <елемент> може бути того ж типу, що і елементи масиву. На кожному кроці змінна <елемент> містить наступний елемент масиву.