- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FORTRAN cho8 课件
本章内容 实现已知循环次数的结构比较方便 1.基本组成 DO循环由DO语句和循环体组成 2.一般形式为 [DO结构名:] DO v = e1, e2 [ , e3 ] 循环体 ENDDO [DO结构名] 循环体 可以为0~n条语句或结构 DO 循环入口语句,只能从该语句进入循环 ENDDO 循环终止语句 3. DO语句的特点 (1)循环变量的增量e3(步长值)是可选项,当不写e3时,意味着e3=1。 例如:DO n=1,10,1 DO n=1,10 两个语句的含义相同。 (2)循环变量初值、终值和步长可以分别是常数、变量或表达式。 例如: DO x=1.0*2,SQRT(25.0),2.0 相当于:DO x=2.0,5.0,2.0 (3)循环次数可以从循环初值、终值和步长计算出来:次数=INT((e2-e1+e3)/e3)。 例:对于DO i=1,10,2 其循环次数=INT((10-1+2)/2)=5次。i按序分别取值为:1,3,5,7,9。 对于DO i=10,1,2 则循环次数=0次。程序运行到这里时I取得初值10,但是循环体一次也不执行。同理: DO i=5,10,-2,程序运行到这里时I取得初值5,但是循环体一次也不执行。 (4)循环变量的初值、终值和步长可以为正或负。初值、终值可以为零。但步长不应为0。 脱离循环(即不再执行循环)的条件是:循环变量沿变化方向超过终值。 (5)如果循环变量的类型和初值、终值和步长的类型不一致,则按赋值的规则处理。 例:对于DO i=1.5,3.6,1.2 不要根据INT((3.6-1.5+1.2)/1.2)=2而认为循环次数为2,而应当先将实型量转化为整型量,即变成相当的循环语句 DO i=1,3,1 其循环次数为3次而不是2次。 例:对于DO x=1.5,3.6,1.2 由于循环变量不是整型的而是实型的,它的循环次数为2次。X取值分别是1.5, 2.7。 所以:应该避免使用实型的循环变量,用整型循环变量计算出的循环次数是绝对准确的 。 4.循环的执行过程 (1)计算e1,e2,e3的值,并将它们转换成循环变量的类型。 (2)将初值e1赋予循环变量v,相当于执行一个赋值语句:v=e1 (3)根据公式INT((e2-e1+e3)/e3)计算出循环次数R。 (4)检查循环次数,若R≤0,则跳过循环体,从循环出口语句END DO退出该层循环;若R0,则执行循环体。 (5)执行完循环体后,循环变量增加一个步长v=v+e3,循环次数减1,R=R-1。 (6)返回第4步,重复执行第4,5,6步骤。 8.1.3 DO循环的有关规定 1.循环变量在循环体内可以被引用,但不能被赋以新值 下面的程序段是正确的: DO n=1,100 m=2*n PRINT*,m END DO 2.循环次数是根据循环变量的初值el、终值e2和步长e3计算出来的,在执行循环体期间是确定不变的 3.循环变量在循环体内不能被重新赋值,但在循环体外,循环变量可以被重新赋值。 DO i=4,15 … END DO … DO i=10,17 … END DO 4.在DO循环中可以包含块IF结构和SELECT CASE结构。但是其中包含的IF结构和SELECT CASE结构必须是完整的结构 。 【例8-1】求5! 解:5!=1×2×3×4×5。该问题显然是一个重复计算问题,需做4次乘法。可用DO循环语句实现。 PROGRAM ex08_01 IMPLICIT NONE INTEGER:: i,fact=1 DO i = 1,5 fact=fact*i END DO PRINT*,fact END 【例8-2】求 【例8-3】求 用于事先无法确定循环次数的情况下 1.一般格式为: [DO结构名:] DO WHILE(逻辑表达式或关系表达式) 循环体 ENDDO [DO结构名] 2.执行过程 (1)先计算表示循环控制条件的逻辑表达式或关系表达式的值。 (2)若结果为.TRUE.,则执行循环体直到END DO语句,否则终止循环,转去执行END DO后面的第一条可执行语句。 (3)执行END DO语句,控制转(1)继续执行。 【例8-5】输入
文档评论(0)