АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Изучение организации итерационных алгоритмов на примерах

Читайте также:
  1. I. Ознакомление со структурным подразделением организации
  2. II. Принципы организации и деятельности прокуратуры Российской Федерации
  3. II. Управление персоналом структурного подразделения организации
  4. III. Изучение геологического строения месторождений и вещественного состава руд
  5. IV. Изучение технологических свойств гипса (ангидрита)
  6. IV.Оценка эффективности деятельности структурного подразделения организации
  7. SWOT-анализ организации
  8. V1: Основные аспекты организации коммерческой деятельности и этапы ее развития
  9. XVI. Обязанности должностных лиц территориального органа МВД России по организации службы участковых уполномоченных полиции
  10. А4. Знание о файловой системе организации данных
  11. Адаптация персонала в организации
  12. Актуальные проблемы организации учебно-воспитательного процесса в современной школе

Лабораторная работа № 6

Итерационные алгоритмы

Цель:

изучить процесс построения алгоритмов с неизвестным числом повторений. Научиться составлять программы, использующие рекуррентные формулы. Изучить оператор безусловного перехода Goto.

Результат обучения: после успешного завершения занятия пользователь должен:

o уметь составлять схемы итерационных алгоритмов;

o знать, что такое рекуррентная формула и как она может быть использована в алгоритмах;

o уметь программировать итерационные алгоритмы на языке VBA;

 

Изучение организации итерационных алгоритмов на примерах

 

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

Пример 1.

Условие задачи:

Рассчитать экспоненту с точностью e путем разложения ее в ряд: + …

Будем вычислять частичную сумму ряда правой части до тех пор, пока очередное слагаемое не станет меньше погрешности e.

Для вычисления каждого слагаемого ряда требуется возведение в степень и вычисление факториала (это дополнительный цикл). Часто в задачах для вычисления очередного слагаемого удобно рекуррентно использовать предыдущее слагаемое, а не организовывать дополнительный (внутренний) цикл. В данной задаче каждое очередное слагаемое можно рекуррентно вычислить через предыдущее: , что требует всего двух операций. Такая форма записи, в которой каждый следующий элемент расчета может быть получен из предыдущего, называется рекуррентной формой.

При построении таких алгоритмов полезно подстраховаться от зацикливания («вечного цикла»). Зацикливания могут возникнуть из–за ошибок в программе или вследствие накопления погрешностей. Чтобы избежать зацикливания, достаточно поставить лимит числа повторений цикла.

При построении алгоритма примем следующие обозначения:

S — искомая сумма, U — текущее слагаемое получаемое рекуррентно, n — определяет число шагов и используется для расчета факториала в знаменателе слагаемого.

Схема алгоритма:

 

Форма Программа
Private Sub CommandButton1_Click() Dim x As Single, Exp As Single, S As Single, U As Single Dim n As Integer Const Limit = 100 'Пред. знач. шагов задано константой x = Val(TextBox1.Text) Eps = Val(TextBox2.Text) S = 1 'Частичная сумма U = 1 'Первое слагаемое n = 1 'Число шагов Do U = x / n * U: S = S + U: n = n + 1 Loop Until (Abs(U) <= Eps) Or (n >= Limit) If n >= Limit Then Label3.Caption = Str(n) + " шагов не хватило" Else Label3.Caption = Str(S) + " " + "n=" + Str(n) End If End Sub  

 

Если для организации цикла в этой задаче использовать оператор цикла For, то в этом случае необходимо организовать принудительный выход из цикла. Предельное значение параметра цикла будет определяться лимитом числа повторений тела цикла. Как только выполнится условие |U| £ e, следует выход из цикла.

 

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

Goto <Метка>;

После выполнения такого оператора, управление программой передается оператору, помеченному меткой. Меткой может быть идентификатор или целое число без знака.

Программа решения задачи:

Форма Программа
Private Sub CommandButton1_Click() Dim x As Single, Exp As Single, S As Single, U As Single Dim n As Integer Const Limit = 100 x = Val(TextBox1.Text) Eps = Val(TextBox2.Text) S = 1: U = 1 For n = 1 To Limit U = x / n * U: S = S + U If (Abs(U) <= Eps) Then GoTo M1 'Выход из цикла Next n 'Цикл доработал до конца Label3.Caption = Str(n) + " Шагов не хватило": GoTo M2 M1: Label3.Caption="Расчетное знач=" + Str(S)+ "n="+ Str(n) M2: End Sub

В программе используются два оператора перехода. Первый оператор перехода Goto M1 организует принудительный выход из цикла. Следующим выполняемым оператором будет оператор, помеченный меткой М1. После идентификатора метки ставится двоеточие. Второй оператор перехода Goto M2 организует обход вывода, ненужного в данном случае.

Считается, что использование оператора Goto затрудняет чтение программы.

 


Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.)