Обчислювальних процесів
1) Оператор If ... Then
Для зміни природного ходу виконання програми використовуються умовні оператори із застосуванням як однорядкового синтаксису
If умова Then оператор
так і блокового синтаксису
If умова Then
Блок операторів
End If
Тут і далі умова - логічний вираз. Якщо значення умови true, то виконується Блок операторів, у протилежному випадку управління передається операторові, який знаходиться за End if.
Приклад 1. Дані три числа: a, b, c. Від’ємні числа замінити їхніми квадратами, позитивні залишити без зміни.
Sub Разв1()
Dim a As Single, b As Single, c As Single
a = Val (InputBox("Введіть значення а"))
b = Val (InputBox("Введіть значення b"))
c = Val (InputBox("Введіть значення c"))
If a < 0 then a=a^2
If b < 0 then b=b^2
If c < 0 then c=c^2
MsgBox “a=” & a & “ b=” & b & “ c=” & c
End Sub
2) Оператор If...Then...Else.
Синтаксис оператора:
If умова Then
Блок операторів для значення true
Else
Блок операторів для значення false
End If
Приклад 2. Знайти розмір комісійних залежно від суми продажів за наступними правилами: якщо сума продажів (s) більше 15000, то комісійні (c) установлюються на рівні 8 відсотків. У протилежному випадку - 5 відсотків
Sub Sales1()
Dim s As Single , c As Single
s = Val(InputBox("Введіть суму продажів"))
If s > 15000 Then c = 0.08*s Else c = 0.05*s
MsgBox "Комісійні=" & c
End Sub
Тепер приведемо програму для цього ж прикладу з використанням багаторядкового синтаксису оператора if.
Sub Sales2()
Dim s As Single, c As Single
s = Val(InputBox("Введіть суму продажів"))
If s > 15000 Then
c = 0.08*s
Else
c = 0.05*s
End If
MsgBox "Комісійні=" & c
End Sub
4) Оператор безумовного переходу GoTo
Оператор GoTo дозволяє виконати безумовний перехід до заданого рядка. Його синтаксис:
GoTo Мітка
Мітка (ціле число або ім'я змінної) з двома крапками, яка ставиться перед рядком, до якого здійснюється перехід. Кількість міток не обмежена, але кожна повинна бути унікальної. Приведемо наступний фрагмент програми (тут міткою служить NN):
MsgBox "Даний оператор виконується"
GoTo NN
Msgbox "Даний оператор пропускається"
NN:
Msgbox "Тепер можна продовжувати"
2.12. Оператори циклу. Програмування циклічних
обчислювальних процесів
1) Оператор Do ...Loop
Цей оператор має чотири варіанти синтаксису:
а) Do While умова
Блок операторів
Loop
Якщо умова має значення True, виконуються Блок операторів до Loop. Потім управління повертається до Do While і знову перевіряється умова. Якщо умова, як і раніше, має значення True, процес повторюється. Якщо умова має значення False, виконання відновляється з операторів, що знаходяться за Loop. Цикли Do While. . . Loop можуть мати будь-яку глибину вкладеності.
б) Do Until умова
Блок операторів
Loop
Перед циклом перевіряється умова. Блок операторів виконується тільки в тому випадку, якщо значення умови дорівнює False.
в) Do
Блок операторів
Loop While умова
Параметр умова перевіряється після однократного проходження циклу. Блок операторів виконується тільки в тому випадку, якщо умова - True. Така форма оператора Do…Loop використовується в тих випадках, коли виконання блоку команд необхідне як мінімум один раз.
г) Do
Блок операторів
Loop Until умова
Параметр умова перевіряється після однократного проходження циклу. Блок операторів виконується тільки в тому випадку, якщо умова - False. Така форма оператора Do…Loop використовується в тих випадках, коли виконання блоку команд необхідне як мінімум один раз.
Приклад 1. Скласти програму табулювання функції
y= , де xÎ[x0, xk] і змінюється із кроком h.
Sub Р1()
Dim x0 As Single, xk As Single, h As Single
Dim a As Single, y As Single, x As Single
x0 = Val(InputBox("Введіть х0"))
xk = Val(InputBox("Введіть хk"))
h = Val(InputBox("Введіть h"))
a = Val(InputBox("Введіть a"))
x = x0
Do While x <= xk
y = Sqr(x ^ 2 + 25) / (x ^ 2 + a ^ 2)
Debug.Print "y=" & y & " x=" & x
x = x + h
Loop
End Sub
Приклад 2. Записати програму для виведення у вікно налагодження натуральних чисел від n до 1, їхні квадрати і куби.
Позначення: n - число, n2, n3 - відповідно квадрат і куб числа.
Sub Р2()
Dim n As Integer, n2 As Integer, n3 As Integer
n = Val(InputBox("Введіть n"))
Debug.Print "Число" & " Квадрат числа" & " Куб числа"
Do
n2 = n ^ 2: n3 = n2 * n
Debug.Print n & " " & n2 & " " & n3
n = n - 1
Loop Until n = 0
End sub
2) Оператор While...Wend
Цей оператор циклу є різновидом оператора Do…Loop...
Синтаксис оператора:
While умова
Блок операторів
Wend
Якщо умова має значення True, виконуються Блок операторів до Wend. Якщо умова має значення False, виконання відновляється з операторів, що випливають за Wend. Цикли While¼Wend можуть мати будь-яку глибину вкладеності.
3) Оператор For... Next
Цей оператор циклу можна зустріти в більшості мов програмування. Він використовується у випадках, коли відомо, скільки разів необхідно повторити виконання серії операторів. Синтаксис оператора:
For лічильник = початок To кінець [step крок]
Блок операторів
Next [лічильник]
Лічильник – числова змінна, котра автоматично змінюється після кожного повтору. Початкове значення лічильника дорівнює параметру початок, а кінцеве - кінець. Крок - крок лічильника циклів. Якщо цей параметр опущений, то значення кроку приймається рівним 1. Щоб лічильник змінювався по убуванню, використовується негативне значення кроку.
Приклад 3. Дан масив Х=(12,24,67,38,56,69) щомісячного випуску продукції в 1-му півріччі. Визначити випуски продукції за 1- й і 2 - й квартали.
Sub Р3()
Dim x As Variant
Dim kv1 As Single, kv2 As Single, i As Integer
x=Array(12,24,67,38,56,69)
kv1 = 0: kv2= 0
For i = 1 To 3
kv1=kv1+x(i)
kv2=kv2+x(i+3)
Next i
MsgBox " випуск продукції за 1-ий квартал =" & kv1
MsgBox " випуск продукції за 2-ий квартал =" & kv2
End Sub
4) Оператор For Each...Next
Цей оператор дозволяє робити обробку набору об'єктів (наприклад, елементів масиву даних). У цьому випадку немає необхідності використовувати лічильник циклу, тому що циклічний перегляд і обробка виробляється для певних елементів набору.
Синтаксис оператора:
For Each елемент In група
Блок операторів
Next [елемент]
Параметр елемент - змінна типу Variant (ця обов'язкова умова), що представляє елемент сімейства або масиву. Група - ім'я масиву або сімейства. Блок операторів виконується тільки один раз для кожного члена групи.
Найважливіше в операторі For Each…Next те, що не потрібно заздалегідь знати, скільки елементів утримується в масиві або сімействі. Таким чином, не потрібно підраховувати число елементів або перевіряти досягнення кінця групи. Це дозволяє виключити одну з найбільш загальних помилок при програмуванні: неправильну індексацію елементів масивів.
Приклад 4. Дано масив А=(ai), i=1,2,...,10. Знайти добуток позитивних елементів.
Позначення: p - добуток позитивних елементів.
Sub Р4()
Dim a(1 to 10) As Double
Дата добавления: 2015-03-03; просмотров: 880;