3.2. Оператор цикла do со счетчиком (или с параметром)
Схема алгоритма конструкции оператора цикла do со счетчиком приведена на рис. 3.5.
Рисунок 3.5 Схема алгоритма конструкции цикл do.со счетчиком.
Синтаксис оператора цикла do с параметром имеет следующий вид:
do v=expr1,expr2,[expr3]
[операторы]
end do
Здесь v – параметр (переменная) цикла, expr1 – начальное значение параметра цикла, expr2 – конечное значение параметра цикла, expr3 – шаг изменения параметра цикла (может быть не указан). Тогда по умолчанию он считается равным 1.
Переменная в операторе do – предпочтительнее целая, но допускается вещественная или вещественная двойной точности. Начало, конец и шаг (expr1, expr2, expr3)– выражения одного типа: целого, вещественного или вещественного двойной точности. Конструкция do выполняется поэтапно.
Сначала выполняются все необходимые начальные установки:
-
вычисляются выражения, определяющие expr1, expr2, expr3и вычисленные значения преобразуются к типу переменной цикла v;
-
переменной v присваивается значение начало (expr1);
-
устанавливается счетчик числа повторений цикла, число повторений цикла – целое, неотрицательное, вычисляется по формуле:
N=max(0, int[ (expr2 – expr1+expr3)/expr3 ].
Здесь функция int(..) вычисляет целую часть частного, причем N=0 в случаях:
если expr1>expr2 и expr3>0;
если expr2>expr1 и expr3<0.
Значение выражения expr3, определяющего шаг, должно удовлетворять следующим требованиям:
-
шаг не может быть равен нулю;
-
если шаг опущен, то он подразумевается равным единице;
-
expr3>0 подразумевает возрастание переменной цикла (v);
-
expr3<0 подразумевает убывание переменной цикла (v).
После начальных установок начинается выполнение цикла, которое содержит три пункта, выполняемые повторно:
1. проверяется значение N – счетчика числа повторений, если N=0, цикл завершается,
2. если N≠0, выполняются [операторы],
3. N=N-1, v=v+ expr3. Переход к пункту 1
Выполнение цикла регламентируется следующим образом
-
переменная v изменяется автоматически самим оператором do, поэтому изменять переменную цикла v в теле цикла запрещено,
-
цикл нормально завершается по достижении N=0,
-
оператор CYCLE, встретившийся в теле цикла, прерывает пункт 2 и вызывает переход к пункту 3
-
оператора EXIT, встретившийся в теле цикла, прерывает цикл и завершает его досрочно, сохранив достигнутое значение переменной цикла v.
Цикл по вещественной переменной имеет неустойчивый характер (из-за особенностей вещественного типа). Поэтому целесообразно его оформлять в следующем виде:
do v=expr1,expr2+expr3/2,expr3
[операторы]
end do
В том случае, если шаг изменения параметра цикла положительный и expr1 ≤ expr2, циклический процесс выполняется как минимум один раз. Выходом из цикла является выполнение условия v > expr2.
В том случае, если шаг изменения параметра цикла отрицательный и expr1 ≥ expr2, циклический процесс выполняется как минимум один раз. Выходом из цикла является выполнение условия v < expr2.
Решение задачи табулирования функции с использования оператора цикла с параметром будет иметь следующий вид (схема алгоритма рис. 3.6):
expr1 = a
expr2 = b
expr3 = dx
Рис. 3.6 |
Do v=a,b,dx Y=x**2 enddo |