循环结构的实现.ppt
《循环结构的实现.ppt》由会员分享,可在线阅读,更多相关《循环结构的实现.ppt(106页珍藏版)》请在三一办公上搜索。
1、1,第 五 章,循环结构的实现,FORTRAN 语言程序设计,2,本章主要内容,5.1 用GOTO语句实现循环 5.2 用DO语句实现循环 5.3 当型循环的实现 5.4 直到型循环的实现 5.5 几种循环形式的关系和比较,3,在科学计算或事务管理领域中,循环处理是经常遇到和使用频度最高的应用。也是程序设计人员充分利用计算机的特点来解决实际应用问题。循环:重复执行一组指令或一个程序段循环分为:无条件的循环和有条件的循环,4,在C中,我们已经学习了三种循环结构:While 循环:while(表达式)语句如I=0 while(I5)print(“i=%dt,I);I+;For 循环 FOR(i=1
2、;i4;i+)循环体Do-While循环Do 语句while(表达式);,5,5.1 用GOTO语句实现循环,用GOTO语句来实现转移GOTO(标号)GOTO 语句破坏了语句顺序执行的正常情况,不符合结构化原则一般不提倡使用该语句只有在一个基本结构内部可以使用该语句来实现循环处理。,.GOTO 100,n=110 n=n+1print*,ngoto 10end,6,5.1 用GOTO语句实现循环,通常在逻辑IF语句中使用GOTO语句来实现有条件的循环,就是“直到循环”。XXX IF(条件)GOTO XXX,N=1100 print*,正在循环!N=N+1Print*,NIF(N=100)got
3、o 100end,7,5.1 用GOTO语句实现循环,N=1100 Read(*,*)num,grade Print*,num,grade N=N+1 IF()goto 100 END,NEXT,8,5.2 用DO语句实现循环,关于DO循环结构的内容:,1)无循环变量的DO结构(For F90),2)带循环变量的DO结构(For F77),3)DO结构嵌套,4)隐含DO循环(后),9,5.2 用DO语句实现循环,当循环次数为已知时,常使用DO语句实现循环Do循环的使用场合;DO循环语句的结构:DO 标号,循环变量E1,E2,E3 循环语句体标号 Continue(或其它可执行语句),DO 循环
4、体ENDDO,FOR(i=1;i4;i+)循环体,10,5.2 用DO语句实现循环,Do 100,N=1,30,1 Read(*,*)Num,grade 100 Write(*,*)Num,grade.END,终端语句,11,Program main Real x,pi X=0 pi=3.14159/180 Do 100 x=0,360,10100 print*,x,sin(x*pi)End program main,例如:打印sinx的值,每10度为一个间隔,x的范围为0360度。For F77,12,13,Program mainReal:x,piX=0;pi=3.14159/180Dop
5、rint*,x,sin(x*pi)x=x+10if(x360)exit enddoEnd program main,例如:打印sinx的值,每10度为一个间隔,x的范围为0360度。For F90,14,计算:11+22+33+.+nn,Read*,N ms=0 do 10,i=1,n10 ms=ms+I*I write(*,*)ms end,15,16,5.2 用DO语句实现循环,循环表达式举例:1)Do 100,N=1,10,22)Do 100,N=1,103)Do 100,X=1.2,3.6,0.24)Do 100,Y=2.5*2,50.0/2.0,0.55)Do 100,N=-1,-8
6、,-1,17,5.2 用DO语句实现循环,.2.1 循环语句和循环次数的计算 do s,v=e1,e2,e3说明:当e3省略时,其值为1;e1、e2可以是常量、变量、表达式;当是变量时应先应赋初值;当为表达式时先要计算出表达式的值;循环次数的计算:R=INT(e2-e1+e3)/e3),S:循环终端语句的标号,18,5.2 用DO语句实现循环,e3不能为0(从公式中也看出,分母不能为0)e1、e2、e3的值可以为正或负,e1、e2可以为0有效循环:e3的取值为正时候,循环变量的值要不断“逼近”e2、最后“大于”e2的值;e3的取值为负时候,循环变量的值要不断“逼近”e2、最后“小于”e2的值;
7、当计算出循环次数R0时,按R=0处理;如果循环变量的类型与e1、e2、e3的类型不一致,则先将e1、e2、e3转换成循环变量的类型。(注意:应用中尽量使它们的数据类型一致),19,5.2 用DO语句实现循环,循环变量V和E1 E2 E3可以是整型量、实型量、双精度型量,但在FORTRAN子集中只能使用整型量。,20,5.2 用DO语句实现循环,如:Do 100,I=1.5,3.6,1.2 如果直接按公式计算循环次数,则 R=INT(3.6-1.5+1.2)/1.2)=2,事实上应先将E1 E2 E3 转换成循环变量的数据类型(I),结果是:Do 100,I=1,3,1 循环3次.如果换I为Y,
8、则是次同时,当实数作为E1 E2 E3,由于实数的存储和运算存在误差,从而导致循环次数与理论值之间的误差.如:Do 100,X=0.0,500.0,0.1 按公式计算循环次数为:5001 但实际上只循环5000这是因为0.1在计算机中不能用有限的二进制位数表示,每次增量0.1后,就产生积累误差(本来是每次增量0.1,结果是每次增量大于0.1).,21,T=0 Do 100,I=1.5,3.6,1.2 T=T+1 Print*,T100 Continue End,I实际上是从,变化的,22,23,integer T t=0 do 10 Y=0.0,500,0.1 T=t+110 print*,t
9、 end,24,5.2 用DO语句实现循环,注意:对于如下的 DO 语句:DO 100,I=10,1,2DO 100,I=5,10,-2根据循环计算公式的计算,得到的次数一开始就小于0,故按R=0处理,不执行循环体。(有些高级语言是按出错处理),25,编译、连接都正常,26,5.2 用DO语句实现循环,循环执行过程(分七步):1)计算e1、e2、e3各表达式的值;2)将初值e1赋给循环v;3)计算应循环的次数R;4)检查循环次数:若R=0(或小于0),跳过循环体,执行循环终端语句的下一条语句,否则执行循环体。5)执行循环终端语句时,v=v+e3;6)循环次数:R=R-17)返回(4),重复执行
10、4、5、6步骤,因此在循环体内不能修改循环变量的值。,27,5.2 用DO语句实现循环,循环终端语句和继续语句(continue语句)循环终端语句一般为一可执行语句,但不能为GOTO、块IF、ELSE、ELSE IF、END IF、END、STOP、RETURN语句 常见的循环终端语句(执行语句)是打印语句、赋值语句、输入语句等。说明:如果循环终端语句是“逻辑IF语句”,它不应该包括DO、块IF、ELSE、ELSE IF、END IF、END和另一个逻辑IF语句。,28,5.2 用DO语句实现循环,循环终端语句和继续语句(continue语句)Do 100,I=1,100 M=M*M writ
11、e(*,*)I,M M=M+1100 IF(M.GT.1000)GOTO 300 300,虽然是合乎语法规则,但违反了结构化原则,程序可以运行,但我们不提倡这种程序结构。,29,例如:,M=1 Do 100 I=1,100 M=M*M Write(*,*)I,*,M M=M+1100 IF(M.GT.1000)Goto 300 Write(*,*)循环100次了!Goto 400300 Write(*,*)M的值超过1000400 END,30,31,5.2 用DO语句实现循环,循环终端语句和继续语句(continue语句)继续语句(CONTINUE):该语句本身不进行任何机器操作,只是将操作
12、转到逻辑上的下一个语句。,do s,v=e1,e2,e3 S Continue,32,5.2 用DO语句实现循环,循环终端语句和继续语句(continue语句)使用继续语句作为循环终端语句的好处:循环规范、清晰;不必考虑哪些语句是否能作为循环终端语句;由于不使用其它语句作为循环终端语句,使循环体清楚明了,也减少出错的概率。,33,5.2 用DO语句实现循环,循环终端语句和继续语句(continue语句)继续语句(CONTINUE):Do 100,.100 CONTINUE,Do 22,i=1,10 Print*,I22 Continue End,34,5.2 用DO语句实现循环,5.2.4 D
13、O循环的一些规定:1)循环变量可以在循环体中被引用,但不应 当在循环体内再次赋值。2)循环的次数是根据循环变量的初值、终值和步长三个值计算出来的。在执行循环体期间是确定不变的。可以用转移语句从循环体内转移到循环体外,也可以在循环体内转移,但不能从循环体外转移到循环体内。嵌套循环也必须遵守该规则!,!,35,5.2 用DO语句实现循环,5.2.4 DO循环的一些规定:有关脱离循环的说明:正常出口:执行完全部的循环次数后脱离循环,也就是从循环终端语句正常出口;非正常出口:从非循环终端语句出口。结构化程序不应该有“非正常出口”。如在循环体中有语句:GOTO 标号(可以运行,但尽量不使用这样的结构),
14、36,5.2 用DO语句实现循环,5.2.4 DO循环的一些规定:Do 100,.IF(条件)GOTO 300.100 CONTINUE.300.,尽管不合乎结构化原则,但是是是允许的。,37,5.2 用DO语句实现循环,5.2.4 DO循环的一些规定:IF(条件)GOTO 380 Do 100,380 PRINT*,你好!100 CONTINUE.300.,这种结构不合法的,是不允许的!,38,T=0 Goto 400 do 100,I=1,8400 T=T+1 Print*,T100 Continue End,39,尽管可以执行,但T的结果不正确,40,5.2 用DO语句实现循环,5.2.
15、4 DO循环的一些规定:DO循环变量在循环体内不能再次定义 DO 10 I=3,6 I=5!错误 J=J+I10 Continue END,41,5.2 用DO语句实现循环,5.2.4 DO循环的一些规定:循环变量的初值E1、终值E2和步长E3只是在循环入口有效,进入循环后,它的值与循环次数无关。m=3do 10,k=1,mm=5write(*,*)k,m10 continueend,Integer i,j,m m=2 do 10 i=1,10,m j=j+i m=m+110 Continue print*,j,i,m end,!,42,N=3 Do 10 k=1,N N=5 Write(*,
16、*)K,N10 Continue End,43,Integer i,j,m m=2 do 10 i=1,10,m j=j+i m=m+110 Continue print*,j,i,m end,循环语句从开始就决定了循环次数,即5次;改变M的值,对循环次数没有影响,44,注意如下情况:,M=10Do 100 I=1,M+IPrint*,I100 Continue END,45,46,5.2 用DO语句实现循环,用DO语句实现循环的程序举例:,1)Exa5_1.For2)Exa5_2.For3)Exa5_3.For4)Exa5_4.For,47,5.2 用DO语句实现循环,c求5!Integer
17、 Fact Fact=1 Do 10,i=1,5 Fact=Fact*i10 Continue Print*,Fact End,48,5.2 用DO语句实现循环,c求n!的累加和(n=1到100)Read*,N Sum=0.0 Fact=1.0 DO 100,I=1,N Fact=Fact*I Sum=Sum+Fact100 Continue Print*,Sum End,49,5.2 用DO语句实现循环,c已知 I,求互逆数J(使其为二进制数的互逆)Read*,I J=0 Do 100,K=1,8 J=2*J+Mod(I,2)I=I/2(注意:I是整型数)100 Continue Print
18、*,互逆数J:,j End,I和J是十进制的数。输入:5 00000101 输出:16010100000,K:1,2,3,4,5,6,7,8J:1,2,5,10,20,40,80,160I:2,1,0,0,0,0,0,0,50,5.2 用DO语句实现循环,c求E的X次方 Read*,N,X Term=1.0!单项 E=1.0!结果 Do 10,I=1,N Term=Term*X/I E=E+Term10 Continue Print*,EXP(x)=,E End,51,5.2 用DO语句实现循环,5.2.5 DO循环的嵌套 在一个DO循环中又包含另一个DO循环。,Do 10,I=1,1020
19、10 continue,.,Do 20,J=1,5continue,内循环的总次数的分析:外次数内次数,52,53,5.2 用DO语句实现循环,5.2.5 DO循环的嵌套 注意:在一个DO循环中,内循环应完整地嵌套在外循环之内。不应该出现:do 10,I=1,10do 20,j=1,5.10 continue 20 continue,注意:嵌套循的环规则:不能交叉嵌套,54,5.2 用DO语句实现循环,5.2.5 DO循环的嵌套举例,Exa5_5.ForExa5_6.ForExa5_7.ForExa5_8.For,55,5.2 用DO语句实现循环,c 求1!3!5!7!Fact=1.0 Do
20、20,J=1,7,2 Fact=1.0c先计算J的阶乘 Do 10,K=1,J Fact=Fact*K10 Continue Print*,J,!=,Fact20 Continue End,很多情况下是外循环的初值是内循环的终值,使用嵌套循环:外层:控制1,3,5,7内层:计算阶乘,56,5.2 用DO语句实现循环,Read*,N,X E=1.0 Do 10,I=1,N Fact=1.0 P=1.0 Do 20,J=1,I Fact=Fact*J P=P*X20 Continue Term=P/Fact E=E+Term10 Continue Print*,exp(x)=,E End,内层求单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 结构 实现
链接地址:https://www.31ppt.com/p-5726568.html