FORTRAN90第三章循环结构程序设计

FORTRAN90第三章循环结构程序设计

ID:38561101

大小:296.01 KB

页数:39页

时间:2019-06-14

FORTRAN90第三章循环结构程序设计_第1页
FORTRAN90第三章循环结构程序设计_第2页
FORTRAN90第三章循环结构程序设计_第3页
FORTRAN90第三章循环结构程序设计_第4页
FORTRAN90第三章循环结构程序设计_第5页
资源描述:

《FORTRAN90第三章循环结构程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、§3.1有循环变量的DO循环结构§3循环结构程序设计§3.2重复DO循环结构§3.3DO_WHILE控制的循环结构§3.4循环的嵌套§3.5循环结构程序设计举例§3.1有循环变量的DO循环结构重复执行一组操作称为循环。算法中构成循环的结构称为循环结构。在FORTRAN中,实现循环结构的最直接方法就是用GOTO语句,但这种方法不符合结构化程序设计的思想,并不值得提倡。FORTRAN90一般有两种方法实现循环控制:DO_ENDDO语句和doWhile_ENDDO语句。格式:DO循环变量v=e1,e2[,e3]循环体statementsENDDO功能:对于变量v的值从初值e1按增量e3增加

2、到终值e2,反复执行循环体。e1,e2,e3都是算术表达式,e3的缺省值为1。循环变量v是代数量(整型/实型)。例:DOI=10,2,-2print*,I,I*IENDDO循环次数r=INT((e2-e1+e3)/e3),如果初始值表达式e1,终止值表达式e2,增量表达式e3中有实型表达式,循环就可能少做一次。循环次数至少为零。例:E3=0.1Dox=0,50.1,E3print*,XENDDO0.1不能精确表示,50.1/0.1得到500.9几,被INT()直接截断,循环次数=500。返回最好用整型变量来控制循环,以避免少做一次的问题。例:X=0DoK=0,500print*,XX

3、=X+0.1EndDOENDDo循环执行过程S1:求表达式e1,e2,e3的值,编译系统分别用三个与循环变量v相同类型的临时变量(不妨记为v1,v2,v3)来存放其值。S2:循环变量v=v1S3:计算循环次数r=INT((v2-v1+v3)/v3)S4:若r≯0,则转S9S5:执行循环体S6:循环变量v增加增量v3S7:循环次数r减1S8:转S4S9:循环终端语句后第一条可执行语句。注意:(1)循环变量的值在循环体中可以引用,不能被重新赋值.例:DOI=1,20J=I*IPRINT*,I,JEND是可以的.而DOI=1,20I=I*IPRINT*,IEND非法.(2)E1,E2,E3

4、的类型与V的类型可以相同,也可以不同,当类型不同时,系统自动将E1,E2,E3的类型转换成V的类型.例:DOI=2,5,1的循环次数为4.DOX=2.2,5.4,1.1的循环次数为3.DOI=2.2,5.4,1.1的循环次数为4.(3)正常出口:从循环的ENDDO语句脱离循环的称为正常出口,否则称为非正常出口.脱离循环后循环变量保留脱离时的值.例:DOI=1,5J=I*IENDDOPRINT*,I,JENDDOI=1,5IF(I>3)GOTO100J=I*IENDDO100PRINT*,I,JEND输出6,25输出4,9DO循环结构命名方式与块IF结构相仿:DO循环结构名:DO循环变

5、量v=e1,e2[,e3]循环体statementsENDDO[循环结构名]DO循环结构的命名例:计算n!Do循环的例题read(*,*)Nf=1doI=2,Nf=f*IENDOWrite(*,*)n,fEND例:前n个自然数之和read(*,*)NS=0doI=1,NS=S+IENDDOWrite(*,*)N,SEND例:输入100个数,求其中正数的个数及其平均值。S=0;N=0DoK=1,100Read(*,*)AIF(A>0)ThenN=N+1S=S+AEndIfENDDOIf(N>0)Print*,N,S/NEnd例:求Fibonacci数列:1,1,2,3,5,8,……的前

6、40个数.11235813F1+F2=FF1+F2=FF1+F2=F程序为:F1=1;F2=1PRINT*,F1,F2DOI=3,40F=F1+F2PRINT*,FF1=F2F2=FENDDOENDDOI=1,19F1=F1+F2F2=F1+F2ENDDO§3.2.1中断语句(EXIT,CYCLE)§3.2重复Do循环结构EXIT语句强制退出循环,格式为:EXIT[DO循环结构名]可用IF语句结合EXIT语句有条件地中断循环。例如:输入一组整数(个数小于100),求这组数的偶数个数和偶数之和。当某数大于9000时程序结束。程序为:INTEGER::I,K,N=0,S=0EXAM1:D

7、OI=1,100READ*,KIF(K>9000)EXITEXAM1IF(MOD(K,2)==0)THENN=N+1S=S+K;ENDIFENDDOEXAM1PRINT*,’N=’,N,’S=’,SENDCYCLE语句使循环体中在它后面的语句不被执行,而重新执行下一轮循环,格式为:CYCLE[DO循环结构名]可用IF语句结合CYCLE语句有条件地转移循环。说明:(1)CYCLE语句的执行将改变循环体的执行顺序,并不终止循环的执行。(2)当执行CYCLE语句

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。