FORTRAN90第三章循环结构程序设计.
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
read(*,*) N
f=1
do I = 2,N
f = f*I
ENDO
Write(*,*) n,f END
例:输入100个数,求其中正数的个数及其平 均值。
S = 0;N = 0 Do K = 1,100 Read(*,*) A IF(A>0) Then N = N+1 S = S+A End If ENDDO If(N>0) Print *, N,S/N End
F1 + F2 = F
DO I=1,19 F1=F1+F2 F2=F1+F2 END DO
§3.2 重复Do循环结构 §3.2.1中断语句(EXIT,CYCLE)
EXIT语句强制退出循环,格式为: EXIT [DO循环结构名]
可用IF语句结合EXIT语句有条件地中断循环。
例如:输入一组整数(个数小于100),求这 组数的偶数个数和偶数之和 。当某数大于 9000时程序结束。程序为:
DO I=1,100
READ*,X
IF(X<=0)CYCLE
PRINT*,X
ENDDO
END
§3.2.2 重复Do循环结构 一般形式: [DO循环结构名:] DO 循环体statements ENDDO [DO循环结构名] 重复Do循环结构一般来说是一个死循环,必须 在其循环体内用逻辑IF语句结合EXIT语句 或GOTO语句等迫使循环中止。
最好用整型变量来控制循环,以避免少做 一次的问题。 例: X=0 Do K = 0,500 print *,X X = X+0.1 EndDO END
返回
Do 循环执行过程 S1: 求表达式e1,e2,e3的值,编译系统分别用 三个与循环变量v相同类型的临时变量(不妨 记为v1,v2,v3)来存放其值。 S2:循环变量v=v1 S3: 计算循环次数r=INT((v2-v1+v3)/v3) S4: 若r ≯0,则转S9 S5: 执行循环体 S6: 循环变量v增加增量v3 S7: 循环次数r减1 S8:转S4 S9:循环终端语句后第一条可执行语句。
INTEGER::I,K,N=0,S=0 EXAM1:DO I=1,100
READ*,K
IF(K>9000)EXIT EXAM1
IF(MOD(K,2)==0)THEN
N=N+1
S=S+K;ENDIF
ENDDO EXAM1 PRINT*,’N=’,N,’S=’,S END
CYCLE语句使循环体中在它后面的语句不被执 行,而重新执行下一轮循环,格式为: CYCLE [DO循环结构名] 可用IF语句结合CYCLE语句有条件地转移循环。
循 环次数 r=INT((e2-e1+e3)/e3), 如 果初始 值 表达式 e1, 终止值表达式 e2, 增量表达式 e3 中有 实型表达式 ,循环就可能少做一次。循环次数 至少为零。 例: E3 = 0.1 Do x = 0,50.1,E3 print *,X ENDDO 0.1不能精确表示,50.1/0.1得到500.9几,被INT() 直接截断,循环次数=500。
§3 循环结构程序设计
§3.1 有循环变量的DO循环结构
§3.2 重复DO循环结构 §3.3 DO_WHILE控制的循环结构 §3.4 循环的嵌套 §3.5 循环结构程序设计举例
§3.1有循环变量的DO循环结构 重复执行一组操作称为循环。算法中构成 循环的结构称为循环结构 。 在FORTRAN中,实现循环结构的最直接方 法就是用 GOTO 语句 , 但这种方法不符合结 构化程序设计的思想,并不值得提倡。 FORTRAN 90一般有两种方法实现循环 控制:DO_ENDDO语句和do While_ENDDO语句。
注意: (1)循环变量的值在循环体中可以引用 ,不能被重 新赋值.例: 而 DO I=1,20 DO I=1,20
J=I*I
PRINT*,I,J
I=I*I
PRINT*,I
END
是可以的.
END
非法.
(2)E1,E2,E3 的类型与 V 的类型可以相同 , 也可以 不同,当类型不同时,系统自动将E1,E2,E3的类型 转换成V的类型.
例 : 求 Fibonacci 数列: 1 , 1 , 2 , 3, 5, 8 , …… 的前40个数.
1
1
2
3
5
8
13
程序为:
F1=1;F2=1 PRINT*,F1,F2 DO I=3,40 F=F1+F2 PRINT*,F F1=F2 F2=F END DO END
F1 +F2= F
F1 +F2 = F
4,9
END
END
Leabharlann Baidu
DO循环结构命名方式与块IF结构相仿:
DO循环结构的命名
DO循环结构名: DO 循环变量v= e1,e2[,e3] 循环体statements ENDDO[循环结构名]
Do循环的例题 例:计算n! 例:前n个自然数之和 read(*,*) N S=0 do I = 1,N S = S+I ENDDO Write(*,*) N,S END
说明:
( 1 ) CYCLE 语句的执行将改变循环体的执
行顺序,并不终止循环的执行。 ( 2 )当执行 CYCLE 语句后,重新执行下一 轮循环时,循环变量应增加一个步长。
例如:输入一组数据( 100 个),将大与 0 的 数据打印出来。程序为:
IMPLICIT NONE
REAL X
INTEGER I
例: DO I=2,5,1的循环次数为4. DO X=2.2,5.4,1.1的循环次数为3. DO I=2.2,5.4,1.1的循环次数为4. (3)正常出口:从循环的ENDDO语句脱离循环的 称为正常出口,否则称为非正常出口.脱离循环后 DO I=1,5 循环变量保留脱离时的值.例:
DO I=1,5 J=I*I END DO PRINT*,I,J 输出 6,25 IF(I>3)GOTO100 J=I*I END DO 100 PRINT*,I,J 输出
格式:DO 循环变量v= e1,e2[,e3] 循环体statements ENDDO 功能 : 对于变量 v 的值从初值 e1 按增量 e3 增 加到终值 e2, 反复执行循环体。 e1,e2,e3 都是 算术表达式,e3的缺省值为1。循环变量v是代 数量(整型/实型)。
例: DO I=10,2,-2 print *,I,I*I ENDDO