FORTRAN结构化程序设计和实例介绍_第1页
FORTRAN结构化程序设计和实例介绍_第2页
FORTRAN结构化程序设计和实例介绍_第3页
FORTRAN结构化程序设计和实例介绍_第4页
FORTRAN结构化程序设计和实例介绍_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

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

文档简介

1、FORTRAN结构化程序设计和实例介绍本章内容顺序结构程序设计选择结构程序设计循环结构程序设计 结构化程序设计:按照一定的结构形式来设计和编写程序,以便阅读与检查。顺序结构选择结构循环结构 当型循环 直到型循环 顺序结构程序设计先上后下,先左后右;即先执行A,再执行B顺序结构【例3-1】输入3个气象站5个月(汛期)雨量数据,统计每个气象站的总雨量和平均雨量,计算3个站五月、六月、七月、八月、九月的平均雨量,输出每个气象站每个月的雨量、总雨量和平均雨量,以及五月、六月、七月、八月、九月的平均雨量。 站名汛期各月雨量(毫米)5月6月7月8月9月江阴76.8176.5308.141.069.6定波闸

2、71.5208.5352.147.262.6肖山65.5200.0239.744.363.0表3-1 1998年主要站汛期雨量统计表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,输入江阴气象站五个月的

3、雨:,)”)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=total

4、21/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,

5、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语句 选择语句的嵌套 选择结构简介依据给定的条件做逻辑判断,再根据判断的结果决定应执行哪

6、种操作选择结构。如:1 输入学生成绩,判定合格与否,输出判定结果。2 已知三个整数A,B,C,输入其值并打印三个数中最大值。 3 暴雨预警信号分三级,分别以黄色、橙色、红色表示。(1)暴雨黄色预警信号(2)暴雨橙色预警信号(3)暴雨红色预警信号根据降雨量评判当前预警信号,从而做出不同防御指南。必须使用选择结构程序来解决这类问题 FORTRAN提供了3种典型的块IF结构:(1)单分支(2)双分支(3)多分支 IF语句 (1)单分支块IF结构一般形式为:IF(条件)THENIF块END IF这种块IF结构包括:块IF语句“IF(条件)THEN”。它是块IF结构的入口语句。IF块。它是一个语句序列,

7、由若干条可执行语句组成。END IF语句。它是块IF结构的出口语句。 【例3-2】从键盘输入一个气温值,如果大于,则显示在屏幕上。1PROGRAM ex04_022IMPLICIT NONE 3REAL T4READ *,T5IF(T35.0)THEN6PRINT *, 这是高温7PRINT *, T=,T8END IF9END(2)双分支块IF结构一般形式为:IF(条件)THENIF块ELSEELSE块END IF【例3-3】由于大气受到污染,一些地区开始形成酸雨区,酸雨是指PH值小于的雨雪或其他形式的大气降水。通过收集水样测量其PH值,判断它的酸碱性并打印出来。根据题意设计算法并画出程序流

8、程图,如图所示。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块1ELSE IF(条件

9、2) THEN块2ELSE IF(条件3) THEN块3.ELSE IF(条件n) THEN块nELSE块n+1END IF【例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(r

10、30) 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

11、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) thentm

12、ax=tend ifend doprint *, tmax=, tmaxprint *, tave=, taveend(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):, pre

13、cipread *, precipenddoprint *, 输入数据异常end程序运行结果DO-WHILE循环流程图 循环结构的选择:如果已知循环的次数,或者知道循环的初值和终值,那么用有循环变量的DO循环结构。知道循环的条件时,选用DO_WHILE循环结构,或者是重复DO循环结构。其中在使用这两种结构时,注意循环条件的变化,以避免“死循环”。(1) EXIT语句EXIT语句用于强制退出循环,将执行控制转移到当前循环或结构之外。 一般格式为:EXIT DO循环结构名3.3.2 循环流程控制语句EXIT语句的使用说明:EXIT语句通常是作为逻辑IF语句的内嵌语句来使用。其作用是有条件中断。 形

14、式为:IF(逻辑表达式) EXIT 结构名 执行过程为: 当逻辑表达式为真时,中止正在执行的循环,将控制转到EXIT语句指定的结构之后;当逻辑表达式为假时,继续正在执行的循环,不进行任何转移。【例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

15、=J内层循环步长R2 R21I=I外层循环步长R1 R11循环嵌套循环的次数:外层循环的次数为:R1内层循环的次数为:R2整个循环的次数为:R R=R1*R2计算循环嵌套循环次数:M=0DO I=1,3,4DO J=4,19,4 M=M+1 PRINT *, M ENDDOENDDOEND运行结果嵌套DO循环的说明 三种DO循环结构必须是完整的嵌套。循环嵌套时,内、外层不能使用相同的循环变量。循环转移的问题。DO循环结构可以与选择结构的嵌套。计算循环嵌套循环次数:M=0II: DO I=1,3,4JJ: DO J=4,19,4 M=M+1 if(M=3)EXIT II ENDDO JJENDD

16、O 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月-1990年12月的资料路径,依次输出至屏幕上。【例3-14】程序难点如何将年文件夹名称表示出来?如何将长度有变化的月文件夹名称表示出来?如何将年、月两个文件夹名称合并至整个文件路径中

温馨提示

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

评论

0/150

提交评论