- •Тема 4.6
- •Примера 4.6.1-2
- •Примера 4.6.1-3
- •Примера 4.6.2-1
- •Примера 4.6.2-1
- •Примера 4.6.2-1
- •Примера 4.6.2-2
- •Примера 4.6.2-2
- •Примера 4.6.2-3
- •Примера 4.6.2-3
- •Примера 4.6.2-4
- •Примера 4.6.2-4
- •Примера 4.6.2-4
- •Примера 4.6.2-5
- •Примера 4.6.2-5
- •Примера 4.6.2-6
- •Примера 4.6.2-6
- •4.6.3. Тестовые задания
- •4.6.4. Лабораторная работа по теме «Программирование алгоритмов итеративных циклических структур»
- •Вопросы, подлежащие изучению
- •Общее задание на разработку проекта
- •Варианты индивидуальных заданий
- •Содержание отчёта
- •Графический интерфейс пользователя:
- •Установите и сведите в табл. 4.6.4-2 свойства объектов.
- •Схемы алгоритмов процедур проекта:
- •Программный код проекта: разработанный программный код проекта приведен на рис. 4.6.4-3.
- •Результаты выполнения проекта приведены на рис. 4.6.4-4.
- •Схемы алгоритмов процедур проектов
- •Вычисление членов заданной последовательности, значения которых по модулю больше заданного числа
- •Программный код проекта: Разработанный программный код проекта приведен на рис. 4.6.4-7.
- •Вычисление членов заданной последовательности, значения которых по модулю больше заданного числа
- •Контрольные вопросы
Примера 4.6.2-2
Процедура-Function Pr625()может быть вызвана из любой другой процедуры или из модуля формы, например, как показано на рис. 4.6.2-4.6.
Dim xx As Double xx = Pr625() vivodDbl1(xx, TextBox1) |
Рис. 4.6.2-6. Пример обращения к процедуре Pr625()
Примера 4.6.2-2
Пример 4.6.2-3. Задана возрастающая последовательность
Требуется написать программу, которая вычисляет все члены последовательности, до тех пор, пока значение очередного члена не превысит некоторое заданное число d, например, (3 <d <100).
В нашей задаче для вычисления любого члена последовательности можно воспользоваться формулой, , гдеn=0, 1, 2,…- номер члена.
В задачах, использующих итеративные алгоритмические структуры, рекомендуется предусмотреть так называемую «страховку от зацикливания», так как иногда условие продолжения цикла может оставаться истинным бесконечно. В данном примере цикл с постусловием будет выполняться не более 100 раз, даже если очередной член последовательности будет оставаться меньше d (рис. 4.6.2-7). Так как вывод в TextBox членов последовательности должен происходить в процессе вычисления (внутри цикла), то для решения задачи напишем процедуру-Sub.
Sub Pr627(ByVal x As Double, _ ByVal d As Double) Dim n As Integer = 0 Dim a As Double Do а = x^n / 3^n vivodID11(n, "n=",a, "a=", TextBox3) n=n+1 Loop While a <= d And n < 100 End Sub
|
Рис. 4.6.2-7. Схема алгоритма и программный код процедуры Pr627(),
которая вычисляет члены последовательности до выполнения определенных условий
Примера 4.6.2-3
Процедура-Sub Pr627( ) может быть вызвана из любой другой процедуры или из модуля формы, например, как показано на рис. 4.6.2-8.
Dim xx, dd As Double xx = vvodDbl2("Введите значение xx= ", TextBox1) dd = vvodDbl2("Введите значение dd= ", TextBox2) Pr627(xx, dd) |
Рис. 4.6.2-8. Пример обращения к процедуре Pr627()
Примера 4.6.2-3
Пример 4.6.2-4. Написать процедуру-функцию, которая вычисляет сумму членов знакопеременной убывающей последовательности с заданной точностью ε: .
Вычисление с заданной точностью ε означает, что суммирование членов ряда надо продолжать до тех пор, пока очередной вычисленный член ряда не станет меньше по абсолютной величине числа ε.
Отметим, что во многих задачах непосредственный подсчет очередного члена связан с вычислительными трудностями. В этом случае целесообразно использовать рекуррентную формулу, которая позволяет вычислить значение переменной на следующем шаге, используя ее значение на текущем шаге – . Выражение для q можно получить, разделив an+1 член на an член.
Function Pr629(ByVal x As Double,_ ByVal e As Double) As Double Dim a, s As Double Dim n As Integer = 0 a = x – 1 s = 0 Do Until Abs(a) < e Or n > 100 vivodIntLs12(n, ListBox1) vivodDblLs13(a, ListBox2) s = s + a a = -a * (x - 1) / (n + 2) n = n + 1 Loop Return s End Function
|
Рис. 4.6.2-9. Схема алгоритма и программный код процедуры Pr629(),
которая вычисляет сумму членов знакопеременной убывающей последовательности с точностью ε