Линейные алгоритмы

Лекция № 24

 

 

Линейные алгоритмы используют для решения относительно простых задач, не требующих разветвляющихся или циклических вычислений. Такими задачами являются расчеты математических формул, ввод и вывод информации, некоторые действия с файлами. Линейные алгоритмы объединяет то, что вычисления в них проходят последовательно, шаг за шагом, oт начала к концу (сверху вниз по блок-схеме).

Простейшая программа решения математического примера имеет три основных действия: задание типа переменных, ввод данных, расчет выражения, вывод результата.

Пример 1. Вычислить значение функции при х = 45°.

.

Sub primer_1()

Dim x As Integer

Dim y As Single

Dim pi As Double, x_rad As Double

'определяем численное значение х

x = 45

'определяем численное значение числа Пи

pi = 4 * Atn(1)

' переводим х в радианы, так как в тригонометрических функциях

' аргумент должен быть в радианах

x_rad = x * pi / 180

' производим расчет заданного математического выражения

y = (2 * Cos(x_rad - x_rad / 6) + x) / (1 / 2 + Sin(x_rad) ^ 2 + Sqr(x))

'выводим ответ в диалоговое окно

MsgBox "y=" & y

End Sub

 

 

Пример 2.Вычислить значение формулы при различных значениях переменной х. Значения переменной х вводить в градусах.

 

 

Sub primer_2()

'определяем тип переменных

Dim x As Single, x_rad As Single, pi As Single

Dim y As Double

'вводим значение х по запросу программы

x = InputBox("Введите значение х в градусах", "Запрос задачи")

'вычисляем значение числа Пи

pi = 4 * Atn(1)

' переводим х в радианы, так как в тригонометрических функциях

' аргумент должен быть в радианах

x_rad = x * pi / 180

'производим расчет заданного математического выражения

y = (Cos(x_rad) + (x / 2 + 2) ^ (1 / 3)) / (3 - Tan(x_rad)) ^ 2 + Abs(2 - 5 * x) ^ x

'выводим ответ в виде диалогового окна

MsgBox "Значение функции при х=" & x & " градусов равно" & y, ,_ "Решение задачи"

End Sub

 

Результат работы программы:

 

 

 

Пример 3.Составить блок-схему и про­грамму расчета площади треугольника по формуле Герона, а, b, с – длины сторон.

Решение. Формула Герона имеет вид:

 

,

 

где – полупериметр.

Sub primer_3()

'определяем тип переменных

Dim a As Single, b As Single, c As Single, p As Single, s As Single

'вводим значение длин сторон треугольника по запросу программы

a = InputBox("Введите длину a сторны треугольника", "Запрос 1 задачи")

b = InputBox("Введите длину b сторны треугольника", "Запрос 2 задачи")

c = InputBox("Введите длину c сторны треугольника", "Запрос 3 задачи")

'вычисляем значение полупериметра

p = (a + b + c) / 2

'вычисляем площадь треугольника по формуле Герона

p = Sqr(p * (p - a) * (p - b) * (p - c))

'выводим ответ в виде диалогового окна

MsgBox "При длинах сторон " & a & ", " & b & " и " & c & " площадь треугольника равна " & p, , "Решение задачи"

End Sub

 

Результат работы программы:

 

 

 

 

 

Пример 4. Составьте программу решения системы линейных уравнений

 

 

по правилу Крамера

 

 

Sub primer_4()

'определяем тип переменных

Dim a1 As Single, a2 As Single, b1 As Single, b2 As Single

Dim c1 As Single, c2 As Single, x As Single, y As Single

'вводим значения коэффициентов уравнения из рабочего листа Excel

a1 = Cells(2, 2)

b1 = Cells(3, 2)

c1 = Cells(4, 2)

a2 = Cells(5, 2)

b2 = Cells(6, 2)

c2 = Cells(7, 2)

'вычисляем значения корней уравнения по правилу Крамера

x = (c1 * b2 - c2 * b1) / (a1 * b2 - a2 * b1)

y = (a1 * c2 - a2 * c1) / (a1 * b2 - a2 * b1)

'выводим вычисленные значения корней в рабочий лист Excel

Cells(9, 2) = x

Cells(10, 2) = y

End Sub

 

Ответ:

 

Пример 5. Составьте программу вычисления корней квадратного уравнения

 

 

в действительной области.

 

Sub primer_5()

'определяем тип переменных

Dim a As Single, b As Single, c As Single, discriminant As Single

Dim x1 As Single, x2 As Single

'вводим значения коэффициентов уравнения по запросу программы

a = InputBox("Введите значение коэффициента a=", "Запрос 1 задачи")

b = InputBox("Введите значение коэффициента b=", "Запрос 2 задачи")

c = InputBox("Введите значение коэффициента c=", "Запрос 3 задачи")

'вычисляем дискриминант

discriminant = b ^ 2 - 4 * a * c

'вычисляем значения корней квадратного уравнения

x1 = (-b - Sqr(discriminant)) / (2 * a)

x2 = (-b + Sqr(discriminant)) / (2 * a)

'выводим значения корней квадратного уравнения в диалоговое окно

MsgBox "Корень x1=" & x1 & ", корень x2=" & x2

End Sub

 

Результат работы программы:

 

 

 

 

 

Пример 6. Вычислить общее сопротивление трех резисторов, соединенных последовательно и параллельно.

 

Sub primer_6()

'определяем тип переменных

Dim r1 As Single, r2 As Single, r3 As Single

Dim r_parall As Single, r_posled As Single

'вводим значения коэффициентов уравнения по запросу программы

r1 = InputBox("Введите значение первого сопротивления R1=", "Запрос 1 задачи")

r2 = InputBox("Введите значение второго сопротивления R2=", "Запрос 2 задачи")

r3 = InputBox("Введите значение третьего сопротивления R3=", "Запрос 3 задачи")

'вычисляем сопротивление резисторов, соединенных последовательно

r_posled = r1 + r2 + r3

'вычисляем сопротивление резисторов, соединенных параллельно

r_parall = 1 / (1 / r1 + 1 / r2 + 1 / r3)

'выводим значения сопротивлений

MsgBox "Параллельное соединение =" & r_parall & ", последовательное соединение" & r_posled

End Sub

 

Пример 7. Вычислить путь, пройденный телом при равноускоренном движении, по формуле

.

 

Sub primer_7()

'определяем тип переменных

Dim v0 As Integer, a As Integer, t As Integer

Dim s As Single

'определяем значения исходных данных

v0 = 10: a = 5

t = InputBox("Введите значение времени t=", "Запрос задачи")

'вычисляем путь, пройденный телом

s = v0 * t + a * t ^ 2 / 2

'выводим на экран рассчитанный путь

MsgBox "На " & t & " секунде тело пройдет " & s & " метров"

End Sub

 

Результат работы программы: