Циклическая структура

Отличительной особенностью этой структуры (рис. 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, то закончим счет задачи, а если нет - перейдем к вычислению очередного значения функции.

Представим алгоритм в виде детализированной и компактной схем.

Детализированная схема алгоритма

 
 


       
 
 
   


Компактная схема алгоритма

       
 
x:= a
 
   


 
 


В приведённом алгоритме в линейную структуру вложена циклическая структура с постусловием.


 
 



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: