Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ГОСТу.doc
Скачиваний:
19
Добавлен:
14.11.2019
Размер:
10.65 Mб
Скачать

6.5. Итерационные циклы

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

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

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

Пример 4. Вычислить значение квадратного корня , по итерационной формуле Ньютона , где i:={0,1,2,…}, а y(i+1) и y(i) – два последовательных приближения к искомому корню. Начальные приближения корня вводится с клавиатуры.

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

Program Example_6_4; {Задача решена с предусловием}

Uses Crt; {Подключаем модуль}

Var

x,y,h,y0,y1,y2:Real; {Описываем переменные}

Begin {Начало программы}

ClrScr; {Очищаем экран}

Write ('Введите число, из которого необходимо извлечь корень x=');

ReadLn (x); {Вводим с клавиатуры значение}

Write ('Введите начальное приближение y=');

ReadLn (y0); {Вводим с клавиатуры значение}

Write ('Введите точность значения');

ReadLn (h); {Вводим с клавиатуры значение}

y:=y0; {Задаем начальное приближение}

While Abs(y1-y)>=h Do {Начало итерационного цикла}

Begin

y2:=y+1/2*(x/y-y); {Вычисление очередного приближения}

y1:=y; y:=y2; {Переназначения}

End; {Конец итерационного цикла}

WriteLn ('значение корня равно',y); {Вывод на экран значения корня}

End. {Конец программы}

Program Example_6_5; {Задача решена с постусловием}

Uses Crt; {Подключаем модуль}

Var

x,y,h,y0,y1,y2:Real; {Описываем переменные}

Begin {Начало программы}

ClrScr; {Очищаем экран}

Write ('Введите число, из которого необходимо извлечь корень x=');

ReadLn (x); {Вводим с клавиатуры значение}

Write ('Введите начальное приближение y=');

ReadLn (y0); {Вводим с клавиатуры значение}

Write ('Введите точность значения');

ReadLn (h); {Вводим с клавиатуры значение}

y:=y0; {Задаем начальное приближение}

Repeat {Начало итерационного цикла}

y2:=y+1/2*(x/y-y); {Вычисление очередного приближения}

y1:=y; y:=y2; {Переназначения}

Until Abs(y1-y)<=h; {Конец итерационного цикла}

WriteLn ('значение корня равно',y); {Вывод на экран значения корня}

End. {Конец программы}

6.6. Контрольные вопросы

  1. Как называются программы, в основе которых лежит структура повторения?

  2. Сколько операторов цикла вам известно?

  3. Каков тип выражения в операторе цикла с предусловием?

  4. Верно ли, что в теле цикла с предусловием должен находиться один оператор?

  5. Когда проверяется истинность выражения в цикле While?

  6. Верно ли, что истинность выражения в цикле с предусловием является условием продолжения цикла?

  7. Сколько раз выполнится оператор в теле цикла While, если с самого начала значение выражения равно False?

  8. Сколько операторов можно записать между ключевыми словами Repeat и Until?

  9. Когда проверяется истинность выражения в операторе цикла Repeat?

  10. Какой тип имеет выражение в операторе цикла с постусловием?

  11. Почему в цикле Repeat тело цикла всегда будет выполнен хотя бы один раз?

  12. Верно ли, что истинность выражения в цикле Repeat является условием окончания цикла?

  13. С помощью, каких служебных слов записывается цикл с параметром?

  14. Верно ли, что цикл с параметром применяется в тех случаях, когда заранее известно число повторений?

  15. Пусть цикл записан в виде: For V:=E1 To Е2 Do S;

    1. Как называется E1?

    2. Как называется Е2?

    3. Как называется V?

  16. Какой тип переменной должен иметь параметр цикла в цикле For?

  17. Какой тип должны иметь начальное и конечное значения в цикле For?

  18. Чему равно значение параметра цикла For после завершения цикла?

  19. Могут ли быть разветвления внутри итерационного цикла?

  20. Может ли управляющая переменная итерационного цикла использоваться в записи оператора For.

  21. Какие утверждения являются верными (проиллюстрируйте ответ соответствующими примерами):

  1. любой цикл For можно записать при помощи цикла While;

  2. любой цикл While можно записать при помощи цикла For;

  3. не любой цикл For можно записать при помощи цикла While;

  4. не любой цикл While можно записать при помощи цикла For.

22. Могут ли быть разветвления внутри цикла с постусловием?

23. Могут ли быть разветвления внутри цикла с параметрами?