fortran程序设计第5章.ppt
《fortran程序设计第5章.ppt》由会员分享,可在线阅读,更多相关《fortran程序设计第5章.ppt(46页珍藏版)》请在三一办公上搜索。
1、FORTRAN语言-FORTRAN 77结构化程序设计,第五章 循环结构的实现,重复执行一组指令称为循环操作。在程序中存在两类循环:无条件循环和有条件循环。无条件循环是无休止地执行一个程序段,而有条件循环是在满足一定条件时才执行循环。经常会遇到循环类型的问题,例如需要对全班学生求平均成绩,求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 10,5.2 用DO语句实现循环,当需要执行的循环次数为已知时用DO语句实现循环比较方便。例如,上节读5个学生的学号和成绩,要执行READ语句和PRINT语句5次。可以改用DO语句实现:DO 10,N=1,5,1READ*,NUM,GRADE 10PRINT*,NUM,GRADE,5.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,
4、e3的值,并将它们转换成循环变量的类型。将初值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语句),循环终端语句可以是除了GOTO、块IF、ELSE、ELSE IF、END IF、END、STOP和RETURN语句之外的任一可执行语句,如打印语句、赋值语句、输入语句等都
5、可以作为终端语句非执行语句不能作为循环的终端语句,为了使循环的起止范围清晰,使终端语句与一般执行语句所区别,用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
6、=SUM+FACT100 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为止。,COBTAIN THE BIT-REVERSE OF IPRINT*,NUM
7、BER TO REVERSE: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,)=,EEND,5.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*X20CONT
9、INUETERM=P/FACTE=E+TERM10CONTINUEPRINT*,EXP(X)=,EEND,例5.7打印“九九乘法表”,DO 10,I=1,9 DO 20,J=1,IK=I*JPRINT*,I,*,J,=,K20 CONTINUEPRINT*,10 CONTINUEEND,例5.8百钱买百鸡问题,公元五世纪末,我国古代数学家张丘建在算经中提出了“百鸡问题”:“鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?”。意为:公鸡每只5元,母鸡3元,小鸡一元三只。100元买100只鸡。设X为公鸡数,Y为母鸡数,Z为小鸡数。根据题意:X+Y+Z=1005X+
10、3Y+Z/3=100-15X+9Y+Z=3003个未知数,2个方程式,是一个不定方程,它没有唯一解,而有多组解。对这类问题无法用解析法解,只能将所有可能的X,Y,Z值一个一个地去试,看是否满足上面两个方程式,如满足就是一组解。,原始版:,INTEGER X,Y,ZDO 10,X=0,100 DO 20,Y=0,100 DO 30,Z=0,100 IF(X+Y+Z).EQ.100)THEN IF(15*X+9*Y+Z.EQ.300)PRINT*,X,Y,Z END IF30 CONTINUE20 CONTINUE10CONTINUEEND,改进版:,INTEGER X,Y,ZDO 10,X=0,
11、19 DO 20,Y=0,33 Z=100-X-Y IF(15*X+9*Y+Z.EQ.300)PRINT*,X,Y,Z20 CONTINUE10CONTINUEEND,5.3 当型循环的实现,DO循环用来处理循环次数确定的情况是比较方便的。但是在处理的问题中,有许多是事先无法确定循环次数的,而是只给出一个条件,满足此条件时就继续执行循环体,若不满足,则循环停止。例如统计得分并计算平均成绩的程序。事先不知道有多少人得分,只能用SCORE的值来控制循环是否继续:当SCORE=0,表示输入了一个正常的成绩,应该统计和处理;当SCORE0,则表示数据结束,不再执行循环体,程序进行结束处理。可以用不同方
12、法实现“当型”循环。有不少计算机系统提供了DO WHILE语句,能很方便地实现当型循环,但FORTRAN 77标准并未规定有此语句,只能用块IF或逻辑IF语句来实现“当型”循环。,5.3.1 用WHILE语句实现当型循环,WHILE语句的格式:DO 标号,WHILE(逻辑表达式)循环体 标号 CONTINUE,例5.9统计若干个学生的得分并计算平均成绩,INTEGER COUNTSUM=0.0COUNT=0READ*,SCOREDO 10,WHILE(SCORE.GE.0.0)SUM=SUM+SCORECOUNT=COUNT+1READ*,SCORE10CONTINUEAVER=SUM/COU
13、NTPRINT*,COUNT=,COUNTPRINT*,AVERAGE=,AVEREND,例5.11输入两个正整数M和N,求其最大公约数,用辗转相除法来求最大公约数。例如,27和6,先用27除以6,余数为3。由于余数不等于0,再将6作为被除数,3作为除数,再求余数,此时余数为0,则除数3就是最大公约数。,INTEGER M,N,R READ*,M,N IF(M.LT.N)THEN T=M M=N N=T END IF R=MOD(M,N)DO 10,WHILE(R.NE.0)M=N N=R R=MOD(M,N)10 CONTINUE PRINT*,THE GREATEST COMMON DIV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran 程序设计
链接地址:https://www.31ppt.com/p-5431297.html