Fortran 程序基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

金鑫2010.8.6Fortran语言基础知识1数据类型及I/0格式2Fortran基本语法结构及程序控制3数组操作4文件操作及批处理6子程序及模块化5Fortran编程实例及分析7Fortran语言简介作为一门诞生于上个世纪50年代后半期的高级计算机语言,Fortran在这个C/C++、Java等新兴语言大行其道的时代仍然活跃在人们的视野之中。Fortran语言的长项在于数值计算,在科学研究和工程设计领域有着广泛的用途。在描述数学语言的自然性方面,Fortran同现存的其他高级语言相比有着明显的优势。对于科研工作者和工程技术人员而言,Fortran语言的易学性和易用性是公认的。1954:IBM在IBM704上发展1957:IBM发表,Fortran→FormulaTranslator1966:AmericanStandardsAssociation制定Fortran66◦鉴于各家编译器无法相容,故统一标准◦AmericanStandardsAssociation:美国国家标准局(ANSI)的前身1978:ANSI公布Fortran77标准◦删去部分内容,新增逻辑与输入输出方面的功能1992:国际标准组织ISO公布Fortran90标准◦与77版本差异较大◦加入物件导向、提供指针与加強阵列功能、自由格式写作1997:国际标准组织ISO公布Fortran95标准◦加强并行运算Fortran200xCompaqVisualFortran6.5固定格式(Fortran77,后缀.f;.for)自由格式(Fortran90,后缀.f90)在Fortran语言中,有五种基本的数据类型可供使用。他们分别是整型(INTEGER)、实型(REAL)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)对我们来说常用的数据类型为整型、实型、字符型各数据分类分别包括常量及变量变量名的作用是识别程序中的变量。Fortran中的变量名命名有一定的规则,主要有以下几条。变量名中只能包含26个英文字母和0~9十个数字;在Fortran90/95标准中,还允许使用下划线“_”。变量名的第一个字符必须是字母,不能是下划线“_”或数字。在Fortran77标准中,变量名不允许超过6个字符;在Fortran90/95标准中,变量名不允许超过31个字符。变量的定义及类型说明:(1)类型说明语句integeryear,month,dayrealrunoffcharacter*10station(2)隐含约定I~N规则输入、输出语句READ(设备号,格式说明或格式说明语句标号)[变量列表]WRITE(设备号,格式说明或格式说明语句标号)[变量列表]READ,WRITE语句中当设备号为星号“*”时,表示从默认的设备输入输出;格式说明为星号“*”表示表控格式输入、输出;输入、输出项可以有多个,每个输出项之间用逗号“,”分隔;当语句中没有输出项时,命令将输出一个空白行。表控格式输入、输出格式输入、输出格式输入输出控制符常用控制符i,f,a写法:nIw;nfw.d;naw如:integeryear,month,daywrite(*,(3i8))year,month,day又如:realrunoffwrite(*,(f9.2))runoff格式说明语句format写法:FORMAT(format-list)如:integeryear,month,daywrite(*,15)year,month,day15format(3i8)Fortran三种常用运算算数运算:算数运算符及算数表达式关系运算:关系运算符及关系表达式逻辑运算:逻辑运算符及逻辑表达式其中,算数运算是Fortran的基本运算,其基本运算符包括+,-,*,/,**关系运算在实际的数学或工程问题中,经常会遇到比较两个数据谁大谁小的问题。这就是一个关系比较的问题。在Fortran中,提供了进行这类操作的运算符和表达式规则。关系运算符也可以称作关系比较符,它是一个双目运算符。Fortran中定义了六个基本的关系运算符运算符定义所代表的数学符号意义描述.GT.>大于.GE.≥大于等于.LT.<小于.LE.≤小于等于.EQ.=等于.NE.≠不等于关系表达式是最简单的一种逻辑表达式,它的一般形式为:关系运算量关系运算符关系运算量关系运算量可以是算术量,也可以是字符量。算术量可以是数值型常量、数值型变量、数值函数,还可以是算术表达式。如:A+B3.5等价于A+B.GT.3.540=40等价于40.GE.4040C等价于40.LT.CCOS(B)=0.5等价于COS(B).LE.0.5(M+N)*X==0.0等价于(M+N)*X.EQ.0.0X-Z.NE.(Y+X)等价于X-Z.NE.(Y+X)关系运算符等级低于算数运算符逻辑运算Fortran语言中提供了5种逻辑运算符供程序员在编程时使用。新旧Fortran标准中的逻辑运算符没有任何区别,每个运算符的左右两侧都有一点“.”,书写时不可以省略。逻辑运算符中有的是双目运算符,有的是单目运算符,使用中需要注意。逻辑运算符定义表示的含义逻辑运算示例例子含义.AND.逻辑与A.AND.BA,B都为真时,表达式为真.OR.逻辑或A.OR.BA,B之一为真时,表达式就为真.NOT.逻辑非.NOT.AA为真时,表达式为假.EQV.逻辑等价A.EQV.BA和B为同一逻辑常量时,表达式为真.NEQV.逻辑不等价A.NEQV.BA和B为不同逻辑常量时,表达式为真逻辑表达式的一般形式为:逻辑运算量逻辑运算符逻辑运算量[逻辑运算符逻辑运算量…]同关系表达式不同,一个逻辑表达式中可以包括多个逻辑运算符,例如逻辑表达式“A.GE.10.0.AND.A+C.GT.B+D.OR..NOT..TRUE.”中包含了.AND.、.OR.、.NOT.三个逻辑运算符。在逻辑表达式中除了有逻辑运算符外,还可以有关系运算符和算术运算符。下面是一些逻辑表达式的例子:(A.GT.B).AND.(A.NE.C)等价于(AB).AND.(A/=C)(X.LT.-1.0).OR.(X.GT.1.0)等价于(X-1.0).OR.(X1.0).NOT.((A+C)*D.LE.0.0)等价于.NOT.((A+C)*D=0.0)(A.GT.B).EQV.(C.LE.D)等价于(AB).EQV.(C=D)在上面的一系列例子中,有的逻辑表达式中既有逻辑运算符,又有关系运算符和算术运算符。对于这种混合了多种运算符的表达式,Fortran语言规定了不同运算符的运算顺序:首先计算算术表达式的值(例如前面一个范例中的A+C和B+D)。接下来再求关系表达式的值(例如前面一个范例中的A.LE.10.0和A+C.GT.B+D)。最后进行逻辑运算,各个逻辑运算符的先后顺序是:.NOT.>.AND.>.OR.>.EQV.=.NEQV.。如果逻辑表达式中有括号,则先进行括号内的运算。程序流程控制的常用语句结构判断If语句goto语句块if结构do循环结构常用结构选择结构循环结构If语句IF(逻辑表达式)执行语句块If结构IF(逻辑表达式1)THENTHEN块ELSEIF(逻辑表达式2)THENELSEIF块……ELSEELSE块ENDIFgoto语句goto语句标号do循环语句DO循环变量=循环初值,循环终值[,循环增量]循环体ENDDO当循环增量为1时,可省略选择结构设计块IF语句多层嵌套块IF语句循环结构设计“当”型循环“直到”型循环其他程序控制语句EndPausestop实例分析(1)1~100求和(2)输入5个数,按大小排序数组是Fortran语言中功能最为强大、运用最为灵活的一种数据结构。在存储结构上,数组占用一片连续的存储单元。程序中通过数组索引来对数组元素、片断进行操作。数组的基本操作数组的定义数组的引用数组的赋值数组的计算数组的输入输出数组的定义类型说明[::]数组名([下标下界:]下标上界[,…])[,…]如realrunoff(365)realrunoff(12,31)realrunoff(1:12,1:31)数组下标下界缺省时,值为1数组可用DIMENSION语句定义DIMENSIONrunoff(365)Realrunoff※使用数组必须先定义数组引用(1)引用数组元素数组名(下标),如runoff(15),rain(3,5)(2)引用全部数组数组名,如:realB(10),A(10)B=A(3)引用数组片段数组名(下标范围)PROGRAMTESTIMPLICITNONE!变量定义REAL::A1,A2,A3,A4,A5,B(5,5)READ(*,*)A1,A2,A3,A4,A5!数组片断的引用B(1,1:5)=A1B(2,1:5)=A2B(3,1:5)=A3B(4,1:5)=A4B(5,1:5)=A5ENDPROGRAMTEST数组赋值(1)赋值语句数组对象=value(2)data语句(赋初始值)datadays/31,28,31,30,31,30,31,31,30,31,30,31/(3)do循环doi=1,12doj=1,31runoff(i,j)=0enddoenddo数组的运算包括数组之间的运算及数组元素之间的运算数组的运算,如数组间的数学运算(+,-,*,/,**),数组的合并、转置运算等,直接以数组为操作对象。数组元素之间的运算多通过循环语句进行数组的输入输出数组的输入输出多通过do循环语句或隐式do循环语句进行如doi=1,12doj=1,days(i)write(*,*)runoff(i,j)enddoenddo又可写成doi=1,12write(*,*)(runoff(i,j),j=1,days(i))enddo一个Fortran程序中通常不是只由一个主程序组成,而是由几个按某种方式划分的不同程序单元来共同组成。尽管Fortran程序中允许只有主程序而没有子程序,但绝不允许只有子程序而没有主程序。在Fortran中,程序的执行总是从主程序开始的。程序可以有一个或多个子程序。函数子程序(FUNCTION)子例行子程序(SUBRIOUTINE)各子程序间的数据传递函数子程序和子例行子程序是子程序的两种常用基本形式。它们的共同特征就是作为数据处理过程的集合。但是这两种子程序也不完全相同,函数子程序会返回一个函数值,且通常不会改变哑元的数值。因此,函数子程序更像是数学上的一个函数。而子例行子程序通常用于完成一项更为复杂的任务,通过哑元或者其他手段返回几个结果,哑元的数值通常会在程序的执行过程中改变。函数子程序的一般形式为:[prefix]FUNCTIONname([d-arg-list])[RESULT(r-name)]...END[FUNCTIONname]1.prefix说明项prefix说明项是一个可选参数,可以使用如下两种形式来书写:type[keyword]或keyword[type]2.d-arg-listd-arg-list表示函数的哑元列表。如果函数子程序不包含哑元,则哑元列表可以省略,但是函数名后的括号不能省略。3.RESULT关键字RESULT关键字用于声明将函数的返回值保存在其后的变量名中,称为函数结果名。函数子程序的调用与内在函数的调用形式一样。在主调程序的任意位置,可以通过下面的语句形式将函数子程序的计算结果赋值给变量:V=函数名(实元表)其中,V表示用于接收函数计算结果的变量;实元表是程序中实际传入函数子程序的变量

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功