循环结构的实现

上传人:痛*** 文档编号:245040210 上传时间:2024-10-07 格式:PPT 页数:37 大小:311KB
返回 下载 相关 举报
循环结构的实现_第1页
第1页 / 共37页
循环结构的实现_第2页
第2页 / 共37页
循环结构的实现_第3页
第3页 / 共37页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,防灾科技学院,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,1,第三章 循环结构的实现,循环操作,:,重复执行一组指令,(,或一个程序段,),循环分类,:,无条件的循环,有条件的循环,2,3,.1 循环的概念,例,:,打印30个学生的学号和成绩,N=1,100 READ,(*,*)NUM,GRADE,WRITE,(*,*)NUM,GRADE,N=N+1,IF(N,30),GOTO,100,END,输入,NUM,GRADE,打印,NUM,GRADE,直到,GOTO,语句破坏了语句顺序执行的正常状况,不符合结构化原则,因此一般不提倡使用,GOTO,语句,!,GOTO ,属于直到型循环,3,3,.2,DO,循环结构,DO,10 N=1,30,READ,(*,*)NUM,GRADE,10,WRITE,(*,*)NUM,GRADE,END,DO,语句,循环体,DO,s,v=e,1,e,2,e,3,循环终端语句标号,循环变量,循环变量初值,循环变量终值,循环变量增量,4,DO,语句几点说明,:,1.,e,1,、e,2,、e,3,可以是常数、变量或表达式,DO,s,v=e,1,e,2,e,3,2.,e,1,、e,2,、e,3,的值可以正或负,,,e,1,、e,2,的值可以为0,,e,3,的值不应为0,3.脱离循环的条件,:,循环变量沿变化的方向超过终值,DO,10,T=5.0,25.0,0.5,DO,10,T=C,50.0/2.0,0.5,C=5.0,5,4.循环次数计算公式为,:,r=INT(e,2,-,e,1,+e,3,)/e,3,),5.如果,v,的类型和,e,1,、e,2,、e,3,的类型不一致,,,先将,e,1,、e,2,、e,3,的类型化成,v,的类型,,,然后处理,6.如果计算出循环次数,r 0,循环体语句,DO,循环属于当型循环,DO,s,v=e,1,e,2,e,3,s,适用范围,:,循环次数已知,DO,语句,循环体,7,循环终端语句,&,继续语句(,CONTINUE,语句),循环终端语句,循环体中带有语句标号的最后一个语句,定义,:,DO,10 I=1,50,20 K=I*1,10,PRINT,*,I,K,循环体,规定,:,下列语句不能作为,DO,循环的终端语句,:,8,逻辑,IF,语句可作为,DO,循环的终端语句,但其内嵌语句不能是上述控制语句,!,DO,10 I=1,50,K=I*1,PRINT,*,I,K,10 IF,(K.GT.500),GOTO,100,GOTO,语句,DO,语句,STOP,语句,END,语句,END IF,语句,块,IF,语句,ELSE,语句,ELSE IF,语句,等,9,继续语句(,CONTINUE,语句),CONTINUE,形式,:,作用,:,将流程转移到,逻辑上,的下一个操作,DO,20,I=1,10,2,PRINT,*,I,20,CONTINUE,优点,:,.,循环范围清晰,,,易识别,;,.,使一般可执行语句不再作为终端语句,,,仅执行其语句本身功能,;,.,不用记哪些语句不能作终端语句,10,DO,循环的一些规定,1.循环变量可以在循环体中被引用,,,但不应再被赋值,;,.循环变量的初值,、,终值和步长值在执行循环体期间不能改变,;,DO,20,N=1,100,M=2*N,PRINT,*,M,20,CONTINUE,DO,20,N=1,100,N=2*N,PRINT,*,N,20,CONTINUE,DO,20,I=K,J,M,K=2*K,J=J+1,M=M/2,PRINT,*,K,J,M,20,CONTINUE,11,3,.可以用转移语句从循环体内转到循环体外,,,也可以在循环体内转移,,,但不允许从循环外转到循环内,;,4,.正常出口&非正常出口,;,DO,10,I=1,100,IF,(I*I.GE.500),GOTO,100,10,CONTINUE,100,PRINT,*,I,I*I,非正常出口,正常出口,DO WHILE循环(当型循环),do while(e),block,label term_stmt,e为逻辑表达式,(或关系表达式),DO WHILE循环的执行,1.计算e的值,2.若e为真,执行循环体,若e为假,不执行,转去执行ENDO后的语句,13,*统计平均成绩,integer,count,sum=0.0,count=0,read,(*,*)score,do,while,(score.ge.0.0),sum=sum+score,count=count+1,read,(*,*)score,enddo,aver=sum/count,write,(*,*)count=,count,write,(*,*)average=,aver,end,14,*辗转相除求最大公约数,integer,m,n,r,t,read,(*,*)m,n,if,(m,.lt.,n),then,t=m,m=n,n=t,end,if,r=,mod,(m,n),do,while,(r,.ne.,0),m=n,n=r,r=,mod,(m,n),enddo,write,(*,*)The greatest,common divisor is,n,end,15,DO,循环的嵌套,(,多重循环,),一个循环体内又完整的包含另一个循环结构,注意事项,:,1.嵌套循环的各层不允许使用同一个变量名作为循环控制变量,;,DO,20 I=1,5,DO,10 I=2,10,2,10 CONTINUE,20 CONTINUE,16,3.嵌套,DO,循环中,,,可以共用一个循环终端语句,;,2.对于任何形式的循环,,,都不允许循环的交叉,;,DO,10 I=1,5,DO,20 J=1,3,M=I*J,10CONTINUE,20CONTINUE,DO,10 I=1,10,DO,20 J=0,20,2,20 CONTINUE,10 CONTINUE,DO,10 I=1,10,DO,10 J=0,20,2,10 CONTINUE,4,.可以从内层循环根据需要将控制转到外层循环,,,但不允许从外层循环将控制转到内层循环,17,C,打印九九表,do,10 i=1,9,do,20 j=1,9,k=i*j,write,(*,*)i,*,j,=,k,20,continue,write,(*,*),10,continue,end,C,百钱买百鸡,C100,元钱买100只鸡,C,公鸡5元/只,C,母鸡3元/只,C,小鸡1元/3只,integer,x,y,z,do,10 x=0,19,do,20 y=0,33,z=100-x-y,if,(15*x+9*y+z,.eq.,300),$,write,(*,*)x,y,z,20,continue,10,continue,end,18,几种循环形式的关系和比较,1.,DO,循环用来处理已确定循环次数的问题。其他循环即可以处理已知循环次数的问题,也可以处理不确定循环次数的问题。对事先知道确定循环次数的问题,用,DO,循环比较方便。,2.,DO,循环实质上也是一种“当型循环”。,3.几种形式的循环可以互相转换,或者说,同一个问题可用任一种循环来处理。,4.各种循环可以互相嵌套。但必须一个循环完整的包含在另一个循环之内。,19,END DO,语句(,Fortran 90,),DO,20,I=1,10,2,PRINT,*,I,20,CONTINUE,DO,I=1,10,2,PRINT,*,I,END DO,do,10,while,(score.ge.0.0),sum=sum+score,read,(*,*)score,10,continue,do,while,(score.ge.0.0),sum=sum+score,read,(*,*)score,end do,20,CYCLE,和,EXIT,语句(,Fortran 90,),CYCLE,命令略过循环的程序模块中,在,CYCLE,命令后面的所有程序代码,直接跳回循环的开头来进行下一次循环。,program,ex,implicit none,integer,dest,floor,parameter,(dest=9),do,floor=1,dest,if,(floor=4),cycle,write,(*,*)floor,end do,end,假设某百货公司共有,9,层楼,但电梯在,4,层不停,试写一个程序来仿真百货公司中电梯从,1,楼爬升至,9,楼时灯号显示情况。,EXIT,的功能是可以直接“跳出”一个正在运行的循环。,21,DO,10,A=2.5,-1.6,-0.5,10,CONTINUE,1.在下列程序段中,,,循环体被执行的次数为,练习题,(,选择,),A)1 B)2 C)4 D)9,解,:,没有任何说明,隐含,A,为实型,根据计算公式,r=INT,(-1.6-2.5+(-0.5)/(-0.5)=9,22,DO,10,K=2.5,-1.6,1.5,10,CONTINUE,2.在下列程序段中,,,循环体被执行的次数为,A)0 B)3 C)4 D),无穷大,解,:,没有任何说明,隐含,K,为整型,首先将三个循环参数转换为整型量2,-1,1,根据计算公式,r=INT,(-1-2+1)/1)=-20,,,即循环次数为,0。,23,DO,10 K=5,1,-1,M=0,DO,20 J=K,5,M=M+K*J,20,CONTINUE,10,CONTINUE,WRITE,(*,*)M,END,3.阅读下列,FORTRAN,程序,A)120 B)15 C)140 D),135,上述程序运行后,输出的,M,值为,24,解,:,这是一个双重循环。在外循环的循环体中,每次都对,M,清零,因此只考虑外循环的最后一次循环中所执行的内循环。外循环最后一次循环的,K,为1,最后一次执行的循环体相当于右图,:,M=1+2+3+4+5=15,DO,10 K=5,1,-1,M=0,DO,20 J=K,5,M=M+K*J,20,CONTINUE,10,CONTINUE,WRITE,(*,*)M,END,M=0,DO,20 J=1,5,M=M+J,20,CONTINUE,25,DO,10 I=1,2,S=0.0,DO,10 J=1,3,S=S+I+J,10,CONTINUE,WRITE,(*,*)S,END,4.阅读下列,FORTRAN,程序,A)21.0 B)9.0 C)12.0 D),6.0,上述程序运行后,输出的,S,值为,26,解,:,这是一个双重循环。内外循环共用一个,CONTINUE,语句。由于外循环的循环体中每次都对,S,清零,因此,只有在最后一次执行内循环时,S,的累加结果才是最后输出的结果。,S=(2+1)+(2+2)+(2+3)=12,27,S=0.0,DO,10 I=1,2,DO,10 J=1,3,S=S+I+J,10,CONTINUE,WRITE,(*,*)S,END,5.阅读下列,FORTRAN,程序,A)21.0 B)9.0 C)12.0 D),6.0,上述程序运行后,输出的,S,值为,28,解,:,这个程序和上个题目的根本区别是,:,在双重循环的外面给,S,清零。因此,将对两次外循环执行时的,I,和,J,的值进行累加,即,S=(1+1)+(1+2)+(1+3)+(2+1)+(2+2)+(2+3)=9+12=21,29,DO,10 T=1.5,10.5,1.5,DO,10 I=1,10,10,CONTINUE,6.在下列的双重循环中,内层的循环体执行的总次数为,A)10 B)40 C)30 D)7,0,解,:,外,循环执行的次数为,r,1,=INT(10.5-1.5+1.5)/1.5)=7,内,循环执行的次数为,r,2,=INT(10-1+1)/1)=10,因此,内层循环体共执行7,1,0=70,(,次,),30,DO,10 A=-1.6
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!