Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
68
Добавлен:
14.04.2015
Размер:
2.67 Mб
Скачать

Бесконечный цикл

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

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

Общее представление оператора бесконечного цикла:

[имя:]Do

Тело цикла

End do [имя]

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

Изображение бесконечного цикла Do на блок-схеме:

Важное замечание:

Во избежание зацикливания оператор Exitне толькодолженприсутствовать в теле цикла, но обязательнодолжны создаваться условия, по которым он «сработает», иначе цикл будет выполняться, пока вы не закроете программу.

Продолжая тему «перетекания» друг в друга различных видов циклов, реализуем подробную блок-схему цикла по переменной с помощью бесконечного цикла:

Пример 1

X=xn

K=Max(0,Int((xk-xn)/step))+1

Do

If (k==0) Exit ! (1)

Тело цикла ! (2)

x=x+step ! (3)

k=k-1

Enddo

. . . ! (4)

! продолжение программы

Цикл по переменной и цикл Do while– так называемые циклы с предусловием. Условие выхода из них проверяется ДО выполнения тела цикла, и тело цикла может не выполниться ни разу.

При помощи бесконечного цикла Do и оператораExitможно строить циклы с предусловием и с постусловием. Условие выхода из цикла с постусловием проверяется ПОСЛЕ выполнения тела цикла, которое обязательно выполняется хотя бы один раз.

Пример 2

Аналог цикла Do while(цикл с предусловием)

Вывести на экран значения sin xдляxиз интервала [12; 16] с шагом 0.2

X = 12

Do

If (x>16) Exit

Write(*,*)’X=’, X, &

‘ Sin x =’, sin(X)

X = X + 0.2

Enddo

Пример 3

Цикл, который выполняется хотя бы один раз (цикл с постусловием)

Если в предыдущем примере задать начальное значение x=18, то цикл выполнится один раз приX= 18, а затем цикл будет завершен.

X = 18

Do

Write(*,*)’X=’, X, &

‘ Sin x =’, sin(X)

X = X + 0.2

If (X>16) Exit

Enddo

Вложенные циклы

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

Пример. Вычислить сумму. Суммирование прекратить досрочно, если значение суммы превыситS1.

Блок-схема:

S=0

Outer: DO j = 1, 10

Inner: do k = 1, 5

S = S + Real(j*k) / Real(j+k)

If (S > S1) Exit Outer

Enddo Inner

ENDDO Outer

Тело внешнего цикла Outerпо переменнойJ (на блок-схеме – пунктирная линия)полностьювключает в себя внутренний циклInnerпо переменнойK. Тело внутреннего цикла на блок-схеме показано штрихпунктирной линией. Внешний цикл выполняется 10 раз, при каждом его выполнении тело внутреннего цикла повторяется 5 раз (всего 50 раз).

Вложенные циклы удобнее читать, если циклам дать имена. Эти имена можно использовать в операторах Exit и Cycle. В приведенном примере при достижении указанного значения суммы выход осуществляется из внешнего цикла, внутренний при этом, естественно, прекращается.

Соседние файлы в папке Фортран_Лекции