资源预览内容
第1页 / 共79页
第2页 / 共79页
第3页 / 共79页
第4页 / 共79页
第5页 / 共79页
第6页 / 共79页
第7页 / 共79页
第8页 / 共79页
第9页 / 共79页
第10页 / 共79页
亲,该文档总共79页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第三章结构化程序设计第三章-结构化程序设计本章内容n 顺序结构程序设计n 选择结构程序设计n 循环结构程序设计 结构化程序设计:按照一定的结构形式来设计和编写程序,以便阅读与检查。顺序结构选择结构循环结构 当型循环 直到型循环 顺序结构程序设计顺序结构程序设计先上后下,先左后右;即先执行A,再执行B顺序结构【例3-1】输入3个气象站5个月(汛期)雨量数据,统计每个气象站的总雨量和平均雨量,计算3个站五月、六月、七月、八月、九月的平均雨量,输出每个气象站每个月的雨量、总雨量和平均雨量,以及五月、六月、七月、八月、九月的平均雨量。 站名汛期各月雨量(毫米)5月6月7月8月9月江阴76.8176.5308.141.069.6定波闸71.5208.5352.147.262.6肖山65.5200.0239.744.363.0表3-1 202X年主要站汛期雨量统计表1 PROGRAM ex06_022 IMPLICIT NONE3 REAL r11,r12,r13,r14,r15,total11,av114 REAL r21,r22,r23,r24,r25,total21,av215 REAL r31,r32,r33,r34,r35,total31,av316 REAL av1,av2,av3,av4,av57 WRITE(*,“(28X,5月 6月 7月 8月 9月)”)8 WRITE(*,“(1X,输入江阴气象站五个月的雨:,)”)9 READ(*,*) r11,r12,r13,r14,r1510 WRITE(*,“(1X,输入定波闸气象站五个月的雨量:,)”)11 READ(*,*) r21,r22,r23,r24,r2512 WRITE(*,“(1X,输入肖山气象站五个月的雨量:,)”)13 READ(*,*) r31,r32,r33,r34,r3514 ! 100FORMAT(F5.1,F5.1,F5.1,F5.1,F5.1)15 total11=r11+r12+r13+r14+r1516 av11=total11/517 total21=r21+r22+r23+r24+r2518 av21=total21/519 total31=r31+r32+r33+r34+r3520 av31=total31/521 av1=(r11+r21+r31)/322 av2=(r12+r22+r32)/3 23 av3=(r13+r23+r33)/324 av4=(r14+r24+r34)/325 av5=(r15+r25+r35)/326 WRITE(*,“(26X,5月 6月 7月 8月 9月 总雨量 平均雨量)”)27 WRITE(*,200)江阴气象站五个月的雨量:, r11,r12,r13,r14,r15,total11,av1128 WRITE(*,200)定波闸气象站五个月的雨量:, r21,r22,r23,r24,r25,total21,av2129 WRITE(*,200)肖山气象站五个月的雨量:, r31,r32,r33,r34,r35,total31,av3130 200 FORMAT(1X,A22,5(F5.1,2X),F6.1,2X,F7.3) 31 WRITE(*,300) 5月,av1,6月,av2,7月,av3,8月,av4,9月,av532 300 FORMAT(1X,A4,平均雨量:,F7.3)33 END运行结果: 选择结构选择结构 选择结构简介 IF语句 SELECT CASE语句 选择语句的嵌套 选择结构简介依据给定的条件做逻辑判断,再根据判断的结果决定应执行哪种操作选择结构。如:1 输入学生成绩,判定合格与否,输出判定结果。2 已知三个整数A,B,C,输入其值并打印三个数中最大值。 3 暴雨预警信号分三级,分别以黄色、橙色、红色表示。(1)暴雨黄色预警信号(2)暴雨橙色预警信号(3)暴雨红色预警信号根据降雨量评判当前预警信号,从而做出不同防御指南。必须使用选择结构程序来解决这类问题 FORTRAN提供了3种典型的块IF结构:(1)单分支(2)双分支(3)多分支 IF语句 (1)单分支块IF结构 一般形式为:IF(条件)THENIF块ENDIF这种块IF结构包括:块IF语句“IF(条件)THEN”。它是块IF结构的入口语句。 IF块。它是一个语句序列,由若干条可执行语句组成。 ENDIF语句。它是块IF结构的出口语句。 【例3-2】从键盘输入一个气温值,如果大于,则显示在屏幕上。1PROGRAM ex04_022IMPLICIT NONE 3REAL T4READ *,T5IF(T35.0)THEN6PRINT *, 这是高温7PRINT *, T=,T8END IF9END(2)双分支块IF结构 一般形式为:IF(条件)THENIF块ELSEELSE块ENDIF【例3-3】由于大气受到污染,一些地区开始形成酸雨区,酸雨是指PH值小于的雨雪或其他形式的大气降水。通过收集水样测量其PH值,判断它的酸碱性并打印出来。根据题意设计算法并画出程序流程图,如图所示。1PROGRAM ex07_032IMPLICIT NONE 3REAL ph4WRITE(*,*)Please enter PH value:5READ *,ph!定义变量ph来存放酸碱度值6IF(ph5.6) THEN!用分支语句来判断7WRITE(*,100) ph8ELSE9WRITE(*,200) ph10END IF11100 FORMAT(1X,PH=,F4.2,is acid rain!)12200 FORMAT(1X,PH=,F4.2,is not acid rain!)13END(3)多分支块IF结构 一般形式为:IF(条件1)THEN块1ELSEIF(条件2) THEN块2ELSEIF(条件3) THEN块3.ELSEIF(条件n) THEN块nELSE块n+1ENDIF【例3-4】在气象部门发布的天气预报中小雨、中雨、暴雨等专业术语,它们之间的区别如表所示: 降雨强度降雨量(12小时,单位:mm)降雨量(24小时,单位:mm)小雨51402501PROGRAM ex07_042IMPLICIT NONE3REAL r!定义用来记录降雨量的实型量r4WRITE(*,100)5READ *,r6IF(r5) THEN !用多分支IF语句进行判断7PRINT 2008ELSE IF(r15) THEN9PRINT 30010ELSE IF(r30) THEN11PRINT 40012ELSE IF(r70) THEN13PRINT 50014ELSE IF(r0.0) THENx1=(-b+sqrt(d)/(2.0*a)x2=(-b-sqrt(d)/(2.0*a)PRINT *,两个不等实根:PRINT *,x1=,x1PRINT *,x2=,x2 ELSE IF(d=0.0) THENPRINT *,两个相等实根PRINT *,-b/(2.0*a) ELSEpr=-b/(2.0*a)pi=sqrt(-d)/(2.0*a)PRINT *,两个复根PRINT *,x1=,pr,+,pi,iPRINT *,x2=,pr,-,pi,i END IFEND IFEND【例3-8】已知U,V风速,判断风向:U0;V0西南风U0;V0西北风U0东南风U0;V0.0) then if (v0.0) then !u0,v0 print *, 西南风 else if (v0, v0,v=0 print *, 西风 end ifelse if (u0.0) then !u0 print *, 东南风 else if (v0.0) then ! u0, v0 print *, 东北风 else ! u0.0) then !u=0,v0 print *, 南风 else if (v0.0) then ! u=0, v=tmax) thentmax=tend ifend doprint *, tmax=, tmaxprint *, tave=, taveend44(2) DO-WHILE控制的循环结构 DO-WHILE结构格式一般形式为: 结构名: DO WHILE (逻辑表达式) 循环体 END DO 结构名例子【例3-11】循环输入每六小时降水资料,如果发现数据小于0或者大于1000时,终止循环,并提示输入数据异常。real precipprint *, 输入每六小时降水量(mm):read *, precipdo while(precip.ge.0.and.precip.le.1000)print *, 降水量(mm):, precipread *, precipenddoprint *, 输入数据异常end程序运行结果46DO-WHILE循环流程图 47循环结构的选择:v如果已知循环的次数,或者知道循环的初值和终值,那么用有循环变量的DO循环结构。v知道循环的条件时,选用DO_WHILE循环结构,或者是重复DO循环结构。其中在使用这两种结构时,注意循环条件的变化,以避免“死循环”。48(1) EXIT语句EXIT语句用于强制退出循环,将执行控制转移到当前循环或结构之外。一般格式为:EXIT DO循环结构名3.3.2 循环流程控制语句49EXIT语句的使用说明:1. EXIT语句通常是作为逻辑IF语句的内嵌语句来使用。其作用是有条件中断。形式为:IF(逻辑表达式) EXIT 结构名执行过程为:当逻辑表达式为真时,中止正在执行的循环,将控制转到EXIT语句指定的结构之后;当逻辑表达式为假时,继续正在执行的循环,不进行任何转移。50【例3-12】输入正整数n,求级数的前n项和,如果当某项绝对值105时,虽未满n项,也因满足精度而不再加入下一项。1PROGRAM ex08_082IMPLICIT NONE3INTEGER : i,n4REAL : s=0,t5READ *, n6DO i=1,n7 t=1./(i*(i+1)!注意t要求是实型8 s=s+t9 IF(ABS(t)0计算内层循环次数R2,J赋初值 R20 执行内层循环体J=J内层循环步长R2 R21I=I外层循环步长R1 R1160循环嵌套循环的次数:外层循环的次数为:R1内层循环的次数为:R2整个循环的次数为:R R=R1*R261计算循环嵌套循环次数:M=0DO I=1,3,4DO J=4,19,4 M=M+1 PRINT *, M ENDDOENDDOEND运行结果62嵌套DO循环的说明 (1) 三种DO循环结构必须是完整的嵌套。(2) 循环嵌套时,内、外层不能使用相同的循环变量。(3) 循环转移的问题。(4) DO循环结构可以与选择结构的嵌套。63计算循环嵌套循环次数:M=0II: DO I=1,3,4JJ: DO J=4,19,4 M=M+1 if(M=3)EXIT II ENDDO JJENDDO IIPRINT*,MEND运行结果3.3.4 两种循环形式的比较和关系(1)带循环变量的DO循环用来处理已确定循环次数的问题。DO WHILE循环既可以用来处理已知循环次数的循环问题,也可用来处理不确定循环次数的问题。(2)对事先已确定循环次数的问题,用带循环变量的DO循环比较方便,它能使循环变量自动增值,不需用户写逻辑表达式,只需写出循环变量的初值、终值和步长即可,使用方便。因此带变量的DO循环在气象上使用最为频繁。(3)由于带循环变量的DO循环只能判断处理一个条件(循环次数R),当需要多个入口条件时,应考虑DO WHILE 循环结构。(4)各类循环可以相互转换以及互相嵌套。嵌套时,需要完整嵌套。离散化均匀经纬度网格【例3-14】沿着某一经度剪开球体1,请求出11度均匀经纬度网格上,不同纬线上位置相邻格点的实际球面距离。部分运行结果程序举例1那么同一经线上,相邻格点的实际球面距离是多少?假设降水资料的存放路径按照右图有规律地存放,请利用循环,将1979年1月-202X年1
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号