
- •Lesson 2 Ветвления и циклы
- •Блок-схемы алгоритмов
- •Управляющие операторы
- •Операторы перехода
- •Условный оператор If
- •Оператор If...Then
- •Оператор If...Then...Else
- •Оператор If с тремя и более блоками
- •Переключатель Select
- •Безусловный переход GoTo
- •Операторы Stop и Return
- •Операторы цикла
- •Операторы Exit и Cycle
- •Цикл по переменной
- •Количество повторений цикла по переменной
- •Подробная блок-схема цикла по переменной
- •Цикл Do while
- •Бесконечный цикл
- •Вложенные циклы
- •Неявные циклы
Цикл Do while
Цикл Do whileназывают также циклом по условию; условие записывается в заголовке цикла. Оператор обеспечивает повторение тела цикла до тех пор, пока условие верно. Имя здесь не обязательно, но может пригодиться для индикации вложенных циклов, операторовCycle илиExit.
Общее представление оператора:
[имя:]Do while(логическое выражение)
Тело цикла
End do [имя]
Изображение цикла Do whileна блок-схеме:
Важные замечания:
Тело цикла может вообще не выполниться, если условие изначально ложно.
Пример
Do while (k==k+1) ! условие никогда не выполняется
Тело цикла
End do
Если переменная, проверяемая в условии в заголовке цикла, не изменяется в теле цикла, или изменяется, но не обращает условие в «ложь», то это приводит к зацикливанию, т.е. цикл будет выполняться, пока вы не закроете программу.
Пример
k = 0
do while (k>=0)
Тело цикла
K = k + 1
End do
При составлении программы из всего арсенала конструкций, которые предлагает нам язык программирования, приходится выбирать наиболее подходящие для решения конкретной задачи.
В качестве примера реализуем подробную блок-схему цикла по переменной с помощью оператора do while:
Пример 1
|
x=xn k=Max(0,Int((xk-xn)/step))+1 Do while (k>0) ! (1) Тело цикла ! (2) x=x+step ! (3) k=k-1 Enddo . . . ! (4) ! продолжение программы
|
Пример 2
Вывести на экран значения xиsin x, еслиxизменяется от 1 до 3 с шагом 0,1. Выполнить это задание с использованием цикла по переменной и циклаDo while.
Цикл по переменной |
Do x= 1, 3, 0.1 Write(*,*)’x=’, x, & ‘ Sin x =’, sin(x) Enddo |
Цикл по условию |
x = 1 Do while (x<=3) Write(*,*)’x=’, x, & ‘ Sin x =’, sin(x) x = x + 0.1 Enddo
|
Сейчас мы попытаемся сравнить между собой две разновидности циклов – цикл по переменной и цикл по условию. В цикле по условию будем называть переменной цикла переменную, которая изменяется в цикле и проверяется в условии в заголовке цикла.
|
Цикл по переменной |
Цикл по условию |
1 |
Заданы диапазон и шаг изменения переменной цикла |
Перед началом цикла следует установитьначальное значение переменной цикла. |
2 |
Фиксированное количество повторений цикла. |
Количество повторений цикла заранее неизвестно и может быть различным при работе с разными данными. |
3 |
Переменная цикла автоматически изменяется по закону арифметической прогрессии. |
Переменная цикла может изменяться по правилу, выбранному программистом для решения конкретной задачи. |
4 |
Переменную цикла изменять в теле цикла запрещено. |
Изменение переменной цикла возможно тольков теле цикла, и делать этонеобходимо. |
5 |
Использование цикла по переменной не приводит к зацикливанию. |
Ошибки в работе с переменной цикла могут привести к зацикливанию. Одна из таких ошибок – переменная цикла не изменяется в теле цикла. |
6 |
Только одна переменная цикла. |
В логическом выражении в заголовке цикла можно использовать несколько переменных. При этом не следует забывать, что всем им нужно установить начальные значения и изменять их в теле цикла. |