- •Лабораторная работа №4 программирование задач с циклическим алгоритмом
- •1. Порядок выполнения работы
- •2. Логические конструкции
- •2.1. Организация циклов «с предусловием»
- •2.2. Организация циклов «с постусловием»
- •2.3. Организация цикла с заранее заданным количеством раз повторений
- •3. Использование свойства cells
- •4. Пример решения задач с циклическим алгоритмом
- •4.1. Пример использования оператора Do While…Loop
- •4.2. Пример использования оператора Do…Loop Until
- •4.3. Пример использования оператора For…Next
- •5. Содержание отчета
- •6. Контрольные вопросы
4. Пример решения задач с циклическим алгоритмом
4.1. Пример использования оператора Do While…Loop
Вычислить значение функции , приa=2.1, b=-5.45 и значении аргумента х, который изменяется от хн до хк с шагом dx.
Блок-схема алгоритма решения задачи приведена на рис. 14.
Рис. 14. Блок-схема алгоритма решения поставленной задачи
Листинг программы, которая соответствует данной блок-схеме алгоритма, имеет вид:
Public Sub Cikl()
Dim i As Byte 'переменная для организации вывода
Dim x, Y, xn, xk, dx As Single
Const a = 2.1
Const b = -5.45
xn = Val(InputBox("Введите начальное значение x", "Ввод данных"))
xk = Val(InputBox("Введите конечное значение x ", " Ввод данных "))
dx = Val(InputBox("Введите шаг изменения x ", " Ввод данных "))
Range("B1").Value = "Начальное значение x"
Range("B2").Value = xn
Range("C1").Value = "Конечное значение x"
Range("C2").Value = xk
Range("D1").Value = "Шаг изменения х"
Range("D2").Value = dx
Range("B3").Value = "Шаг вычисления"
Range("C3").Value = "Значение х"
Range("D3").Value = "Значение функции"
x = xn
i = 1
Do While x <= xk
Y = a * Sin(x) + b
Range("B4").Cells(i, 1).Value = i
Range("C4").Cells(i, 1).Value = x
Range("D4").Cells(i, 1).Value = Y
i = i + 1
x = x + dx
Loop
End Sub.
Результаты выполнения программы представлены на рис. 15.
|
A |
B |
C |
D |
1 |
|
Начальное значение x |
Конечное значении x |
Шаг изменения х |
2 |
|
0 |
4 |
0,5 |
3 |
|
Шаг вычисления |
Значение x |
Значение функции |
4 |
|
1 |
0 |
-5,45 |
5 |
|
2 |
0,5 |
-4,44 |
6 |
|
3 |
1 |
-3,68 |
7 |
|
4 |
1,5 |
-3,35 |
8 |
|
5 |
2 |
-3,51 |
9 |
|
6 |
2,5 |
-4,19 |
10 |
|
7 |
3 |
-5,15 |
11 |
|
8 |
3,5 |
-6,18 |
12 |
|
9 |
4 |
-7,03 |
13 |
|
|
|
|
Рис. 15. Результаты выполнения программы
4.2. Пример использования оператора Do…Loop Until
Вычислить по итерационной формуле ,. Точность вычислений .Исходные данные: a, .
Блок-схема алгоритма решения задачи приведена на рис. 16.
Рис. 16. Блок-схема алгоритма решения поставленной задачи
Листинг программы, которая соответствует данной блок-схеме алгоритма, имеет вид:
Public Sub Cikl()
Dim e As Single 'точность вычисления
Dim Yi, Yi_1 As Single 'значение корня на i и i+1 шаге
Dim i As Byte 'шаг итерации
Dim a As Single 'число под корнем
a = Val(InputBox("Введите число под корнем ", "Ввод данных"))
e = Val(InputBox("Введите точность вычисления", "Ввод данных"))
Yi = 1
Do
Yi_1 = (Yi + a / Yi) / 2
Yi = Yi_1
i = i + 1
Loop Until Abs(Yi_1 ^ 2 - a) <= e
Range("B1").Value = "Точность вычисления равна " + Str(e)
Range("B2").Value = "Корень числа " + Str(a) + " равен " + Str(Yi_1)
Range("B3").Value = "Количество итераций равно " + Str(i)
End Sub.
Результаты выполнения программы представлены на рис. 17.
|
A |
B |
C |
1 |
|
Точность вычисления равна .0001 |
|
2 |
|
Корень числа 67 равен 8.185355 |
|
3 |
|
Количество итераций равно 6 |
|
4 |
|
|
|
Рис. 17. Результаты выполнения программы