华科fortran第3章1 Fortran语言程序设计初步.ppt

上传人:牧羊曲112 文档编号:6449379 上传时间:2023-11-01 格式:PPT 页数:38 大小:222KB
返回 下载 相关 举报
华科fortran第3章1 Fortran语言程序设计初步.ppt_第1页
第1页 / 共38页
华科fortran第3章1 Fortran语言程序设计初步.ppt_第2页
第2页 / 共38页
华科fortran第3章1 Fortran语言程序设计初步.ppt_第3页
第3页 / 共38页
华科fortran第3章1 Fortran语言程序设计初步.ppt_第4页
第4页 / 共38页
华科fortran第3章1 Fortran语言程序设计初步.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《华科fortran第3章1 Fortran语言程序设计初步.ppt》由会员分享,可在线阅读,更多相关《华科fortran第3章1 Fortran语言程序设计初步.ppt(38页珍藏版)》请在三一办公上搜索。

1、第三章 Fortran语言程序设计初步,3.1 Fortran语言发展概况3.2 简单的Fortran程序分析3.3 Fortran源程序的书写格式3.4 Fortran字符集3.5 运行一个Fortran程序的过程,50年代末诞生了第一个主要用于科学计算的高级语言FORTRAN语言。Fortran是英文FORmula TRANslation的缩写,意为“公式翻译”。它是为科学、工程问题中的那些能够用数学公式表达的问题而设计的语言,主要用于数值计算。这种语言简单易学,因为可以像抄写数学教科书里的公式一样书写数学公式,它比英文书写的自然语言更接近数学语言。,FORTRAN语言简介,3.1 For

2、tran语言的发展概况,Fortran语言是第一个真正推广的高级语言。至今它已有五十多年历史,但仍历久不衰,始终是数值计算领域所使用的主要语言。Fortran语言问世以来,根据需要几经发展,先后推出形成了很多版本。,FortranI:第一代Fortran语言,在1954年提出来的,于1956年在IBM 704计算机上得以实现。,FortranII:是1958年出现的,它对FortranI进行了很多扩充(如引进了子程序),FortranII在很多机器上得以实现。,FortranIII:未在任何计算机上实现。FortranIV:1962年出现。对原来的Fortran作了一些改变,使得Fortran

3、II源程序在FortranIV编译程序下不能全部直接使用,导致了语言不兼容的问题。这样就形成了当时同时使用FortranII和FortranIV两种程序设计语言的局面。,Fortran66:1966年正式公布了两个美国标准文本:标准基本Fortran X3.10-1966(相当于FortranII)和标准Fortran X3.9-1966(相当于FortranIV)。,问题:很多编译程序并不向这一标准靠拢,它们往往为实现一些有用的功能而忽略标准;FortranIV、66都不是结构化的语言,没有直接实现三种基本结构的语句,在程序中往往需要用一些以GOTO语句以实现特定的算法;而且为了使非标准的F

4、ortran源程序能够交换移植,产生了“预处理程序”,通过预处理程序读入非标准的Fortran源程序,生成标准的Fortran文本,从而实现了源程序的交换移植,但这种自动生成的Fortran程序通常让人难以理解。,Fortran77:美国标准化协会在1976年对ANSI X3.9-1966 Fortran进行了修订,基本上把各厂家行之有效的功能都吸收了进去,此外又增加了不少新的内容,1978年4月美国标准化协会正式公布将它作为美国国家标准,即ANSI X3.9-1978 Fortran,称作Fortran77。Fortran77还不是完全结构化的语言,但由于增加了一些结构化的语句,使Fortr

5、an77能用于编写结构化程序。此外,还扩充了字符处理功能。使Fortran不仅可用于数值计算领域还可以适用于非数值运算领域。,Fortran90:因为Fortran77有着明显的局限性,为了引入一些新的功能,适应语言的发展,1991年通过了Fortran90新标准ANSI X3.198-1991,相应的国际化标准组织的编号为ISO/IEC1539:1991。新的Fortran标准废弃了过时的严格的源程序书写格式,改善了语言的正规性,并提高了程序的安全性,功能有更大的扩充,是一个能适应现代程序设计思想的现代程序设计语言。为了保护对Fortran77用户在软件开发上的巨大投资,整个Fortran7

6、7被作为Fortran90的一个严格子集。对科学计算特别有益之一是自动存储、假定形状数组、可选参数、结构和指针。用更友好的接口把软件很好地工程化。,FORTRAN 2000:全面引入面向对象的编程思想。FORTRAN已经完全赶上了编程语言的潮流。,Fortran95:它的设计在1995年11月完成,是Fortran90的最小扩展。,学习Fortran语言的意义在于继承传统和紧跟时代。科学计算编程的专家认为,科学与工程相关专业的学生应该采用Fortran而非C和C+编程。这是因为,Fortran90具有C+所有的重要功能(,然而C语言主要是用于微机上的廉价开发,而Fortran的目的是为了产生高

7、效最优化运行的可执行程序,用Fortran编写的大型科学计算软件较C语言编写的通常要快一个数量级,其程序编写更为自然和高效,且易学易懂。尤其是在高性能并行计算逐渐成为时代必然的今天,不仅巨型机而且微机和工作站也有了多处理器,其串行机上的线性内存模式已不再适用,而只有Fortran具备处理相应问题的标准并行化语言,其独特的数组操作充分体现了它的先进性。,为什么选择学习Fortran,为什么选择 Fortran77,由于很多用户在Fortran程序上作了巨大的投资,许多大型科学计算Fortran程序(有些长达数十万条语句),如分子动力学模拟计算(C60-C240的碰撞)等程序仍在频繁地使用。在科技

8、领域内某些标准程序库(International Mathematics and Statics Library,Numerical Algorithms Group)内有数千以上的子程序是用Fortran写的,特别是早期的程序都是用Fortran77编写的,这些程序库已通过长期使用验证了稳定性。科学研究经常需要使用或改编以前的程序,这时必须了解Fortran77的编程手法。因此,仍然需要学习将Fortran77作为基础,但随时与Fortran90比较不同之处。,Fortran90/95是具有强烈现代特色的语言,总结了现代软件的要求与算法应用的发展,增加了许多现代特征的新概念、新功能、新结构、

9、新形式。Fortran90的现代特性表现在:,Fortran90/95,加强了程序的可读性、可维护性:淘汰所有转移语句,用新的控制结构实现选择分叉与重复操作,使程序结构化。同时增加了结构块、模块及过程的调用灵活形式,使程序易读易维护,新的模块装配取代了Fortran77的许多旧语句,使程序员更为清晰明确地定义全局数据。增加了新的数据种别说明,使得Fortran程序在不同计算机编译环境下有更自由的移植性。,发展了现代算法功能:加强了数组的算法功能,引进了多种数组操作功能与概念,使数组像一个变量一样自由操作,使数组的并行化运算成为可能。增加了适于操作数据结构的派生类型,提高了文字处理功能,胜任信息

10、管理系统、办公自动化的任务。特别是动态存储功能的引进极大地加强了它在数值计算领域中应用的威力。扩大与编程者的友好界面:新的编程形式减少了烦琐与格式束缚,接近自然语言与公式演算。允许在字符数据中选取不同种别,在字符串中可使用各国文字(例如汉字),还可任意使用化学、物理、数学的各种专业字符。,例1.1 输入两个数,求算数平均和几何平均值。1.0 2.0 键盘输入(a,b)值 1.500000 1.414214 计算结果输出至屏幕,F77的固定书写格式 PROGRAM Example_1_1 C-求两种平均値-(注释行)REAL a,b,av1,av2 READ(*,*)a,b av1=(a+b)/

11、2 av2=sqrt(a*b)WRITE(*,*)av1,av2 END,3.2 简单的FORTRAN 77程序分析,F90的自由格式PROGRAM Example_1_1!求两种平均値REAL:a,b,av1,av2READ*,a,bav1=(a+b)/2;av2=(a*b)*0.5PRINT*,av1,av2END,程序説明:程序中第1行是注释行,对程序起说明作用。F77注释行是以“C”或“*”作为该行第一个字符的,F90可在任意一行末以“!”开始作为注释符。第2行是主程序名,第3行是变量类型定义,第4行是输入语句,第56行是赋值部分,第7行是打印输出语句,最后是程序结束。F90中用“;”

12、将两行并为一行。,例1.2 输入圆錐底面半径R,高度H,求体积和表面积。从数学公式中知道:,V=R2H/3,圆锥侧面积,圆锥体积,-求圆錐体积和表面积-F77的固定书写格式*EXAMPLE 1_2 REAL R,H,S,V PI=3.1415926 PRINT*,Input radius r and height h?READ(*,*)R,H S=PI*R*SQRT(R*R+H*H)V=PI*R*2*H/3 PRINT*,Volume=,V PRINT*,Area=,S END,F90的自由格式 PROGRAM Example_1_2 REAL:pi,r,h,v,s pi=3.141593 P

13、RINT*,Input radius r and height h?READ*,r,h v=pi*h*r*2/3.0 s=pi*r*(r+sqrt(r*2+h*2)PRINT*,Volume=,v PRINT*,Area=,s END,例1.3 分别求半径R=1,3,12.5时的圆周长。此源程序由二部分组成:主程序和子程序。F90的自由格式real:r(3)!MAIN PROGRAMdata r/1,3,12.5/do i=1,3 print*,半径,r(i),圆周长,c(r(i)end doendfunction c(radius)!SUB PROGRAM pi=acos(-1.0)c=2*

14、pi*radius returnend,F77的固定书写格式C MAIN PROGRAM PROGRAM EX3 REAL R(3)DATA R/1,3,12.5/DO 10 I=1,3 PRINT*,R,r(i),C,C(R(I)10 CONTINU ENDC SUB PROGRAMFUNCTION C(R)PI=3.1415925 C=2*PI*R RETURNEND,一个Fortran程序由一个或若干个程序单位组成。主程序和辅程序分别是一个独立的程序单位。主程序单元起整体控制作用,各辅程序单元完成总问题中的一个子问题。每一个程序单位都是以END语句结束的。END既是一个程序单位的结束标志

15、,又是一个独立的语句(结束语句)。主程序中的END语句的作用-是使程序“停止运行”。辅程序中的END语句-是“使流程返回调用程序”。,Fortran程序的特点,一个程序单位包括若干行。F77规定,一行只能写一个语句,一行中不能写几个语句。如果一个语句太长,一行内写不下的话,可以写在继续行(要用“续行标志”)。F77行分为下面两类。,语句行:由一个Fortran语句组成,Fortran语句分为执行语句和非执行语句。执行语句使计算机在运行时产生某些操作,如赋值语句、打印语句等。非执行语句(包括说明语句,数据语句等)将有关信息通知编译系统,以便在编译时作出相应的处理,例如类型说明语句、函数子程序语句

16、等。,非语句行:即注释行它不是Fortran语句,它不被翻译成机器目标指令。不产生任何机器操作。它仅仅是为了人们阅读程序的方便而加到程序中的。一个程序中注释行的数目不受限制,根据需要而定。但一个程序单位不能只由注释行组成。注释行的内容完全是根据程序设计人员需要而写的,一般是为程序(或程序中一部分)的作用作注释以易于理解程序。F90行不分类。注释可以写在任一行末尾,而且一行不限语句数,可以将几个F77行合并写入一行。这样,极大地简化了程序写法,使得程序可以编写得更为清晰明了。因此F90的格式较F77有柔软性。,Fortran程序中的语句可以有标号。一个语句有否标号是根据需要而定,其作用是标志一个

17、语句以便被其它语句引用。在同一个程序单元中不能有两个相同标号的语句。标号不影响语句的执行顺序。在F90中因为提倡结构化程序设计,一般不使用标号。一个程序单位中各类语句的位置是有一定规定的。例如 PROGRAM语句应是主程序的第一个语句 FUNCTION语句是函数子程序的第一个语句 SUBROUTINE语句是SUB子程序的第一个语句 END语句只能是程序单位中最后一行。,主程序 PROGRAM 程序名 语句可省略.END PROGRAM 程序名 END必须有,FORTRAN 程序的构成,a)程序单位,辅程序(过程)SUBROUTINE 子程序 FUNCTION 函数 BLOCK DATA 块数据

18、 MODULE 模块(F90),内部过程CONTAINS(F90),各程序单位(除模块程序单位外)的程序体形式相同,共分两部分:前面是说明部分,后面是执行部分(模块程序单位只有说明部分),两部分之间没有确切的分界,紧密衔接,但不准彼此穿插。即:程序单位单位起始语句程序体单位结束语句。程序体说明部分执行部分。,PROGRAM,FUNCTION,SUBROUTINE,BLOCK DATA等程序单位开始语句 变量类型和语句函数等定义语句(说明部分)执行语句,DATA语句,FORMAT语句(执行部分)END语句,b)程序体和语句顺序,Fortran要求严格的语句顺序。在每个程序单位中,根据语句种类按如

19、下的次序排列。F77中的顺序可简单归纳为:,在F90中将新增加的语句功能综合后,其顺序为:,整个程序中只能有一个PROGRAM,一个BLOCK DATA,可以有多个各自命名的FUNCTION和SUBROUTINE辅程序。,c)英文名变量名和程序名等使用的英文名是由(F77:6;F90:31)个字符(包含英文字母A-Z、数字0-9、F90:下划线 _)构成,且第一个字符必须是字母。其英文名的有效使用范围原则上限于一个程序单位之内(内部过程除外)。如下面的语句是错误的:INTEGER:1A!不是以字母开头 INTEGER:A_name_made_up_of_more_than_31_letters

20、!太长 INTEGER:China:0!含有不允许的字符 INTEGER:A-3!减号在此是无意义的,d)标号和标签可在语句开头加上标号或标签,用于指定特定的语句。有效范围限于一个程序单位内。标号:1-5位的10进制整数,且至少一位不为0,前导0不起作用。F90中,不可对空语句加上语句标号。,例:DO 10 k=1,100.10 CONTINUE,标签:英文名,后面接“:”(冒号)(F90),注:不能使用整型变量来指定转向语句的标号。如下是错误的。n=10 GOTO n,例:DO k=1,100loop2:DO.END DO loop2!已有标签名时不能省略标签名。END DO,a)固定格式F

21、ortran作为历史上第一种高级语言,其程序编写的规则与当时使用的计算机系统有很大的关系。早期的计算机系统须用卡片将源程序输入,一张卡片相应于源程序的一行。由于卡片物理宽度的限制,因此一行程序允许的字符数也是有限的。由此决定了F77的格式,既为F90/95中的固定格式。,3.3 FORTRAN源程序的书写格式,标号区:第l5列可以写l至5位整数。也可以没有标号。标号区中的空格不起作用。如lOO与100 或1 0 0作用相同。标号应是无符号整数(无正负号或小数点)。标号大小顺序没有任何要求。假如第二行的标号为1000,第三行的标号可以是10,也可以是99999。标号区内不得出现标号以外的内容,但

22、注释行例外。注释行的内容可以写在标号区内,一行中第一列为C或*的,该行即被认为注释行,编译时对该行内容不作翻译,对程序运行不产生任何影响。如果在第一列上出现的不是数字、空格或C和*的字符,编译时按出错处理。,一行分为四个区,分别书写源程序不同部分的内容,续行区:第6列如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。F77允许一个语句有19个续行(即一个语句最多可以写成20行)。有的程序中第6列上用“l”,“2”,表示该行是第1个或第2个续行,但用数字字符容易与第7列的数字形成连续的数字串而引起错觉,故最好使用固定的特殊字符。,语句区:第772列不要求一定从第7列开始写语

23、句,可以从第7列以后(72列以前)的任何一列开始写,但一行只能写一个语句。如果写满了72列,一旦在终端上修改程序时在该行又插入了一些字符,就会使本行最后几个字符超出语句区而引起意料不到的错误。特别注意到语句最后的空格将可能溢出72列,在某些计算机系统上将导致难以查出的错误。应注意,引号内的字符串中所包括的空格是有效的,不能忽略。注释区:第7380列在卡片输入法时代,程序员一般利用此8列为程序行编序号以便查找。注释区只对程序员提供辨别信息,不是语句的一部分,在编译时不对7280列作处理。,续行标志区,b)自由格式在F90中,用自由格式编写程序有很大的自由度。与固定格式相比,不易产生键入位置的错误

24、,而且易读易懂。行:一行为132列。可以有复数条程序语句,语句间用分号“;”分开。语句没有位置规定。注释行:起始用注释符“!”号,此行其后的所有字符均作为注释(字符串中的!号除外,如 print*,help!)。续行:当一个语句非常长以至于132列都书写不下时,允许有39个续行。在语句行最后加上续行符“&”号。如果字符串跨2行以上,则在续行的开始位置也要加&号。注意语句的有效字符是从“&”前和续行符“&”之后的位置算起。,INCLUDE行很多时候一个完整程序的源码还可以原封不动地移植到另一个程序源码的中间,这时并不需要把被移植源码完整地抄写过来,而只需要简单地运用INCLUDE行即可。,【例3

25、-1】PROGRAM GREEN_FUNCTION REAL X,Y,Z.INCLUDE GAUSE.END,这样源码文件GAUSE就直接进入程序GREEN_FUNCTION的源码里面,取代了INCLUDE行的位置。,INCLUDE行只是针对编译器的一个提示,而不是属于程序内的FORTRAN语句。INCLUDE行必须放置在程序当中,其所引用文件应当出现的位置。INCLUDE行所在行不能有任何其他文字,包括标识符,当然可以有注释。INCLUDE行可以进行嵌套,嵌套的层数由具体的编译器规定。注意在嵌套的同时不能导致定义循环。INCLUDE行之前的语句不能是被连续行,其后的语句也不能是连续行。,c)文件名以上两种格式的源程序在编译时可以用选项来指定,对应的默认文件扩展名为:固定格式:.for或.f 自由格式:.f90,运行一个FORTRAN程序的过程,编辑、编译、连接、运行,Compaq Visual Fortran 的集成开发环境(在WINDOWS下),操做顺序:1.进入WINDOWS 20002.选择E盘并建立自己的文件夹3.在“开始”菜单中选择“程序”“Compaq Visual Fortran 6”。4.进入Compaq Visual Fortran开发环境的主窗口,用户可以进行编辑、编译、连接和调试。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号