Отличительной особенностью этой структуры (рис. 1.3) является наличие в ее составе:
- участка, многократно повторяющегося в процессе вычислений и называемого телом цикла; тело представляет собой типовую линейную или ветвящуюся структуру;
- условия L, предназначенного для своевременного выхода из цикла.
Циклические структуры бывают двух разновидностей: с предусловием, т.е. с проверкой условия выхода из цикла перед выполнением его тела (а) и постусловием, предполагающим проверку указанного условия после выполнения тела цикла (б).
Рис 1.3. Разновидности циклических структур:
а) с предусловием; б) с постусловием
Циклические структуры используются в качестве отдельных элементов в процессе разработки алгоритмов циклических вычислительных процессов (циклов). При этом различают:
1) циклы с заранее известным числом повторений тела или с числом повторений, которое может быть вычислено. Эти циклы называются арифметическими (счетными).
2) циклы с числом повторений, которое заранее неизвестно и подсчитано быть не может - итерационные циклы.
|
|
Приступая к организации цикла, необходимо:
- определить, какая переменная будет им управлять или, как говорят, служить его параметром;
- сформулировать закон изменения параметра, т.е. указать, как будет изменяться его величина после каждого повторения тела;
- определить численное значение параметра, при достижении которого необходимо предусмотреть выход из циклической процедуры.
Рассмотрим примеры алгоритмизации циклических вычислительных процессов, упомянутых в п.1.
Пример 1.11
Пусть задана функция y=sin(x2). Необходимо вычислить её значения на отрезке [а,b], если аргумент x меняется на этом отрезке по вполне определённому, заранее заданному, закону. В качестве закона изменения аргумента выберем наиболее простой, но в то же время и чаще всего используемый закон
xi+1 = xi + Dx, i=0,1,2,...,
где Dx -величина, называемая шагом изменения аргумента. Подставляя в предыдущую формулу значения величины i, получим:
x1 = x0 + Dx; x2 = x1 + Dx;...,
т.е. каждое следующее значение аргумента x вычисляется путем суммирования его предыдущего значения с шагом Dx (рис.1.4). Задача, сформулированная таким образом, носит название задачи табулирования функции.
Приступим теперь к разработке алгоритма. В рассматриваемой задаче управляющей переменной (параметром цикла) является аргумент функции, ибо от его текущего значения зависит решение вопроса продолжать ли далее выполнение цикла или закончить вычисления и выйти из него.
Если очередное значение аргумента находится в пределах отрезка [а,b], цикл следует повторить, вычислив при этом соответствующее ему значение функции, в противном случае выйти из цикла.
|
|
Поскольку закон изменения параметра сформулирован в постановке задачи, остается определить то значение параметра, при достижении которого циклический процесс следует закончить. Очевидно, что это значение определяется неравенством xi > b.
Рис. 1.4. Геометрический смысл задачи табулирования функции
Примечание. Если начальным значением аргумента является b и шаг его изменения отрицателен, то условием выхода из цикла будет неравенство xi < a.
Составим алгоритм нашей задачи, основываясь на следующем:
- начальное значение аргумента вычисляемо функции известно из условия задачи x 0 = a, следовательно, есть возможность сразу же вычислить соответствующее ему значение функции y 0.
- очередной шаг - вывод строки таблицы, содержащей значения аргумента и функции;
- далее вычислим очередное значение аргумента, используя при этом закон его изменения на числовой оси xi+1= xi+Dx;
- полученное значение аргумента xi сравниваем с его конечным значением b; если оказывается, что xi > b, то закончим счет задачи, а если нет - перейдем к вычислению очередного значения функции.
Представим алгоритм в виде детализированной и компактной схем.
Детализированная схема алгоритма
Компактная схема алгоритма
| |||
В приведённом алгоритме в линейную структуру вложена циклическая структура с постусловием.