步长循环与逆向循环在计数循环中加入步长,既可以隔项遍历,也可以用负步长倒序遍历。
计数do循环的第三个控制值是步长。正步长让循环变量递增,负步长让循环变量递减,因此同一种结构既能正向遍历,也能逆向遍历。
- do angleDegree=0,90,30从0开始,每轮增加30。
- do angleDegree=90,0,-30从90开始,每轮减少30。
- 步长方向必须能够从起始值走向终止值。
本文代码
! do循环可指定步长,步长为负数时可逆向循环。
program doStepDemo
implicit none
integer :: angleDegree
print "(A)","do步长与逆向循环:"
print "(A)","正向每次增加30度:"
do angleDegree=0,90,30
print "(A,I4)","角度=",angleDegree
end do
print "(A)","逆向每次减少30度:"
do angleDegree=90,0,-30
print "(A,I4)","角度=",angleDegree
end do
end program doStepDemo
编译运行
(base) hong@hongdeMacBook-Pro 025.doStep % gfortran exampleDoStep.f90
(base) hong@hongdeMacBook-Pro 025.doStep % ./a.out
do步长与逆向循环:
正向每次增加30度:
角度= 0
角度= 30
角度= 60
角度= 90
逆向每次减少30度:
角度= 90
角度= 60
角度= 30
角度= 0
结果分析
第一个循环输出0、30、60、90,说明正步长30控制angleDegree递增。
第二个循环输出90、60、30、0,说明负步长-30控制angleDegree递减;两个端点都被输出。
知识点总结
- 计数do的完整控制形式可以写成起始值、终止值、步长。
- 正步长用于递增循环,负步长用于逆向循环。
- 本例两个循环分别演示30和-30对angleDegree的更新。