
- •Lesson 2 Ветвления и циклы
- •Блок-схемы алгоритмов
- •Управляющие операторы
- •Операторы перехода
- •Условный оператор If
- •Оператор If...Then
- •Оператор If...Then...Else
- •Оператор If с тремя и более блоками
- •Переключатель Select
- •Безусловный переход GoTo
- •Операторы Stop и Return
- •Операторы цикла
- •Операторы Exit и Cycle
- •Цикл по переменной
- •Количество повторений цикла по переменной
- •Подробная блок-схема цикла по переменной
- •Цикл Do while
- •Бесконечный цикл
- •Вложенные циклы
- •Неявные циклы
Бесконечный цикл
В программировании бесконечным циклом называется цикл, написанный таким образом, что условие выхода из него никогда не выполняется. Если из строки-заголовка цикла по переменной исключить переменную цикла, получится бесконечный цикл. О программе, вошедшей в бесконечный цикл, иногда говорят, что она зациклилась.
Оператором бесконечного цикла называется оператор цикла, не содержащий условия выхода из него. Единственная возможность выхода из бесконечного цикла обеспечивается включением в тело цикла оператора 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. В приведенном примере при достижении указанного значения суммы выход осуществляется из внешнего цикла, внутренний при этом, естественно, прекращается.