fortran语言教程完整.docx
《fortran语言教程完整.docx》由会员分享,可在线阅读,更多相关《fortran语言教程完整.docx(213页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 2 章 FORTRAN 语言基础2.1 FORTRAN 的基本规定2.1.1 FORTRAN 语言使用的字符集字符是组成程序的基本符号,程序中的变量、函数、表达式、语句等程序基本要素都是用一个个不同的字符书写构成的。但是,各种程序设计语言都不会将所有的符号用于程序基本要素的描述,每种语言都要规定自己所使用的字符范围,这个字符范围就称为该语言的字符集。FORTRAN 90 的字符集包括以下字符:(1) 大写字母 26 个A B C X Y Z(2) 小写字母 26 个a b c x y z(3)数字 10 个0 1 2 3 4 5 6 7 8 9(4)特殊字符空格 = + * / ( ) :
2、 $ ,! & _ % 这些符号就是构成 FORTRAN 程序基本元素的所有符号。FORTRAN 程序中除字符常量所包含的字符外, 其他功能性内容的描述只能使用以上字符。2.1.2 FORTRAN 语言的标识符1) 标识符的命名规则标识符是用来表示程序中的变量、符号常量、函数、程序等对象的一组符号。标准 FORTRAN 90 规定, 标识符由字母和(或)数字、下划线符号组成,且第一个字符必须是字母。例如:ABC,x,y2,S123,sum,B2K9P3,MY_SUB,pro_file 等等都是合法的 FORTRAN 标识符;而 A-B, x&y,6T,S(x)B 等都不是合法的 FORTRAN
3、 标识符。2) 标识符的使用(1) FORTRAN 中的标识符通常用于表示程序中的变量名、程序名、函数名和符号常量名等。(2) 标识符中字母大写和小写等价。如 SUM,Sum,sUm,suM,sum 都代表同一个标识符。(3) 标识符中的空格不起作用,系统在识别时将予以忽略。如 S U M 将被识别为 SUM。(4) FORTRAN 中没有保留字。内部函数名、语句关键词等都可以用作标识符。例如,SIN 是系统(内部)函数正弦函数的名称,READ 是输入语句的关键词,它们都可以作为普通标识符表示变量:SIN=3.0 READ=10.5PRINT *,SIN,READ以上语句中的 SIN 和 RE
4、AD 并不代表函数和输入语句,而只代表普通的变量。由于这类标识符在程序中容易引起混淆,所以,建议尽量少用内部函数名和语句关键词作为普通标识符。(5) 在给标识符起名时,应充分考虑其所代表对象的含义,尽可能做到见名知义,以便于程序的阅读、修改和调试。例如,用 TOTAL 代表总量,用 BETA 代表等。(6) 在同一个程序单元中,不能出现同一个标识符代表不同对象的情况。特别是在使用与系统(内部)函数名或语句关键词相同名称的标识符时,该系统(内部)函数名或语句关键词就不能出现在该程序单元中;如果程序单元中已经出现了某些系统(内部)函数名或语句关键词,则该程序单元中就不能再有同名的标识符出现。例如:
5、PRINT=5 COS=3*COS(PRINT) PRINT *,PRINT,COS END36在以上程序单元中,同时出现了 COS 既代表一个变量又代表一个系统(内部)函数的矛盾,以及 PRINT 既代表一个变量又是语句关键词的情况,使计算机无法正确加以识别,因此,这是不允许的。2.1.3 FORTRAN 90 源程序的书写规则(1) 一行不受书写区域限制,可从每行的任意位置书写语句内容,每行宽度可到 132 列。(2) 允许在一行中书写多条语句,语句之间用分号“;”分隔。例如: A=1.0;B=2.0PRINT *,A,B END如果某条语句有语句标号,则该语句就应该写在一行中第一条的位置
6、,以保证语句标号指向的有效性。(3) 允许用“!”引出注释内容。“!”可以出现在一行中的任何位置,从“!”后的第 1 个字符开始到该行结束的内容就是注释内容。例如:!Exchange the values between A and B T=A!Assign the value of A to T A=B!Assign the value of B to A B=T!Assign the value of T to B(4) 使用“&”作为续行的标志。只要在语句行末尾的非空格字符是“&”,就表示该行的下一行是本行的续行。为保证续行的清晰,也可在语句续行的第一个非空格字符写上一个“&”。例如:Y
7、=1+SIN(X)+SIN(X)*2/2+SIN(X)*3/3+SIN(X)*4/4 & +SIN(X)*5/5FORTRAN 90 允许使用的续行可到 39 行,即一条语句最多可写 40 行。2.2 FORTRAN 语言的程序和语句FORTRAN 语言的程序有三种:源程序、目标程序和运行程序。其中源程序是由程序设计者设计编写的,目标程序是由计算机中的 FORTRAN 编译程序将源程序编译生成的计算机能识别的二进制代码程序,运行程序则是通过连接程序将目标程序与 FORTRAN 库文件连接后生成的另一种二进制代码程序。尽管 FORTRAN 的源程序只有经过系统编译连接生成运行程序后才能运行,但其
8、目标程序和运行程序都是由源程序派生而成的,因此,源程序是 FORTRAN 程序设计的根本。为了讲解的方便,本书中将所有的FORTRAN 源程序都简称为程序。2.2.1 FORTRAN 语言程序的构成1) FORTRAN 程序的构成程序 1 计算两个数的和,并输出计算结果。PROGRAM EXAM1READ(*,*) A,B C=A+BWRITE(*,100) A,B,C100FORMAT(1X,F5.1,+,F5.1,=,F5.1) END该程序的作用是从键盘输入两个数,计算其和并按 A+B=C 的形式输出。程序对输入的两个数要求整数部分包括符号和小数点在内不超过四位,小数部分不超过 1 位。
9、程序 2 计算并输出已知数据序列的和。PROGRAM EXAM2INTEGER A(10),SUMADATA A/3,6,10,2,0,12,5,7,9,4/ SUMA=SUM(A,10)CALL PRT WRITE(*,100) SUMA100FORMAT(1X,The result is:,I5) CALL PRTENDINTEGER FUNCTION SUM(X,N) INTEGER X(N)SUM=0DO 10 I=1,N10SUM=SUM+X(I) ENDSUBROUTINE PRTWRITE(*,100)100FORMAT(1X,20(-) END本程序由三个程序单元构成,第一个程
10、序单元名称为 EXAM2,是主程序;第二个程序单元名称为 SUM, 是一个函数子程序,用来求一个数据序列的和;第三个程序单元名称为 PRT,是一个子例行程序,功能是输出一条横线。在这个程序中,主程序先调用 SUM 子程序计算数据序列的和,然后调用子例行程序 PRT 输出一条横线,再输出计算结果,最后再次调用 PRT 输出一条横线。程序运行后的输出形式为:The result is: 58从以上两个程序例子可以大致了解到:(1) 一个 FORTRAN 程序由主程序和子程序两种程序单元构成。(2) 每个程序只能有一个主程序,可以有 0 个或若干个子程序。(3) 一个程序中必须而且只能有一个主程序,
11、并且可以将主程序放在任意位置。计算机在执行FORTRAN程序时,无论主程序在什么位置,都从主程序开始执行;无论有多少个子程序,当主程序结束时,程序运行就结束。(4) 子程序只能通过主程序直接或间接调用执行,自己不能单独运行。有时候,一个程序由于过于庞大,或由不同的设计人员设计,主程序和某些子程序可能不在同一个文件中。这些存放在不同文件中的程序单元可以单独进行编译,生成不同的目标程序。但要生成运行程序时, 必须将所有的目标程序连接在一起,生成一个运行程序才能运行。没有主程序的目标程序不能生成运行程序。2) FORTRAN 程序的程序单元程序单元也称为程序模块或程序块。除以上见过的程序单元外,FO
12、RTRAN 中还有另一种程序单元 数据块子程序。所以,FORTRAN 一共有四种程序单元。这些程序单元都有相似的结构形式:程序单元标识语句程序体END即由程序的标识语句开头,用 END 语句结尾。但每种程序单元又具有自己的标志和结构特点。(1) 主程序单元主程序单元的标识语句是 PROGRAM,但也可以省略。所以,主程序单元的结构可以表示为:PROGRAM 主程序名 程序体END“ ”表示其中的内容为可选内容,即可以选用,也可以不选用。(2) 函数子程序单元函数子程序单元由 FUNCTION 语句开头,结构形式为:类型说明符 FUNCTION 函数子程序名(函数形参) 程序体END由于函数子程
13、序在被调用后,其名称要带回一个数据值,而 FORTRAN 中的数据具有不同的类型,因此, 有时需要对函数子程序的名称进行数据类型说明。函数计算往往需要一定的参数,所以,在多数情况下函数子程序都有参数。这些参数在函数子程序单元中被称为形式参数(简称形参)或虚拟参数(简称虚参)。然而,有的函数可能不需要参数,相应的函数子程序单元中也就没有形参。(3) 子例行程序单元子例行程序单元用 SUBROUTINE 语句开头,结构形式为:SUBROUTINE 子例行程序名(形参) 程序体END子例行程序可以没有形参,也可以带有形参。没有形参时,子例行程序名后不能带括号;有形参时则必须带一对括号将形参括上。由于
14、子例行程序名不带回任何数据值,因此,不需要对其进行类型说明。(4) 数据块子程序单元数据块子程序用 BLOCK DATA 语句开头,结构形式为:BLOCK DATA 数据块子程序名 程序体END当程序中只有一个数据块子程序时,其程序名可有可无。没有程序名的数据块子程序称为无名数据块子程序。如果程序中有不止一个数据块子程序时,则只能有一个无名数据块子程序,其余的必须予以命名。程序单元名称的命名规则遵循 FORTRAN 标识符的命名规则,使用时不能与程序单元中的其他标识符同名,也不能与程序中的其他程序单元同名。每种程序单元的程序体都由若干条语句构成,这些语句根据其功能和性质按 FORTRAN 程序
15、的书写规则进行排列和组合。一个程序中的每个程序单元都是一个相对独立的程序块,程序单元内的语句标号、变量及其定义通常只在本程序单元内部有效,与其他程序单元无关。所以在同一程序的不同程序单元中,出现相同的变量名或相同的语句标号等是完全允许的。2.2.2 FORTRAN 语言的语句1) FORTRAN 语句的分类FORTRAN 语言的语句与其他高级语言的语句一样,是用来向计算机系统发出操作指令的。一条语句经系统编译后会产生若干条机器指令,程序就是通过其语句编译产生的指令来实现自身的功能的。由于对计算机所起的作用不同,FORTRAN 将语句分为两大类:非执行语句和可执行语句。在这两类语句中,根据所实现
16、的具体功能不同,又将每一类语句分成若干种:2) 非执行语句FORTRAN 的语句非执行语句可执行语句程序标识语句和入口语句说明语句赋初值语句格式语句语句函数定义语句赋值语句输入输出语句控制语句非执行语句,就是程序在运行时不能使计算机产生操作响应的语句。这类语句的作用实际上在程序编译时就实现了。(1) 程序标识语句用来标识程序的类型,必须放在程序单元的开始位置。共有四条: PROGRAM主程序标识语句FUNCTION函数子程序标识语句SUBROUTINE子例行程序标识语句BLOCK DATA数据块子程序标识语句(2) 程序入口语句只有一条 ENTRY 语句,用于设置子例行程序和函数子程序的第二个
17、入口。(3) 说明语句说明语句是一大类非执行语句,主要用来对程序中的变量、数组、参数等操作对象进行说明。说明语句包括: 类型说明语句包括六种类型的说明语句和隐含类型说明语句整型说明语句INTEGER实型说明语句REAL双精度型说明语句DOUBLE PRECISION 复型说明语句COMPLEX字符型说明语句CHARACTER 逻辑型说明语句LOGICAL 隐含类型说明语句IMPLICIT 数组说明语句DIMENSION 公用区语句COMMON 参数说明语句PARAMETER 内部说明语句INTRINSIC 外部说明语句EXTERNAL 变量值保留语句SAVE 等价语句EQUIVALENCE(2
18、) 赋初值语句DATA 语句,用来对变量赋初值。(3) 格式语句FORMAT 语句,用于变量输入输出时的格式说明。FORMAT 语句使用时必须带有语句标号。(4) 语句函数定义语句专门用来在程序单元中定义只在本程序单元使用的函数。其语句格式为:语句函数名(形参)= 表达式3) 可执行语句可执行语句,就是程序在运行时能让计算机产生操作响应的语句。这类语句的功能要在程序实际运行时才能实现。(1) 赋值语句赋值语句用来对变量、函数子程序名、数组元素等赋值,包括算术赋值语句、逻辑赋值语句、字符赋值语句和语句标号赋值语句。(2) 输入输出语句输入语句,即 READ 语句,用于变量值和数组元素值的输入。输
19、出语句用于程序中数据对象的输出,包括 WRITE 语句和 PRINT 语句。此外,还有针对文件操作的一些语句:OPEN 语句、CLOSE 语句、INQUIRE 语句、BACKSPACE 语句、ENDFILE 语句和 REWIND 语句等。(3) 控制语句控制语句是最多的一类可执行语句,它包括:转移语句无条件 GOTO 语句、计算 GOTO 语句和赋值 GOTO 语句。选择控制语句块 IF 语句、ELSE IF 语句、ELSE 语句、END IF 语句、逻辑 IF 语句和算术 IF 语句。循环控制语句DO 语句和 CONTNUE 语句。过程控制语句STOP 语句、PAUSE 语句、END 语句、
20、CALL 语句和 RETURN 语句。2.3 FORTRAN 语言的数据类型在 FORTRAN 90 中常用的数据类型包括:整型(INTEGER)、实型(REAL)、双精度型(DOUBLE PRECISION)、复型(COMPLEX)、字符型(CHARACTER)和逻辑型(LOGICAL)六种。计算机高级语言中将数据分类型存放和处理,是为了节省机器存储空间和提高运行速度。2.3.1 整型数据整型数据在一般的微机中占用 2 个字节,由于符号占位的原因,其数据范围为-3276832767。有的计算机也用 4 个字节来存储整型数据,则数据范围扩大为-231231-1。整型数包括正整数、负整数和 0,
21、正整数的正号可以省略。例如,+3、-152、246 等都是合法的整型数。除正负号和数字外,其他字符一律不能出现在整型数中,而且其正负号必须写在数据的开始位置。例如,10,000、3+2、-4*5、1/3、1E-2 等都不是合法的整型数。2.3.2 实型数据实型数据在一般微机中占用 4 个字节的存储单元,数据绝对值的大小范围为 10-381038,其有效数字为 7 位。如果采用更多的字节存放实型数据,则数据范围也相应增大。实型数据也叫实型常量、实型常数或实数。在 FORTRAN 中,实型常量有两种表示形式:(1) 小数形式日常习惯使用的小数表示形式,由正负号、数字和小数点组成。实型常量的一般形式
22、可表示为:a.b其中的 a 和b 分别代表若干位数的数字。如果整数或小数部分为 0,则可以将其省略:.b 或 a.正号也可以省略。不过,实型常量中的小数点是不能省略掉的;但也不能光有小数点,必须至少要有一个数字和小数点一起组成实型常量。例如:123.45、-12.08、+0.034、.01、-.064、8.、-100.等都是合法的实型常量,而 1.3+2.1、1/2、1.0/3、10-2、1.51102 等都不是合法的实型常量。(2) 指数形式FORTRAN 语言中实型常量的指数形式与其他高级语言中的表示形式是一样的,都采用科学记数法的形式表示,即以 E 或e 加上一个整数代表 10 的多少次
23、方。其一般表示形式为:a.bEc 或 a.bec其中,a.b 称为数字部分,Ec 或 ec 称为指数部分。在数字部分中 a 或 b 都可以省略,但不能同时省略;小数点也可以省略。指数部分不能省略。小数部分和指数部分如果是正数的话,可以省去正号。例如:1.02E-3、0.451E+4、1E2、-.1E-2 等都是合法的实型常量,它们分别表示 1.0210-3、0.451104、102、-0.110-2。而 1.34E、1*E-3、E-2、10*E+3 等都不是合法的实型常量。2.3.3 双精度型数据双精度型数据实际上是一种提高了有效数字位数的实数,通常采用实型数据的两倍存储单元长度来存放。在一般
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran 语言 教程 完整
限制150内