
Программирование на Visual Basic for Applications
Лекция 4
Линейный алгоритм
Линейным называется такой алгоритм, в котором действия выполняются в естественном порядке, т. е. в том порядке как записаны, и только один раз.
Пример 1. Составить
программу решения квадратного уравнения
вида ax2
+ bx
+ c
= 0. Исходными данными для нахождения
корней являются коэффициенты a,
b
и c.
Для вычисления корней вначале можно
вычислить дискриминант по формуле
d=b2-4·a·c.
d
в этом случае – промежуточный результат.
Наконец, можно вычислить корни по формуле
.
Option Explicit
Sub
кв_ур()
Dim a, b, c, d, x1, x2
a = InputBox("Введите
коэффициент а",
"Решение квадратного уравнения")
b = InputBox("Введите
коэффициент b",
"Решение квадратного уравнения")
c = InputBox("Введите
коэффициент c",
"Решение квадратного уравнения")
d = b ^ 2 - 4 * a * c 'дискриминант
x1 = (-b + Sqr(d)) / (2 * a)
x2 = (-b - Sqr(d)) / (2 * a)
MsgBox ("x1=" & x1 & Chr(13) & "x2="
& x2)
End Sub
Пример 2. Ввести целое положительное число. Получить сумму цифр этого числа.
Текст макроса:
Sub N8()
'Линейный алгоритм
'Получение суммы цифр двузначного положительного числа
Dim N As String, N1 As Byte, N2 As Byte
N = InputBox("Введите целое положительное двузначное число")
'N1 = Val(N) \ 10 + Val(N) Mod 10
N1 = N \ 10 + N Mod 10
N2 = Val(Mid(N, 1, 1)) + Val(Mid(N, 2, 1))
MsgBox ("N1=" & N1 & Chr(13) & "N2=" & N2)
End Sub
Пример 3
Этапы решения задачи.
-
Классификация данных:
-
Исходные данные – x, b, d, с
-
Промежуточные результаты – a
-
Окончательные результаты - Y
-
Блок-схема
-
Текст макроса
Option Explicit
Sub пример_3()
Dim c As Integer, x As Single, b As Single, d As Single
Dim a As Single, y As Single
c = 2
x = Val(InputBox("Введите x="))
b = Val(InputBox("Введите b="))
d = Val(InputBox("Введите d="))
a = Sqr(x + 9)
y = (Log(100) / Log(10) + Sin(x)) / (a * b - c * d)
MsgBox ("a=" & a & Chr(13) & "y=" & y)
End Sub
В этом варианте программы использованы ввод-вывод через диалоговые окна.
При чтении исходных данных из ячеек листа Excel и записи полученных результатов также в ячейки рабочей таблицы Excel макрос будет выглядеть следующим образом:
Sub пример_3b()
Dim c As Integer, x As Single, b As Single, d As Single
Dim a As Single, y As Single
c = 2
'x = Val(InputBox("Введите x="))
'b = Val(InputBox("Введите b="))
'd = Val(InputBox("Введите d="))
x = Cells(3, 1)
b = Cells(3, 2)
d = Cells(3, 3)
a = Sqr(x + 9)
y = (Log(100) / Log(10) + Sin(x)) / (a * b - c * d)
' MsgBox ("a=" & a & Chr(13) & "y=" & y)
Cells(3, 5) = a
Cells(3, 6) = y
End Sub
Полученные результаты можно проверить, используя возможность Excel выполнять расчеты по формулам. Для этого необходимо в ячейки рабочего листа записать исходные данные, привести расчетные формулы, в макросе предусмотреть чтение данных с этого листа и запись полученных результатов также в ячейки листа Excel. Полученные двумя разными способами результаты сравнить. Их совпадение – доказательство правильности решения задачи.
Вид с формулами: