|
参考中科的网上教程
http://micro.ustc.edu.cn/Fortran/ZJDing/Sec3-1.htm#第3_1_2f
d) 隐DO循环
隐DO循环实际上是带控制循环变量的DO循环,但简化成只有DO循环的第一句,且把关键字DO隐去,成为I=m1,m2,m3形式。它不是独立语句,只是用作为读写语句的输入输出表中一个组成部分,用来控制重复读写的次数。例如:
READ *,(VALUE(I),I=1,20)
表示读入VALUE(1),VALUE(2),…,VALUE(20)的值。
WRITE(*,*)(A,B,N=1,5)
表示在当前设备用默认格式重复输出A、B的值5次。
隐DO循环只能作为输入输出表的一部分出现,不能用于其它场合。此时输入输出表的一般形式为:(I/O列表,循环变量名=初值,终值,增值)。也即把输入输出表与循环控制部分一起用括号括起,中间用逗号分开,称为隐DO表,写在读写语句后面作为读写对象。
隐DO表可以嵌套,如:
PRINT *, ((A(I,J),I=1,3),J=1,3)
先把内层(A(I,J),I=1,3)隐DO表作为输出表,再与隐DO控制J=1,3合成外层隐DO表。其控制机制与嵌套DO循环一致,先内层循环完,外层循环变量加一步长,再循环完内层。其打印值的次序如下:
A(1,1),A(2,1),A(3,1),A(1,2),A(2,2),…,A(3,3)
即先输出第1列,再输出第2列、第3列。如果把J作为内层,I作为外层循环变量,则输出是按行的:
PRINT *,((A(I,J),J=1,3),I=1,3)
则打印输出值的次序为:
A(1,1),A(1,2),A(1,3),A(2,1),A(2,2),…,A(3,3) |
|