
- •Структура программ
- •Блок-схемы алгоритмов
- •Управляющие операторы
- •Операторы перехода
- •Условный оператор 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 имя
При составлении программы из всего арсенала конструкций, которые предлагает нам язык программирования, приходится выбирать наиболее подходящие для решения конкретной задачи. Сейчас мы попытаемся сравнить между собой две разновидности циклов – цикл по параметру и цикл по условию. В цикле по условию будем называть переменной цикла переменную, которая изменяется в цикле и проверяется в условии в заголовке цикла.
|
Цикл по параметру |
Цикл по условию |
1 |
Заданы диапазон и шаг изменения переменной цикла |
Перед началом цикла следует установить начальное значение переменной цикла. |
2 |
Фиксированное количество повторений цикла. |
Количество повторений цикла заранее неизвестно и может быть различным при работе с разными данными. |
3 |
Переменная цикла автоматически изменяется по закону арифметической прогрессии. |
Переменная цикла может изменяться по правилу, выбранному программистом для решения конкретной задачи. |
4 |
Переменную цикла изменять в теле цикла запрещено. |
Изменение переменной цикла возможно только в теле цикла, и делать это необходимо. |
5 |
Использование цикла по параметру не приводит к зацикливанию. |
Ошибки в работе с переменной цикла могут привести к зацикливанию. Одна из таких ошибок – переменная цикла не изменяется в теле цикла. |
6 |
Только одна переменная цикла. |
В логическом выражении в заголовке цикла можно использовать несколько переменных. При этом не следует забывать, что всем им нужно установить начальные значения и изменять их в теле цикла. |
В качестве примера реализуем подробную блок-схему цикла по параметру с помощью оператора do while:
Пример 1
|
x=xn kp=Max(0,Int((xk-xn)/step))+1 Do while (kp>0) ! (1) Тело цикла ! (2) x=x+step ! (3) kp=kp-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
|