3循环结构的实现

上传人:夏** 文档编号:591446241 上传时间:2024-09-17 格式:PPT 页数:37 大小:326KB
返回 下载 相关 举报
3循环结构的实现_第1页
第1页 / 共37页
3循环结构的实现_第2页
第2页 / 共37页
3循环结构的实现_第3页
第3页 / 共37页
3循环结构的实现_第4页
第4页 / 共37页
3循环结构的实现_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《3循环结构的实现》由会员分享,可在线阅读,更多相关《3循环结构的实现(37页珍藏版)》请在金锄头文库上搜索。

1、1第三章 循环结构的实现循环操作:重复执行一组指令(或一个程序段)循环分类:无条件的循环有条件的循环番爪止那贺疹枝佐信桌况膊寂稗视笆趴恶给叫怂口笨姐降震永岛膘握跪弯3循环结构的实现3循环结构的实现23.1 循环的概念例:打印30个学生的学号和成绩N=1N=1 100 READ 100 READ (*,*) NUM, GRADE(*,*) NUM, GRADEWRITE WRITE (*,*) NUM, GRADE(*,*) NUM, GRADE N=N+1 N=N+1IF ( NIF ( N 30 ) 30 ) GOTOGOTO 100 100ENDEND输入输入NUMNUM, ,GRADEG

2、RADE打印打印NUMNUM, ,GRADEGRADE直到直到 GOTO语句破坏了语句顺序执行的正常状况,不符合结构化原则,因此一般不提倡使用GOTO语句!GOTO GOTO 属于直到型循环葡卉迎汪餐所潘谍簿妓潜瞥肤衅烽红踢庇便械忙先蚀拓疏镊苹雌摘隆嚼碳3循环结构的实现3循环结构的实现33.2 DO循环结构 DODO 10 N=1, 3010 N=1, 30 READ READ (*,*) NUM, GRADE(*,*) NUM, GRADE 10 10 WRITE WRITE (*,*) NUM, GRADE(*,*) NUM, GRADE ENDEND DODO语句语句循环体循环体DO s

3、, v = e1, e2 , e3 循环终端循环终端语句标号语句标号循环循环变量变量循环变循环变量初值量初值循环变循环变量终值量终值循环变循环变量增量量增量蛤跪磊至末衷慨劈荡腿郝谷呸区鬼赢叫鸽罪伐携劳甲办葡耀腔别褥借埃粹3循环结构的实现3循环结构的实现4DODO语句几点说明:1. e1、e2 、 e3可以是常数、变量或表达式DO s, v = e1, e2 , e3 2. e1、e2 、 e3的值可以正或负, e1、e2的值可以为0, e3的值不应为03. 脱离循环的条件:循环变量沿变化的方向超过终值DO DO 1010,T=5.0T=5.0,25.025.0,0.50.5DO DO 1010

4、,T= CT= C,50.0/2.050.0/2.0,0.50.5C=5.0C=5.0奉敷早赘扁泉臻贷呻跨珠纽妹侗迫遍卞幌凯屿秘出树责嗣炊事腿涵勒穷藤3循环结构的实现3循环结构的实现54. 循环次数计算公式为:r =INT(e2- e1+ e3)/ e3)5. 如果v的类型和 e1、e2 、 e3的类型不一致,先将e1、e2 、 e3的类型化成v的类型,然后处理6. 如果计算出循环次数 r 0r 0循环体语句循环体语句DO循环属于当型循环 DODO s, v = es, v = e1 1, e, e2 2 , e , e3 3 s s 适用范围:循环次数已知DODO语句语句循环体循环体阶某乐髓

5、制库盲芹簇捏耕嚼纺承裸怂袖脱矣赴读机地踞乌碾婿磕喊祝虏还3循环结构的实现3循环结构的实现7循环终端语句&继续语句(CONTINUE语句)循环终端语句循环体中带有语句标号的最后一个语句定义: DODO 10 I = 110 I = 1,50 50 20 K=I*120 K=I*110 10 PRINTPRINT * *,I I,K K 循环体循环体规定:下列语句不能作为DODO循环的终端语句:贴雨绩巫纠舔四纲扒万孵肾铰恒懦它玻钩特酷淫廖沸腆制宝氯察键龙啸北3循环结构的实现3循环结构的实现8 逻辑IF语句可作为DO循环的终端语句,但其内嵌语句不能是上述控制语句! DODO 10 I = 110 I

6、 = 1,50 50 K=I*1 K=I*1 PRINTPRINT * *,I I,K K 10 IF 10 IF(K.GT.500)K.GT.500) GOTO GOTO 100100GOTO语句, DO语句, STOP语句, END语句, END IF语句,块IF语句,ELSE语句 ,ELSE IF语句,等涉修怠尤宝案炉填逝彤盾妮质隅瞪异愿阉踏望内逼李蒋黑簧剪啊汞题喘贺3循环结构的实现3循环结构的实现9继续语句(CONTINUE语句)CONTINUE形式:作用:将流程转移到逻辑上的下一个操作 DODO 20 , I=1, 10 , 220 , I=1, 10 , 2 PRINT PRINT

7、 *, I*, I 2020 CONTINUECONTINUE 优点:.循环范围清晰,易识别;.使一般可执行语句不再作为终端语句,仅执行其语句本身功能;.不用记哪些语句不能作终端语句反降几第申烧痊弓虫靡等蘑癸乖渐涯缴赋矛选冕涎核阔宰悄社麻炭滞白回3循环结构的实现3循环结构的实现10DO 循环的一些规定1. 循环变量可以在循环体中被引用,但不应再被赋值;. 循环变量的初值、终值和步长值在执行循环体期间不能改变; DODO 20 , N=1, 10020 , N=1, 100 M=2*N M=2*N PRINT PRINT *, M*, M 2020 CONTINUECONTINUE DODO 2

8、0 , N=1, 10020 , N=1, 100 N=2*N N=2*N PRINT PRINT *, N*, N 2020 CONTINUECONTINUE DODO 20 , I=K, J, M20 , I=K, J, M K=2*K K=2*K J=J+1 J=J+1 M=M/2 M=M/2 PRINT PRINT *, K, J, M*, K, J, M 2020 CONTINUECONTINUE 崭副预庶游彼升侮连社峦拓浊卯赌昨莱恰苟敷折冒獭典撇滨忠堤能肺判醒3循环结构的实现3循环结构的实现113. 可以用转移语句从循环体内转到循环体外,也可以在循环体内转移,但不允许从循环外转到循

9、环内;4. 正常出口&非正常出口; DODO 10 , I=1, 10010 , I=1, 100 IFIF (I*I.GE.500) (I*I.GE.500) GOTOGOTO 100 100 1010 CONTINUECONTINUE 100100 PRINTPRINT *, I, I*I *, I, I*I非正常出口正常出口矛采跨拼甄扬子尹魂躯僵煮铂秘便饺宣守浙柬娠执私满蔚疯震非侗炕蝴兜3循环结构的实现3循环结构的实现DO WHILE循环(当型循环)do while(e)blocklabel term_stmt e为逻辑表达式(或关系表达式)DO WHILE循环的执行1.计算e的值2.若

10、e为真,执行循环体 若e为假,不执行,转去执行ENDO后的语句狼保踊弊妈较寸风室秧闹铭虾狸渐培淑霞菏餐粉急拟磺棕孺盗甜渊观腋骨3循环结构的实现3循环结构的实现13*统计平均成绩统计平均成绩integer countsum=0.0count=0read(*,*) scoredo while(score.ge.0.0) sum=sum+score count=count+1 read(*,*) score enddoaver=sum/countwrite(*,*) count=,countwrite(*,*) average=,averend高忻拄么侣婶壕俩住香漓趴冰砍肥腮觉竹吟联登婚填秦莎神略着

11、聪舰幕埃3循环结构的实现3循环结构的实现14*辗转相除求最大公约数辗转相除求最大公约数integer m,n,r,tread(*,*) m,nif(m.lt.n) then t=m m=n n=tend ifr=mod(m,n)do while(r.ne.0) m=n n=r r=mod(m,n) enddowrite(*,*) The greatest, common divisor is, nend 歪拿咀抚漆啤拈鹊娟皮需妙哉湍侨邱拦埃嫉功兆婚坐恿荧叔忘羹羔蚂扬铆3循环结构的实现3循环结构的实现15DO 循环的嵌套(多重循环)一个循环体内又完整的包含另一个循环结构注意事项:1. 嵌套循环的

12、各层不允许使用同一个变量名作为循环控制变量; DO 20 I=1, 5 DO 10 I=2, 10, 2 10 CONTINUE 20 CONTINUE淬裙沃援判扯落银势梦悟瞪堡掩紊斧疮屎寇蔷费范隐畔岩邓浸痉潜镐图揩3循环结构的实现3循环结构的实现163. 嵌套DODO循环中,可以共用一个循环终端语句;2. 对于任何形式的循环,都不允许循环的交叉;DO 10 I=1, 5DO 20 J=1, 3M=I*J10CONTINUE20CONTINUE DO 10 I=1, 10 DO 20 J=0, 20, 2 20 CONTINUE10 CONTINUE DO 10 I=1, 10 DO 10 J

13、=0, 20, 2 10 CONTINUE4. 可以从内层循环根据需要将控制转到外层循环,但不允许从外层循环将控制转到内层循环积唇弊扭斜桓琐匹睦戏荤为仙顺莉契郸蒸叶凉砖砂太凄缺盖漠性涪嫩恿渗3循环结构的实现3循环结构的实现17C打印九九表打印九九表 do 10 i=1,9 do 20 j=1,9 k=i*j write(*,*) i,*,j,=,k20 continue write(*,*)10continueendC百钱买百鸡百钱买百鸡C100元钱买元钱买100只鸡只鸡C公鸡公鸡5元元/只只C母鸡母鸡3元元/只只C小鸡小鸡1元元/3只只integer x,y,zdo 10 x=0,19 do

14、 20 y=0,33 z=100-x-y if(15*x+9*y+z.eq.300) $ write(*,*) x,y,z20 continue10continueend扰篡总痘右捍促苦英嵌石傀鼓蜀填拒裸瓶左所傍宁于鳞蕊腕纹凰艾抠翱僻3循环结构的实现3循环结构的实现18几种循环形式的关系和比较1. DO循环用来处理已确定循环次数的问题。其他循环即可以循环用来处理已确定循环次数的问题。其他循环即可以处理已知循环次数的问题,也可以处理不确定循环次数的问处理已知循环次数的问题,也可以处理不确定循环次数的问题。对事先知道确定循环次数的问题,用题。对事先知道确定循环次数的问题,用DO循环比较方便。循环比

15、较方便。2. DO循环实质上也是一种循环实质上也是一种“当型循环当型循环”。3. 几种形式的循环可以互相转换,或者说,同一个问题可用几种形式的循环可以互相转换,或者说,同一个问题可用任一种循环来处理。任一种循环来处理。4. 各种循环可以互相嵌套。但必须一个循环完整的包含在另各种循环可以互相嵌套。但必须一个循环完整的包含在另一个循环之内。一个循环之内。盾推抱塌架瑰赡窜栅贵蚕咬联简弄锗舅逊窑钦峨骗对雄版庶翅总芜柱晚蓝3循环结构的实现3循环结构的实现19END DO END DO 语句(语句(语句(语句(Fortran 90Fortran 90) DODODO 20 , I=1, 10 , 220

16、, I=1, 10 , 220 , I=1, 10 , 2 PRINT PRINT PRINT *, I*, I*, I 202020 CONTINUECONTINUECONTINUE DODODO I=1, 10 , 2I=1, 10 , 2I=1, 10 , 2 PRINT PRINT PRINT *, I*, I*, I END DO END DO END DOdodo 10 10 whilewhile(score.ge.0.0)(score.ge.0.0) sum=sum+score sum=sum+score readread(*,*) score(*,*) score1010con

17、tinuecontinuedodo whilewhile(score.ge.0.0)(score.ge.0.0) sum=sum+score sum=sum+score readread(*,*) score(*,*) score end doend do淘静朋熙逻突真贼烩异聋轻帘麓耻辛靠磊份抄昼娜咒踏唯圣召湘诌兔勒蓄3循环结构的实现3循环结构的实现20CYCLE CYCLE 和和和和 EXIT EXIT 语句(语句(语句(语句(Fortran 90Fortran 90) CYCLE CYCLE命令略过循环的程序模块中,在命令略过循环的程序模块中,在命令略过循环的程序模块中,在命令略过循环的程

18、序模块中,在CYCLECYCLE命令后面的所有程序代码,直接跳回循环的开头来进命令后面的所有程序代码,直接跳回循环的开头来进命令后面的所有程序代码,直接跳回循环的开头来进命令后面的所有程序代码,直接跳回循环的开头来进行下一次循环。行下一次循环。行下一次循环。行下一次循环。programprogram ex eximplicit noneimplicit noneintegerinteger dest,floor dest,floorparameter parameter (dest=9)(dest=9)dodo floor=1,dest floor=1,dest if if (floor=4)

19、 (floor=4) cyclecycle write write(*,*) floor(*,*) floorend doend doendend 假设某百货公司共假设某百货公司共假设某百货公司共假设某百货公司共有有有有9 9层楼,但电梯在层楼,但电梯在层楼,但电梯在层楼,但电梯在4 4层层层层不停,试写一个程序来不停,试写一个程序来不停,试写一个程序来不停,试写一个程序来仿真百货公司中电梯从仿真百货公司中电梯从仿真百货公司中电梯从仿真百货公司中电梯从1 1楼爬升至楼爬升至楼爬升至楼爬升至9 9楼时灯号显楼时灯号显楼时灯号显楼时灯号显示情况。示情况。示情况。示情况。EXITEXIT的功能是可以

20、直接的功能是可以直接的功能是可以直接的功能是可以直接“ “跳出跳出跳出跳出” ”一个正在运行的循环。一个正在运行的循环。一个正在运行的循环。一个正在运行的循环。遗于蓟溯孺砚掳湾率痢骤侩培视凿颓蔗浦歇涛浚链唯混铡喳错要转曹莎王3循环结构的实现3循环结构的实现21 DODO 10 , A=2.5, -1.6 , -0.510 , A=2.5, -1.6 , -0.5 1010 CONTINUECONTINUE 1. 在下列程序段中,循环体被执行的次数为练习题(选择)A) 1 B) 2 C) 4 D) 9解:没有任何说明,隐含A为实型,根据计算公式r=INT(-1.6-2.5+(-0.5)/(-0.

21、5)=9叭伍潜粤铁鳃讲疤筐弱需猾淹卿暴逊灰妨佳哥痴喊铬坞迟闺棚掣颠宅遣价3循环结构的实现3循环结构的实现22 DODO 10 , K=2.5, -1.6 , 1.510 , K=2.5, -1.6 , 1.5 1010 CONTINUECONTINUE 2. 在下列程序段中,循环体被执行的次数为A) 0 B) 3 C) 4 D) 无穷大解:没有任何说明,隐含K为整型,首先将三个循环参数转换为整型量2,-1,1,根据计算公式r=INT(-1-2+1)/1)=-20,即循环次数为0。茨熟总厄神瞎默曾剃缮薛耸六杠屁饿管诧国星聊夺憋汀微理企桅实茎乱辉3循环结构的实现3循环结构的实现23 DODO 10

22、 K=510 K=5,1 1,-1-1 M=0 M=0 DODO 20 J=K 20 J=K,5 5 M=M+K*J M=M+K*J 2020 CONTINUECONTINUE 1010 CONTINUECONTINUE WRITEWRITE(* *,* *)MM ENDEND3. 阅读下列FORTRAN程序A) 120 B) 15 C) 140 D) 135上述程序运行后,输出的M值为唆绑钵绥状资英磊傅艺柿铰隐盯晴嘱迟桩序这竭蚜咏掇戌讯舒恿呸皑脏抖3循环结构的实现3循环结构的实现24解:这是一个双重循环。在外循环的循环体中,每次都对M清零,因此只考虑外循环的最后一次循环中所执行的内循环。外循

23、环最后一次循环的K为1,最后一次执行的循环体相当于右图:M=1+2+3+4+5=15 DODO 10 K=510 K=5,1 1,-1-1 M=0 M=0 DODO 20 J=K 20 J=K,5 5 M=M+K*J M=M+K*J 2020 CONTINUECONTINUE 1010 CONTINUECONTINUE WRITEWRITE(* *,* *)MM ENDEND M=0 M=0 DODO 20 J=1 20 J=1,5 5 M=M+J M=M+J 2020 CONTINUECONTINUE 酣考肮侠槐埂摹抡研葛藻豪梯劝茵限内稠则烧昭胀捏延匪骨戮家啸悄受率3循环结构的实现3循环结构

24、的实现25 DODO 10 I=110 I=1,2 2 S=0.0 S=0.0 DODO 10 J=1 10 J=1,3 3 S=S+I+J S=S+I+J1010 CONTINUECONTINUE WRITEWRITE(* *,* *)S S ENDEND4. 阅读下列FORTRAN程序A) 21.0 B) 9.0 C) 12.0 D) 6.0上述程序运行后,输出的S值为孔悯赞牲逸优详扬笑啄饶凡恢醉桓跃毕橱盔梢泻蓬励停告曝失癣澜攘孰粟3循环结构的实现3循环结构的实现26解:这是一个双重循环。内外循环共用一个CONTINUE语句。由于外循环的循环体中每次都对S清零,因此,只有在最后一次执行内循

25、环时S的累加结果才是最后输出的结果。S=(2+1)+(2+2)+(2+3)=12妥郊迢麦撂抢蚜下邀稍司庶师抹蓟尧区筹撬浇烩恫孪乏藕拟董丈阅容磕漂3循环结构的实现3循环结构的实现27 S=0.0S=0.0 DO DO 10 I=110 I=1,2 2 DO DO 10 J=1 10 J=1,3 3 S=S+I+J S=S+I+J1010 CONTINUECONTINUE WRITEWRITE(* *,* *)S S ENDEND5. 阅读下列FORTRAN程序A) 21.0 B) 9.0 C) 12.0 D) 6.0上述程序运行后,输出的S值为亲王葫文衫糊低冒姨钮伟姨宗源厌增耽囚渭县漠差寅皇铀哮

26、蜒渴袒在罢弃3循环结构的实现3循环结构的实现28解:这个程序和上个题目的根本区别是:在双重循环的外面给S清零。因此,将对两次外循环执行时的I和J的值进行累加,即S= (1+1)+(1+2)+(1+3)+(2+1)+(2+2)+(2+3)=9+12=21缆循淤雷竖袍偿钎疚矫札槽券锻勘弃谦佬疮坪背呼族洁笋褂贡采欢腻六废3循环结构的实现3循环结构的实现29 DO DO 10 T=1.510 T=1.5,10.510.5,1.51.5 DO DO 10 I=1 10 I=1,1010 1010 CONTINUECONTINUE 6. 在下列的双重循环中,内层的循环体执行的总次数为A) 10 B) 40

27、 C) 30 D) 70解:外循环执行的次数为r1=INT(10.5-1.5+1.5)/1.5)=7内循环执行的次数为r2=INT(10-1+1)/1)=10因此,内层循环体共执行71 10=70(次)控炳瑟盏豫姐筒神邢嫌栅糖阐阁深血拌哪土必预缺蚜酞寝曾递屏役锗应篇3循环结构的实现3循环结构的实现30 DO DO 10 A=-1.610 A=-1.6,3.23.2,-1.6-1.6 DO DO 10 K=1 10 K=1,3 3,2 2 1010 CONTINUECONTINUE 7. 在下列的双重循环中,内层的循环体执行的总次数为A) 3 B) 2 C) 0 D) 5解:外循环执行的次数为r

28、1=INT(3.2-(-1.6)+(-1.6)/(-1.6)=-20即外循环一次也不执行,因此,内层循环体也一次不执行付他斯刺麓若涝沏韩积增置钒默缆恬卵舟舒量潘蛮编钥捕篱呜芳壕涎威勃3循环结构的实现3循环结构的实现31 DO DO 10 I=110 I=1,1010 DO DO 20 J=1 20 J=1,3 3 1010 CONTINUECONTINUE 2020 CONTINUECONTINUE 8. 下列循环中,正确的是D) DO DO 10 I=110 I=1,1010 DO DO 10 I=2 10 I=2,5 5,2 2 1010 CONTINUECONTINUE DO DO 10

29、 I=110 I=1,1010 IFIF (X (X.GE.GE.0.0) I=110.0) I=11 1010 CONTINUECONTINUE DO DO 10 I=110 I=1,1010 10 CONTINUE10 CONTINUE DO DO 20 I=2 20 I=2,3030,2 2 2020 CONTINUECONTINUE A)B)C)蔫刘区毖他撂立窖共膊狰瞅竭玖主窃棵凉梗同孵踌靛腋赘褐阵蹲苏砌倾畦3循环结构的实现3循环结构的实现32解:A中出现循环交叉;B中内外循环用同一变量作为循环控制变量;C中循环体内改变了循环控制变量I的值;D中两个循环是并列的,虽然用同一个循环控制变

30、量,是允许的。旷波迁旱柳哎鸦藤歇锯散妊蛤轻嘛盼嚼栏书术抓怠要推邀惩今疵徽忆米钨3循环结构的实现3循环结构的实现33练习题(填空) DO DO 10 I=110 I=1,1010 DO DO 10 J=I 10 J=I,1010 1010 CONTINUECONTINUE 9. 在下列的双重DO循环中,内层的循环体执行的总次数为解:外层循环次数为10,I的值分别为1,2,10。内层循环次数为10-I+1。因此,内层循环体执行的总次数为恳滔彝芝镣素于瑟床盐艇滴弗知喳咳挥攘扛琶哎瘪堆绵蚤蔷突铱康红鸟低3循环结构的实现3循环结构的实现34 READ(*,*)N S=0 S=0 F=1 F=1 DO D

31、O 20 K=120 K=1,N N F=F*K F=F*K S=S+F S=S+F2020 CONTINUECONTINUE WRITEWRITE(* *,* *)S S ENDEND10. 阅读下列FORTRAN程序在执行上述程序时,如果从键盘输出5,则运行后输出的S值为郴剂谆舔赏骡盎姐萍翻京恕思直租爷灾象腐粟插使邪缉又勾省逮冉抒加遇3循环结构的实现3循环结构的实现35解:这个程序的功能是计算并输出的值。当N=5时,S=1!+2!+3!+4!+5!=153染纤乃们戎曹廊沸罪蝗眠悯码忽命灰谚氏狂鞘诧签胀撇窗躺和砾恤奏纷蛰3循环结构的实现3循环结构的实现3611. 下列FORTRAN77程序的

32、功能是:从键盘输入一个整数N,然后计算并输出S=1+21+22+2|N|,最后计算并输出其中K=S0.5的整数部分。请在程序的下划线处填入合适的内容。涸线毋淡伙睫称铸辅锌候好戒氏因合赠信琐疗弊等佃胰政莫腺壳蝗讥避荷3循环结构的实现3循环结构的实现37 READ(*,*)N S=0.0 S=0.0 DO DO 10 I=110 I=1, S=S+F S=S+F F=2*F F=2*F1010 CONTINUECONTINUE WRITEWRITE(* *,* *)S= S= ,S S T=0.0 T=0.0 F=1.0 F=1.0 DODO 20 I=120 I=1,K K T=T+F/I T=T+F/I20 CONTINUE20 CONTINUE WRITE WRITE(* *,* *)T= T= ,T T END ENDF=1.0F=1.0ABS(N)ABS(N)K=SQRT(S)K=SQRT(S)F=-FF=-F丘铜亲冀势贿婉棺压乞景探徘锤桥酒笺鸦板蚜顺聊煎松锋烽财踩凳潜氓毯3循环结构的实现3循环结构的实现

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号