fortran第5章(循环).ppt
《fortran第5章(循环).ppt》由会员分享,可在线阅读,更多相关《fortran第5章(循环).ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、下一页上一页停止放映第五章 循环结构的实现5.1GOTO语句实现循环语句实现循环GOTO语句的一般形式为:语句的一般形式为:GOTO(语句标号语句标号)在一个基本结构内部可以使用在一个基本结构内部可以使用GOTO语句。语句。如果在逻辑如果在逻辑IF语句中使用语句中使用GOTO语句就可以实现有条件的语句就可以实现有条件的循环,循环操作能够在一定条件下结束。循环,循环操作能够在一定条件下结束。在程序中存在两类循环:在程序中存在两类循环:无条件的循环无条件的循环:无条件循环是无休止地执行一个程序段,无条件循环是无休止地执行一个程序段,有有条条件件的的循循环环:有有条条件件的的循循环环是是在在满满足足
2、一一定定条条件件时时才才执执行行循循环。环。GOTO语句实现无条件的循环语句实现无条件的循环:1 1下一页上一页停止放映 FORTRAN程序中有条件的循环的程序中有条件的循环的3种循环类型种循环类型:1.DO型循环型循环(用循环语句实现用循环语句实现)2.当型循环当型循环(用(用DO WHILE语句)语句)3.直到型循环直到型循环(用(用IF语句)语句)2 2下一页上一页停止放映5.2用用DO语句实现循环语句实现循环(循环次数已知的循环)循环次数已知的循环)当需要执行的当需要执行的循环次数为已知循环次数为已知时,用时,用DO语句实现循语句实现循环比较方便。它的一般形式为:环比较方便。它的一般形
3、式为:例如:例如:DO10N=1,100,1T=N/2.010PRINT*,TDO 标号标号,循环变量初值式循环变量初值式E1 ,终值式终值式E2,增量式增量式E3 3 3下一页上一页停止放映循循环环变变量量的的初初值值、终终值值和和步步长长可可以以为为正正或或负负。初初值值、终终值值可可以以为为零零。但但步步长长不不应应为为0,否否则则循循环环变变量量的的值值永永远远不不会会超超过终值,从而陷入死循环。过终值,从而陷入死循环。说明:说明:循环变量是整型的循环变量是整型的例:例:D0I1.5,3.6,1.2 循循 环环 次次 数数 不不 应应 该该 是是 INT(3.6-1.5 1.2)/1.
4、2)2,而而应应当当先先将将实实型型量量转转化化为为整整型型量量,即即变变成成相相当当的的循循环环语语句句DOI1,3,1其循环次数为其循环次数为3次而不是次而不是2次。次。例:对于例:对于D0 kD0 k-1,-3,-1-1,-3,-1 其其 循环次数循环次数INT(INT(3 31-1)1-1)(1)1)3 3次次 k k按序分别取值为:按序分别取值为:-1,-2,-3-1,-2,-3。如果循环变量的类型和初值、终值和步长的类型不一致,如果循环变量的类型和初值、终值和步长的类型不一致,则按赋值的规则处理,即需先将初值、终值和步长的类型则按赋值的规则处理,即需先将初值、终值和步长的类型转化成
5、循环变量的类型,然后进行处理。转化成循环变量的类型,然后进行处理。4 4下一页上一页停止放映循环变量是实型的循环变量是实型的例:例:D0X0.0,50.0,0.1理论循环次数理论循环次数INT(50.1/0.1)501但但实实际际上上在在许许多多计计算算机机上上它它只只执执行行500次次循循环环。原原因因是是实实数数在在内内存存中中的的误误差差使使得得增增量量值值不不是是准准确确的的0.1,由由于于循循环环的的误误差差积积累累,到到执执行行完完500次次循循环环后后X的的值值可可能能已已超超过过50.0,因因而而停停止止执执行循环。行循环。改用整型循环变量时,则循环改写为:改用整型循环变量时,
6、则循环改写为:D0I0,500;X=I/10。例:例:D0X1.5,3.6,1.2它的循环次数应为它的循环次数应为INT(3.6-1.51.2)/1.2)2次次X取值分别是取值分别是1.5,2.7。由由于于实实型型数数在在运运算算和和存存储储时时有有一一些些误误差差,因因而而循循环环次次数数的的理理论论值值与与实实际际值值之之间间会会有有一一些些差差别别。所所以以应应该该避避免免使使用用实实型型的的循循环环变量变量,用整型循环变量计算出的循环次数是绝对准确的。,用整型循环变量计算出的循环次数是绝对准确的。5 5下一页上一页停止放映DODO循环的执行过程为循环的执行过程为:(1)计算表达式计算表
7、达式E1,E2,E3的值,并将它们转换的值,并将它们转换成循环变量的类型。成循环变量的类型。(2)循环变量的初值取循环变量的初值取E1的值。的值。(3)循环次数循环次数r=INT(E2-E1+E3)/E3).如如:DO10I=2,20,2r=(20-2+2)/2=10r为为0的情况的情况:E1E2,E30如如:DO10K=10,5,2E1E2,E3r(7)返回返回(4)6 6下一页上一页停止放映 例例:DO20I=1,5,2N=I*I20PRINT*,I,N经计算:经计算:r=(5-2+2)/2=3,各有关变量的值在各次循环各有关变量的值在各次循环中变化的情况如下表:中变化的情况如下表:终止循
8、环的条件:循环变量的值终止循环的条件:循环变量的值超过超过终值终值。7 7下一页上一页停止放映继续语句(继续语句(CONTINUECONTINUE语句)语句)它是一个可执行语句,但它不产生任何机器它是一个可执行语句,但它不产生任何机器操作。一般把它用做循环的终端语句。操作。一般把它用做循环的终端语句。注意:注意:循环的终端语句不能是循环的终端语句不能是GOTO,块,块IF,ELSEIF,ENDIF,STOP等语句。等语句。它的形式为它的形式为:CONTINUE8 8下一页上一页停止放映循环终端语句循环终端语句循环终端语句为一般的执行语句。循环终端语句为一般的执行语句。F90规规定定:循循环环终
9、终端端语语句句可可以以是是除除了了GOTO、块块IF、CASE、CYCLE、DO、ELSE、ELSE IF、END IF、END、ENDSELECT、EXIT、SELECTCASE、STOP和和RETURN语语句句以以外外的的任任一一可可执执行行语语句句,如如打打印印语语句句、赋赋值值语语句句、输输入入语语句句、逻逻辑辑IF语语句句等等都都可可以以作作为为终终端端语语句。句。特殊的循环终端语句是:特殊的循环终端语句是:ENDDO(常用于无语句标号时常用于无语句标号时)CONTINUE(常用于有语句标号时常用于有语句标号时)新编写的程序应该尽量使用以新编写的程序应该尽量使用以ENDDO结束的块结
10、束的块DO构造。构造。9 9下一页上一页停止放映 例例1.一球从一球从100米高度自由落下,每次落地后反米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第跳回原高度的一半,再落下,求它在第20次着地次着地时,共经过了多少米时,共经过了多少米?90 H=100S=0DOI=1,20S=S+HH=H/2.0ENDDOWRITE(*,*)S=,SEND0177 H=100S=0DO10I=1,20S=S+HH=H/2.010 CONTINUEWRITE(*,*)S=,SEND1010下一页上一页停止放映有关有关DODO循环的一些规定循环的一些规定 1.循环变量在循环体内不能再被赋值循环变
11、量在循环体内不能再被赋值.例如例如,下面用法是错误的下面用法是错误的:DO DO K K=10,100,2=10,100,2 K K=K K/2/2 WRITE(*,*)K WRITE(*,*)KEND DOEND DO1111下一页上一页停止放映2.2.循环变量的初值循环变量的初值E1,E1,终值终值E2E2和增量和增量E3E3在执行循环体期间在执行循环体期间不能改变不能改变.下面用法是错误的下面用法是错误的.M2=100 M2=100 DO I=1,DO I=1,M2M2 M2M2=50=50 END DO END DO3.3.循环的次数是根据循环变量的初值、终值和步长值循环的次数是根据循
12、环变量的初值、终值和步长值计算出来的,在执行循环体期间是确定不变的计算出来的,在执行循环体期间是确定不变的 1212下一页上一页停止放映 4.可以用转移语句从循环体内转到循环体外可以用转移语句从循环体内转到循环体外,也可以在也可以在循环体内转移循环体内转移,但不允许从循环体外转到循环体内但不允许从循环体外转到循环体内.例例2 2 判某一数判某一数M M是否为素数的程序可以写成是否为素数的程序可以写成:READ(*,*)MREAD(*,*)MDO K=2,M-1DO K=2,M-1IF(MOD(M,K).EQ.0)GOTO 40IF(MOD(M,K).EQ.0)GOTO 40 END DO EN
13、D DOWRITE(*,*)M,WRITE(*,*)M,IS A PRIME NUMBERIS A PRIME NUMBERSTOPSTOP4040WRITE(*,*)M,WRITE(*,*)M,IS NOT A PRIME NUMBERIS NOT A PRIME NUMBERENDEND(非正常出口非正常出口)KM-1 5.5.从从“非正常出口非正常出口”转出时转出时,循环变量保持循环变量保持“当前值当前值”.从从“正常出口正常出口”脱离循环时脱离循环时,循环变量保持它的循环变量保持它的最后的最后的值值1313下一页上一页停止放映数值积分数值积分求一个函数f(x)在a,b上的定积分a+(i
14、-1)h a+iha+h其几何意义是求曲边梯形面积。近似求小曲边梯形面积常用方法:(1)矩形法(2)梯形法(3)辛普生法(用一条小抛物线代替f(x),求小曲边梯形面积)1414下一页上一页停止放映底的起点)求函数求函数例例:1515下一页上一页停止放映源程序源程序:READ(*,*)N,A,BREAD(*,*)N,A,B X=A X=A H=(B-A)/N H=(B-A)/N F0=X*X+X+1.0 F0=X*X+X+1.0 S=0.0 S=0.0 DO I=1,N DO I=1,N SI=F0*H SI=F0*H S=S+SI S=S+SI X=X+H X=X+H F0=X*X+X+1 F
15、0=X*X+X+1 END DO END DO WRITE(*,*)N,A,B,S WRITE(*,*)N,A,B,S END END1616下一页上一页停止放映例例 正直角柱体如图所示正直角柱体如图所示.已知已知5 5组组a,ba,b和和h,h,要求分别求要求分别求出对应的出对应的d.d.DIMENSION A(5),B(5),H(5),D(5)DIAG(X,Y)=SQRT(X*X+Y*Y)DO 1 I=1,51 READ(*,*)A(I),B(I),C(I)DO 2 I=1,5 C=DIAG(A(I),B(I)2 D(I)=DIAG(C,H(I)WRITE(*,100)100 FORMAT
16、(9X,A,8X,B,8X,H,8X,D)WRITE(*,110)(A(I),B(I),H(I),D(I),I=1,5)110 FORMAT(5X,4F9.3)ENDabhcd1717下一页上一页停止放映例例:利用公式利用公式ex=1+x/1!+x2/2!+x3/3!+xn/n!+计算计算ex展开式的前展开式的前20项的近似值。项的近似值。分析:分析:ex的展开式中第的展开式中第i项是第项是第i-1项乘以项乘以x/i的积。的积。例如例如:t1=t0 x/1(t0=1)t2=t1x/2t3=t2x/3ti=ti-1x/i这种表示方式可用循环实现。设这种表示方式可用循环实现。设t代表每项值的变量,
17、代表每项值的变量,i是循环控制是循环控制变量,则下面的语句中,变量,则下面的语句中,for语句的每一次循环都产生语句的每一次循环都产生ex展开式中展开式中前前n项的项的t值值(除开始一项以外除开始一项以外):t=1.0DO I=1,NDO I=1,Nt=t*x/iEND DOEND DO1818下一页上一页停止放映ex是展开式的各项之和,这种有规律的求和正好可以用循环是展开式的各项之和,这种有规律的求和正好可以用循环来实现。来实现。假设假设exex代表两项之和的变量,将前面代表两项之和的变量,将前面forfor循环中求出的每一项循环中求出的每一项t t累加起来,可表示为累加起来,可表示为:ex
18、=1.0t=1.0DO I=1,NDO I=1,Nt=t*x/iex=ex+tEND DOEND DO1919下一页上一页停止放映例例:计算多项式计算多项式y=0.6+3.5x+5.0 x2+0.3x3+5.1x4+2.1x5+x6在在x=1.3时的值时的值 REALA(6),FDATAA/0.6,3.5,5.0,0.3,5.1,2.1,1.0/DATAN,X/6,1.3/TOLY=A(1)F=1.0DO10K=2,NF=F*X10TOLY=TOLY+A(K)*FEND2020下一页上一页停止放映循环嵌套的概念和执行过程循环嵌套的概念和执行过程一个循环体内又包含另一个完整的循环一个循环体内又包
19、含另一个完整的循环,称为循环的嵌称为循环的嵌套套 例例1 1 一个学校有一个学校有4040个班个班,每班每班3030人人.要求将全校每个学要求将全校每个学生的分数累加生的分数累加,并求全校总平均成绩和每班的平均成绩并求全校总平均成绩和每班的平均成绩.2121下一页上一页停止放映 AVER1=TOTAL1/(40*30)WRITE AVER1 TOTAL2=0 TOTAL1=0 DO 10 I=1,40 DO 20 J=1,30 READ G TOTAL2=TOTAL2+G AVER2=TOTAL2/30 WRITE I,AVER2 TOTAL1=TOTAL1+TOTAL2DOJ=1,30REA
20、D(*,*)GTOTAL2=TOTAL2+GENDDOAVER2=TOTAL2/30WRITE(*,*)I,AVER2TOTAL1=TOTAL1+TOTAL2TOTAL2=0TOTAL1=0AVER1=TOTAL1/(40*30)WRITE(*,*)ALL:,AVER1ENDDOI=1,40ENDDO2222下一页上一页停止放映例例:打印九九表的程序打印九九表的程序说明说明:1.1.外循环执行外循环执行9 9次次,内循环执行了内循环执行了9*9=819*9=81次次 2.2.外循环变量外循环变量(I)(I)比内循环变量比内循环变量(K)(K)变化慢变化慢1*1=1 1*2=2 1*1=1 1*
21、2=2。1*9=9 1*9=9 2*1=2 2*2=4 2*1=2 2*2=4。2*9=182*9=18 。9*1=9 9*2=18 9*1=9 9*2=18。9*9=819*9=81 DO I=1,9 DO I=1,9 END DO END DO DO K=1,9 DO K=1,9 L=I*K L=I*K END DO END DOENDEND100 FORMAT(9(1X,I2,100 FORMAT(9(1X,I2,*,I2,I2,=,I2),I2)PRINT 100,I,K,L PRINT 100,I,K,L 2323下一页上一页停止放映 二重循环的执行过程:二重循环的执行过程:3.3.
22、遇内循环的遇内循环的DODO语句语句,计算出内循环应执行次数计算出内循环应执行次数r2,r2,使内使内循环变量取初值循环变量取初值.2.2.如果如果r10,r10,执行外循环体执行外循环体(顺序执行外循环体中的执顺序执行外循环体中的执行语句行语句).).如果如果r1=0,r1=0,则结束循环的执行则结束循环的执行.1.1.先计算出外循环的循环体应执行的次数先计算出外循环的循环体应执行的次数r1,r1,外循环变外循环变量取初值量取初值.4.4.如果如果r20,r20,执行内循环体各语句执行内循环体各语句,直到内循环的终端语直到内循环的终端语句句.如此共执行内循环体如此共执行内循环体r2r2次次,
23、然后从正常出口脱离内循环然后从正常出口脱离内循环.此时此时,r2=0.,r2=0.5.5.接着执行外循环体中其它执行语句接着执行外循环体中其它执行语句,直到外循环的终端直到外循环的终端语句语句.6.6.外循环变量增值外循环变量增值,r1-1=r1.,r1-1=r1.返回返回2.2.应注意应注意:(1)1)循环次数循环次数.(2).(2)内外循环变量值的变化内外循环变量值的变化.2424下一页上一页停止放映有关循环嵌套的规定有关循环嵌套的规定 1.1.各种循环都可以互相嵌套各种循环都可以互相嵌套.例如两个例如两个DODO循环可以嵌套成循环可以嵌套成为双重循环为双重循环,一个当型循环和一个一个当型
24、循环和一个DODO循环也可以嵌套循环也可以嵌套.无论哪无论哪种循环的嵌套种循环的嵌套,内循环都必须完整地出现在外循环体内内循环都必须完整地出现在外循环体内.I=15IF(I.LE.N)THENDOJ=1,IPRINT*,JENDDOPRINT*I=I+1GOTO5ENDIFDO10I=1,NDO20J=1,MPRINT*,I,J10CONTINUE20CONTINUE如如:2525下一页上一页停止放映 2.2.并列的循环可以用一个变量名作循环变量,而嵌套并列的循环可以用一个变量名作循环变量,而嵌套的循环不能用同一变量名作循环变量。的循环不能用同一变量名作循环变量。DOk=1,5DOk=1,10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran 循环
限制150内