资源描述:
《2019年FORTRAN90程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、FORTRAN90语言程序设计计算机中心楚红2019.12第3部分循环结构程序设计带循环变量的DO循环结构不带循环变量的DO循环结构DO-WHILE控制的循环结构循环的嵌套循环结构程序设计举例有循环变量的DO循环结构有循环变量DO结构的格式DOV=E1,E2,E3循环体ENDDODO循环语句由三部分组成:DO语句、循环体和ENDDO语句。DO语句是DO循环的开始语句,指定用于控制循环执行的有关参数(初始值、终止值和步长),决定是否执行循环体。DO是关键词,表示DO循环结构的入口语句。V是循环变量,循环变量的类型可以为整型或实型,E1,
2、E2,E3可以是整型或实型常数、变量、表达式。E1称为循环变量的初始值;E2称为循环变量的终止值;E3称为循环变量的步长,当步长为1时,该项可以省略。在循环开始时,E1,E2,E3应有确定的值。由于实型数据在进行数据转换时,可能出现误差,因此,在使用循环变量、E1、E2和E3时,最好定义为整型。有循环变量的DO循环结构循环体是DO循环结构的主体,给出用于处理数据的有关语句,决定DO循环语句的执行结果。ENDDO语句是DO循环结构的终端语句,表明DO循环语句到此结束,控制返回到DO语句执行。下面给出一些合法的DO结构:DOI=1,10,
3、2!输出1、3、5、7、9PRINT*,IENDDODOI=10,1,-2!输出10、8、6、4、2PRINT*,IENDDO有循环变量的DO循环结构DO循环结构的执行过程为:(1) 先计算E1、E2、E3的值,然后转换为与循环控制变量相同的类型;(2) 给循环控制变量赋初值V=E1;(3) 计算循环次数,计算公式为:R=MAX(INT((E2-E1+E3)/E3),0)例如,若DO语句为“DOL=2,20,2”,循环次数为:R=MAX(INT((20–2+2)/2),0)=10;(4) 检查循环次数,当R0时,执行循环体;当R≤0
4、时,跳过循环体,循环结构执行结束;(5) 当执行到循环终端语句时,循环变量按步长增值,循环变量=循环变量+E3;(6) 循环次数减1:R=R–1;返回(4)继续执行。注意事项(1) E3的缺省意味着循环步长为1,此时E3前面的逗号也必须省略。例如:DOI=1,10,1DOI=1,10两者含义相同。(2) 若循环次数R<0,按R=0处理,则循环一次也不会被执行。例如:DOI=10,1,2循环变量R=INT((1-10+2)/2)=-3,一次也不会执行循环。(3) E1、E2、E3的类型应与循环变量相同。当E1、E2、E3的类型与
5、循环变量不相同时,在循环执行时,系统将E1、E2、E3转换成循环变量的类型。例如:DOI=1.6,3.6,1.6应先将实型转化成整形,即:DOI=1,3,1,因此循环次数是3次,而不是2次。注意事项(4) 循环变量在循环体中可以被引用,但不能被重新赋值。例如,下面的用法是错误的:DOI=1,10I=I*IENDDO因为循环变量在循环体内不能被赋值,若改成:J=I*I则就正确了。(5) E1、E2、E3的值在循环体中被改变后,不影响循环次数的计算。因此,试图通过改变循环体中E1、E2、E3的值来改变循环次数是不可能的。例如:J=10DO
6、I=1,J…J=20…ENDDO!该循环次数在循环体执行之前已计算好,共执行10次,不会因为循环体内J值的改变而增加循环次数。注意事项(6) 可以不经过ENDDO语句退出循环,即将执行控制从循环体内转移到循环体外。也可在循环体内转移,但不能从循环体外转移到循环体内。例如:DOI=1,20…IF(I**3>=100)GOTO100…ENDDO100 PRINT*,I**3(7) DO循环和其它结构(如块IF结构、CASE结构)可以相互嵌套使用,但结构的嵌套必须是完整嵌套,不允许结构的交叉。有循环变量的DO循环结构DO循环结构的命
7、名DO循环结构名:DOV=E1,E2,E3循环体ENDDODO循环结构名[例3.1]求N!的值因为N!=1*2*3*…*N。该题显然是一个累积问题的计算,存放累积的变量的初值应为1。[源程序]PROGRAMCALCULATE_FACTORIALIMPLICITNONEINTEGER::N,T,IREAD*,NT=1DOI=1,NT=T*IENDDOPRINT*,TENDPROGRAMCALCULATE_FACTORIAL[引申]例如求解如下表达式。有循环变量的DO循环结构[例3.3]求FIBONACCI数列:1,1,2,3,5,……的
8、前40个数。分析:FIBONACCI数列的递推公式为:F1=1,F2=1,…,(N≥3)根据递推公式可知,FIBONACCI数列从第3顶开始,等于前2顶之和。因而程序只需一个DO循环,采取辗转赋值法即可。有循环变量的DO