第三章-结构化程序设计_第1页
第三章-结构化程序设计_第2页
第三章-结构化程序设计_第3页
第三章-结构化程序设计_第4页
第三章-结构化程序设计_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology第第3章章 FORTRAN结构化程序设计结构化程序设计气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology本章内容本章内容n 顺序结构程序设计n 选择结构程序设计n 循环结构程序设计气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工

2、程大学 Nanjing University of Information Science & Technology 结构化程序设计结构化程序设计:按照一定的结构形式来设计和编写程序,按照一定的结构形式来设计和编写程序,以便阅读与检查。以便阅读与检查。顺序结构顺序结构选择结构选择结构循环结构循环结构A AB BA AB B成成立立条条件件P P不不成成立立执执行行A A当当条条件件P P成成立立时时 执执行行A A直直到到条条件件P P成成立立为为止止当型循环当型循环 直到型循环直到型循环 气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing

3、 University of Information Science & Technology先上后下,先左后右;即先执行A,再执行B顺序结构顺序结构A AB B气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology【例3-1】输入输入3 3个气象站个气象站5 5个月(汛期)雨量数据,统计个月(汛期)雨量数据,统计每个气象站的总雨量和平均雨量,计算每个气象站的总雨量和平均雨量,计算3 3个站五月、六月、个站五月、六月、七月、八月、九月的平均雨量

4、,输出每个气象站每个月的七月、八月、九月的平均雨量,输出每个气象站每个月的雨量、总雨量和平均雨量,以及五月、六月、七月、八月、雨量、总雨量和平均雨量,以及五月、六月、七月、八月、九月的平均雨量。九月的平均雨量。 站名站名汛期各月雨量(毫米)汛期各月雨量(毫米)5 5月月6 6月月7 7月月8 8月月9 9月月江阴江阴76.876.8176.5176.5308.1308.141.041.069.669.6定波闸定波闸71.571.5208.5208.5352.1352.147.247.262.662.6肖山肖山65.565.5200.0200.0239.7239.744.344.363.063.

5、0表表3-1 1998年主要站汛期雨量统计表年主要站汛期雨量统计表气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology1 1 PROGRAM ex06_02PROGRAM ex06_022 2 IMPLICIT NONEIMPLICIT NONE3 3 REAL r11,r12,r13,r14,r15,total11,av11REAL r11,r12,r13,r14,r15,total11,av114 4 REAL r21,r22,r23,r24,r

6、25,total21,av21REAL r21,r22,r23,r24,r25,total21,av215 5 REAL r31,r32,r33,r34,r35,total31,av31REAL r31,r32,r33,r34,r35,total31,av316 6 REAL av1,av2,av3,av4,av5REAL av1,av2,av3,av4,av57 7 WRITE(WRITE(* *,“(28X,5,“(28X,5月月 6 6月月 7 7月月 8 8月月 9 9月月)”)”)8 8 WRITE(WRITE(* *,“(1X,“(1X,输入江阴气象站五个月的雨输入江阴气象站五个月

7、的雨: :,)”),)”)9 9 READ(READ(* *, ,* *) r11,r12,r13,r14,r15) r11,r12,r13,r14,r151010 WRITE(WRITE(* *,“(1X,“(1X,输入定波闸气象站五个月的雨量输入定波闸气象站五个月的雨量: :,)”),)”)气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology1111 READ(READ(* *, ,* *) r21,r22,r23,r24,r25) r21,r2

8、2,r23,r24,r251212 WRITE(WRITE(* *,“(1X,“(1X,输入肖山气象站五个月的雨量输入肖山气象站五个月的雨量: :,)”),)”)1313 READ(READ(* *, ,* *) r31,r32,r33,r34,r35) r31,r32,r33,r34,r351414 ! 100100FORMAT(F5.1,F5.1,F5.1,F5.1,F5.1)FORMAT(F5.1,F5.1,F5.1,F5.1,F5.1)1515 total11=r11+r12+r13+r14+r15total11=r11+r12+r13+r14+r151616 av11=total11

9、/5av11=total11/51717 total21=r21+r22+r23+r24+r25total21=r21+r22+r23+r24+r251818 av21=total21/5av21=total21/51919 total31=r31+r32+r33+r34+r35total31=r31+r32+r33+r34+r352020 av31=total31/5av31=total31/52121 av1=(r11+r21+r31)/3av1=(r11+r21+r31)/32222 av2=(r12+r22+r32)/3av2=(r12+r22+r32)/3 气象程序设计及绘图气象程序

10、设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology2323 av3=(r13+r23+r33)/3av3=(r13+r23+r33)/32424 av4=(r14+r24+r34)/3av4=(r14+r24+r34)/32525 av5=(r15+r25+r35)/3av5=(r15+r25+r35)/32626 WRITE(WRITE(* *,“(26X,5,“(26X,5月月 6 6月月 7 7月月 8 8月月 9 9月月 总雨总雨量量 平均雨量平均雨量)”)”)27

11、27 WRITE(WRITE(* *,200),200)江阴气象站五个月的雨量江阴气象站五个月的雨量: :, , r11,r12,r13,r14,r15,total11,av11r11,r12,r13,r14,r15,total11,av112828 WRITE(WRITE(* *,200),200)定波闸气象站五个月的雨量定波闸气象站五个月的雨量: :, r21,r22,r23,r24,r25,total21,av21, r21,r22,r23,r24,r25,total21,av212929 WRITE(WRITE(* *,200),200)肖山气象站五个月的雨量肖山气象站五个月的雨量:

12、:, , r31,r32,r33,r34,r35,total31,av31r31,r32,r33,r34,r35,total31,av313030 200200 FORMAT(1X,A22,5(F5.1,2X),F6.1,2X,F7.3) FORMAT(1X,A22,5(F5.1,2X),F6.1,2X,F7.3) 气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology3131 WRITE(WRITE(* *,300) 5,300) 5月月,av1,6

13、,av1,6月月,av2,7,av2,7月月,av3,8,av3,8月月,av4,9,av4,9月月,av5,av53232 300300 FORMAT(1X,A4,FORMAT(1X,A4,平均雨量:平均雨量:,F7.3),F7.3)3333 ENDEND气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology运行结果:运行结果:气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of

14、 Information Science & Technology3.2.13.2.1 选择结构简介选择结构简介3.2.23.2.2 IFIF语句语句 3.2.33.2.3 SELECT CASESELECT CASE语句语句 3.2.43.2.4 选择语句的嵌套选择语句的嵌套气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology3.2.13.2.1 选择结构简介选择结构简介依据给定的条件做逻辑判断,再根据判断的结果决依据给定的条件做逻辑判断,

15、再根据判断的结果决定应执行哪种操作定应执行哪种操作选择结构。选择结构。如:如:1 1 输入学生成绩,判定合格与否,输出判定结果。输入学生成绩,判定合格与否,输出判定结果。2 2 已知三个整数已知三个整数A,B,C,A,B,C,输入其值并打印三个数中最大值。输入其值并打印三个数中最大值。 3 3 暴雨预警信号分三级,分别以黄色、橙色、红色表示。暴雨预警信号分三级,分别以黄色、橙色、红色表示。(1 1)暴雨黄色预警信号)暴雨黄色预警信号(2 2)暴雨橙色预警信号)暴雨橙色预警信号(3 3)暴雨红色预警信号)暴雨红色预警信号根据降雨量评判当前预警信号,从而做出不同防御指南。必须使根据降雨量评判当前预

16、警信号,从而做出不同防御指南。必须使用选择结构程序来解决这类问题用选择结构程序来解决这类问题 气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & TechnologyFORTRAN提供了提供了3种典型的块种典型的块IF结构:结构:(1)单分支单分支(2)双分支双分支(3)多分支多分支3.2.23.2.2 IFIF语句语句 气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information

17、Science & Technology(1)(1)单分支块单分支块IFIF结构结构一般形式为:一般形式为:IF(条件条件)THENIF块块END IF这种块这种块IF结构包括:结构包括: 块块IF语句语句“IF(条件)(条件)THEN”。它是块。它是块IF结构的入口语结构的入口语句。句。 IF块。它是一个语句序列,由若干条可执行语句组成。块。它是一个语句序列,由若干条可执行语句组成。 END IF语句。它是块语句。它是块IF结构的出口语句。结构的出口语句。 条件真假if块END IF后继语句气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjin

18、g University of Information Science & Technology【例3-2】从键盘输入一个气温值,如果大于35.0,则显示在屏幕上。1PROGRAM ex04_022IMPLICIT NONE 3REAL T4READ *,T5IF(T35.0)THEN6PRINT *, 这是高温这是高温7PRINT *, T=,T8END IF9END气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology(2)(2)双分支块双

19、分支块IFIF结构结构一般形式为:一般形式为:IF(条件)(条件)THENIF块块ELSEELSE块块END IF条件真假if块END IF后继语句else块气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology【例3-3】由于大气受到污染,一些地区开始形成酸雨区,酸雨是指PH值小于5.6的雨雪或其他形式的大气降水。通过收集水样测量其PH值,判断它的酸碱性并打印出来。根据题意设计算法并画出程序流程图,如图所示。Ph5.6真真假假输出“酸雨”并打印Ph值

20、结结束束输入Ph值输输出出“不不是是酸酸雨雨”气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology1PROGRAM ex07_032IMPLICIT NONE 3REAL ph4WRITE(*,*)Please enter PH value:5READ *,ph!定义变量定义变量ph来存放酸碱度值来存放酸碱度值6IF(ph5.6) THEN!用分支语句来判断用分支语句来判断7WRITE(*,100) ph8ELSE9WRITE(*,200) ph10

21、END IF11100 FORMAT(1X,PH=,F4.2,is acid rain!)12200 FORMAT(1X,PH=,F4.2,is not acid rain!)13END气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology(3)(3)多分支块多分支块IFIF结构结构一般形式为:一般形式为:IF(条件(条件1)THEN块块1ELSE IF(条件(条件2) THEN块块2ELSE IF(条件(条件3) THEN块块3.ELSE IF(条件

22、(条件n) THEN块块nELSE块块n+1END IF条件2条件1条件.条件n真真真真假假假假块1块2块.块nEND IF的后继语句块n+1气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology【例例3-43-4】在气象部门发布的天气预报中小雨、中雨、在气象部门发布的天气预报中小雨、中雨、暴雨等专业术语,它们之间的区别如表所示:暴雨等专业术语,它们之间的区别如表所示: 降雨强度降雨强度降雨量(降雨量(1212小时,小时,单位:单位:mmmm)降雨量(

23、降雨量(2424小时,小时,单位:单位:mmmm)小雨小雨5510140140250250气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technologyr15r5r30r70真真真真假假假假END IF的后继语句真r140假小雨中雨大雨暴雨大暴雨特大暴雨1PROGRAM ex07_042IMPLICIT NONE3REAL r!定义用来记录降雨量的实型量定义用来记录降雨量的实型量r4WRITE(*,100)5READ *,r6IF(r5) THEN !用多分支

24、用多分支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/(

25、2.0*a)pi=sqrt(-d)/(2.0*a)PRINT *,两个复根两个复根PRINT *,x1=,pr,+,pi,iPRINT *,x2=,pr,-,pi,i END IFEND IFEND气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology【例例3-8】已知已知U,V风速,判断风向:风速,判断风向:U0;V0西南风U0;V0西北风U0东南风U0;V0.0) then if (v0.0) then !u0,v0 print *, 西南风 el

26、se 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, v0执行循环体v=v+e3R=R-1执行终端语句下面的语句YN图8-1 DO循环执行过程 先计算E1、E2、E3的值,然后转换为与循环控制变量相同的类型; 给循环控制变量赋初值 v= E1; 计算循环次数,计算公式为: R = MAX (

27、INT ( ( E2 - E1 + E3 ) / E3 ),0 ) 检查循环次数,当R 0时,执行循环体,继续做第(4-6)步;当 R0时,转向(7); 当执行到循环终端语句时,循环变量按步长增值,即:循环变量 = 循环变量 + E3; 循环次数减1:R = R 1 ;返回 (4) 继续执行。 循环结束。执行过程气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology注意事项注意事项1.循环变量在循环体中可以引用不能重新赋值2. E1、E2、E3的类型应

28、与循环变量相同。3. E3的缺省意味着循环步长为1。4.可以不经过ENDDO语句退出循环5. DO循环和其它结构(如块IF结构、CASE结构)可以相互嵌套使用6.退出循环后,循环变量仍然存在。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology【例例3-10】循环输入一周日最高气温,判断最高气温,并计算一周平均最高气温。 2014年3月23日-29日南京日最高气温如下:16.0 17.0 17.0 18.0 16.0 22.0 24.0 (单位:)

29、。program ex0309real t,tmax,sum,taveInteger itmax=0.0sum=0.0do i=1,7read *, tsum=t+sumif (t=tmax) thentmax=tend ifend dotave=sum/7.0print *, tmax=, tmaxprint *, tave=, taveend气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology43(2) DO-WHILE控制的循环结构 DO-WH

30、ILEDO-WHILE结构格式结构格式一般形式为: 结构名:结构名: DO WHILE ( DO WHILE (逻辑表达式逻辑表达式) ) 循环体循环体 END DO END DO 结构名结构名 气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology例子【例例3-113-11】循环输入每六小时降水资料,如果发现数据小于0或者大于1000时,终止循环,并提示输入数据异常。real precipprint *, 输入每六小时降水量(mm):read *,

31、precipdo while(precip.ge.0.and.precip.le.1000)print *, 降水量(mm):, precipread *, precipenddoprint *, 输入数据异常end程序程序运行结果气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology45DO-WHILE循环流程图 计算循环控制条件逻辑表达式的值.TRUE.Y执行循环体NDO WHILE循环语句下面一条语句图8-2 DO WHILE循环语句执行过程气象

32、程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology46循环结构的选择:v如果已知循环的次数,或者知道循环的初值和终值,那么用有循环变量的DO循环结构。v知道循环的条件时,选用DO_WHILE循环结构,或者是重复DO循环结构。其中在使用这两种结构时,注意循环条件的变化,以避免“死循环”。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science &a

33、mp; Technology47(1) EXIT语句EXIT语句用于强制退出循环,将执行控制转移到当前循环或结构之外。 一般格式为:EXIT DOEXIT DO循环结构名循环结构名 3.3.2 循环流程控制语句气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology48EXIT语句的使用说明:1. EXIT语句通常是作为逻辑IF语句的内嵌语句来使用。其作用是有条件中断。 形式为:IF(逻辑表达式) EXIT 结构名 执行过程为: 当逻辑表达式为真时,中止

34、正在执行的循环,将控制转到EXIT语句指定的结构之后;当逻辑表达式为假时,继续正在执行的循环,不进行任何转移。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology49【例例3-123-12】输入正整数n,求级数的前n项和,如果当某项绝对值105时,虽未满n项,也因满足精度而不再加入下一项。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science

35、 & Technology1PROGRAM ex08_08 2IMPLICIT NONE 3INTEGER : i,n 4REAL : s=0,t 5READ *, n 6DO i=1,n 7 t=1./(i*(i+1)!注意注意t要要求是实型求是实型8 s=s+t 9 IF(ABS(t)0计算内层循环次数R2,J赋初值 R20 执行内层循环体J=J内层循环步长R2 R21I=I外层循环步长R1 R11气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Tech

36、nology59循环嵌套循环的次数循环嵌套循环的次数:外层循环的次数为:R1内层循环的次数为:R2整个循环的次数为:R R=R1*R2气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology60计算循环嵌套循环次数计算循环嵌套循环次数:M=0DO I=1,3,4DO J=4,19,4 M=M+1 PRINT *, M ENDDOENDDOEND运行结果气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing Uni

37、versity of Information Science & Technology61嵌套DO循环的说明 (1) 三种DO循环结构必须是完整的嵌套。(2) 循环嵌套时,内、外层不能使用相同的循环变量。(3) 循环转移的问题。(4) DO循环结构可以与选择结构的嵌套。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology62计算循环嵌套循环次数计算循环嵌套循环次数:M=0II: DO I=1,3,4JJ: DO J=4,19,4 M=M+1

38、if(M=3)EXIT II ENDDO JJENDDO IIPRINT*,MEND运行结果气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology3.3.4 两种循环形式的比较和关系(1)带循环变量的DO循环用来处理已确定循环次数的问题。DO WHILE循环既可以用来处理已知循环次数的循环问题,也可用来处理不确定循环次数的问题。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of

39、Information Science & Technology(2)对事先已确定循环次数的问题,用带循环变量的DO循环比较方便,它能使循环变量自动增值,不需用户写逻辑表达式,只需写出循环变量的初值、终值和步长即可,使用方便。因此带变量的DO循环在气象上使用最为频繁。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology(3)由于带循环变量的DO循环只能判断处理一个条件(循环次数R),当需要多个入口条件时,应考虑DO WHILE 循环结构。(4

40、)各类循环可以相互转换以及互相嵌套。嵌套时,需要完整嵌套。气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology离散化离散化均匀均匀经纬度网格经纬度网格【例例3-14】气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology沿着某一经度剪开球体气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology气象程序设计及绘图气象程序设计及绘图课题组课题组南京信息工程大学南京信息工程大学 Nanjing University of Information Science & Technology1,请求出11度均匀经纬度网格上,不同纬线上位置相邻格点的实际球

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论