fortran程序设计..第5章.ppt





《fortran程序设计..第5章.ppt》由会员分享,可在线阅读,更多相关《fortran程序设计..第5章.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、FORTRAN语言-FORTRAN 77结构化程序设计第五章 循环结构的实现 l重复执行一组指令称为循环操作。在程序中存在两类循环:无条件循环和有条件循环。无条件循环是无休止地执行一个程序段,而有条件循环是在满足一定条件时才执行循环。l经常会遇到循环类型的问题,例如需要对全班学生求平均成绩,求n的阶乘,求 n个数的和等都需要用到循环处理的方法。5.1 用GOTO语句实现循环 GOTO语句的形式:GOTO 例如:“GOTO 10”表示流程转去标号为10的语句行继续执行。由于GOTO语句破坏了语句顺序执行的正常状态,不符合结构化程序设计原则,因此一般不提倡使用GOTO语句。只有在一个基本结构内部可
2、以使用GOTO语句。利用GOTO语句可以实现循环处理。例:读入学生的学号和成绩并且打印无条件循环:10READ*,NUM,GRADEPRINT*,NUM,GRADEGOTO 10有条件循环:N=110READ*,NUM,GRADEPRINT*,NUM,GRADEN=N+1IF(N.LE.5)GOTO 105.2 用DO语句实现循环 当需要执行的循环次数为已知时用DO语句实现循环比较方便。例如,上节读5个学生的学号和成绩,要执行READ语句和PRINT语句5次。可以改用DO语句实现:DO 10,N=1,5,1READ*,NUM,GRADE 10PRINT*,NUM,GRADE5.2.1 循环语句
3、(DO语句)和循环次数的计算 DO循环由一个DO语句和循环体组成:DO 10,I=1,10,1(循环语句)J=I*I(循环体)10 PRINT*,I,JDO语句的一般形式为:DO 标号,循环变量=初值,终值,步长 s v =e1,e2,e3循环次数可以从循环初值、终值和步长计算出来:r=INT(e2-e1+e3)/e3)例如:DO 10,I=1,10,2DO 20,N=1,5 DO 100,X=1.2,2.4,0.2DO 150,T=2.5*2,50.0/2.0,0.5 DO 200,M=1.5,12.5,1.5 5.2.2 循环执行过程 循环执行过程执行以下步骤:计算表达式e1,e2,e3的
4、值,并将它们转换成循环变量的类型。将初值e1赋予循环变量v。计算应循环的次数r。检查循环次数,若r=0或r0,则执行循环体。执行终端语句时循环变量v增值,即v=v+e3。循环次数r减1。返回步骤4,重复执行步骤4、5、6、7。从以上流程图和上述步骤可知,终端语句的作用,除了完成该语句本身的功能,还有两个作用:(1)使循环变量v增值e3,(2)使循环次数r减1。5.2.3 循环终端语句和继续语句(CONTINUE语句)l循环终端语句可以是除了GOTO、块IF、ELSE、ELSE IF、END IF、END、STOP和RETURN语句之外的任一可执行语句,如打印语句、赋值语句、输入语句等都可以作为
5、终端语句l非执行语句不能作为循环的终端语句为了使循环的起止范围清晰,使终端语句与一般执行语句所区别,用CONTINUE语句作为终端语句。继续语句CONTINUE的形式为:CONTINUE例如:READ*,A,BCONTINUEPRINT*,A,B DO 20,I=1,10,2 PRINT*,I20CONTINUE例5.1求5!INTEGER FACTFACT=1DO 10,I=1,5FACT=FACE*I10 CONTINUEPRINT*,FACTEND例5.2求1!+2!+N!READ*,NSUM=0.0FACT=1.0DO 100,I=1,N FACT=FACE*I SUM=SUM+FAC
6、T100 CONTINUEPRINT*,SUMEND例5.3一个整数I,求另一个整数J,使I和J在用8位二进制表示时互为逆序。例如I=3,用8位二进制表示为00000011,应求出J=192,其二进制数形式为11000000。即根据b7b1b0得到b0b1b7。思路:依次求出b0,b1,b2,b7,然后,将b0*27,b1*26,b7*20相加,得到J。给定I后,用函数MOD(I,2)即可求出b0,例如MOD(3,2)的值为1,得b0=1。再将I/2=I得到新的I,如此继续下去,直到求出b7为止。C OBTAIN THE BIT-REVERSE OF IPRINT*,NUMBER TO REV
7、ERSE:READ*,IJ=0DO 10,K=1,8 J=2*J+MOD(I,2)I=I/210CONTINUEPRINT*,REVERSE IS,JEND例5.4求ex=1+x+x2/2!+x3/3!+xn/n!READ*,N,XTERM=1.0E=1.0DO 10,I=1,NTERM=TERM*X/IE=E+TERM10CONTINUEPRINT*,EXP(,X,)=,EEND5.2.5 DO循环的嵌套在一个DO循环中又完整地包含另一个DO循环,称为DO循环的嵌套。DO 10,I=1,10 DO 20,J=1,5 20 CONTINUE 10 CONTINUE内循环应当完整地嵌套在外循环之
8、内,内外循环不能交叉。DO 10,I=1,10 DO 20,J=1,5 10 CONTINUE 20 CONTINUE例5.5求1!,3!,5!,7!C CALCULATES 1!,3!,5!,7!DO 20,J=1,7,2 FACT=1.0 DO 10,K=1,J FACT=FACT*K10 CONTINUE PRINT*,J,!=,FACT20 CONTINUEEND例5.6例5.4程序可以改用DO循环嵌套实现READ*,N,XE=1.0DO 10,I=1,NFACT=1.0P=1.0DO 20,J=1,I FACT=FACT*J P=P*X20CONTINUETERM=P/FACTE=E
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran 程序设计

限制150内