fortran77程序设计简介.ppt
《fortran77程序设计简介.ppt》由会员分享,可在线阅读,更多相关《fortran77程序设计简介.ppt(281页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、FORTRAN 77语言语言-结构化程序设计结构化程序设计主讲:王 飞江苏科技大学教材:FORTRAN语言FORTRAN77结构化程序设计谭浩强等编著第一章 FORTRAN语言程序设计初步 1.1 FORTRAN语言发展概况1.2 简单的FORTRAN 77程序分析1.3 FORTRAN源程序的书写格式1.1 FORTRAN语言发展概况 lFORTRAN语言是世界上第一个被正式推广使用的高级语言。它是1954年被提出来的,1956年开始正式使用,至今已有五十多年历史,但仍历久不衰,它始终是数值计算领域所使用的主要语言。lFORTRAN是英文FORmula TRANslation的缩写,意为“公
2、式翻译”。它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。lFORTRAN 77还不是完全结构化的语言,但由于增加了一些结构化的语句,特别是“块if”语句,提供了IF-ELSE-ENDIF形式的判断控制语句,使FORTRAN 77能用于编写结构化程序。此外,还扩充了字符处理功能,使FORTRAN不仅可用于数值计算领域,还可以使用于非数值运算领域。l目前,FORTRAN77已在国内外广泛使用,大多数计算机系统都已配置了FORTRAN 77。lFORTRAN语言的不同版本:FORTRAN I、FORTRAN II、FORTRAN IV、FORTRAN
3、 66、FORTRAN 77、FORTRAN 901.2 简单的FORTRAN 77程序分析 为了使读者从一开始就了解什么是FORTRAN 77程序,下面先介绍两个很简单的FORTRAN 77源程序。例1.1求三个数的平均数程序代码:C CALCULATE THE AVERAGE OF THREE NUMBERSX=90.5Y=87.0Z=68.5AVER=(X+Y+Z)/3.0PRINT*,THE THREE NUMBERS ARE,X,Y,ZPRINT*,AVERAGE=,AVEREND例1.2分别求R=1,3,12,5时的圆周长可以用一个子程序来求圆周长。源程序由两部分组成:(1)主程序
4、C MAIN PROGRAMPROGRAM EX2PRINT*,R=,1.0,C=,C(1.0)PRINT*,R=,3.0,C=,C(3.0)PRINT*,R=,12.0,C=,C(12.0)PRINT*,R=,5.0,C=,C(5.0)END(2)子程序C SUBPROGRAMFUNCTION C(R)PI=3.1415926C=2*PI*RRETURNEND从以上例子中可以看出:1、一个程序由一个或若干个程序单位组成。主程序和每一个子程序分别是一个独立的程序单位。在解决一个比较复杂的问题时,可以分别将每个功能编为一个子程序,然后按搭积木一样将各有关程序单位组成一个程序。一个程序单位就是一个
5、模块,结构化程序设计需要采用模块化方法,在FORTRAN中,子程序是实现模块化的有效方法。2、每一个程序单位都是以“END”结束的。在FORTRAN 77中,END既是一个程序单位的结束标志,又是一个独立的语句(结束语句)。主程序中的END语句的作用是使程序“停止运行”,子程序中的END语句是“使流程返回调用程序”。请注意在一个程序单位中只能有一个END语句,如果需要,可以用STOP语句使程序终止或用RETURN语句从子程序返回。3、一个程序单位包括若干行。FORTRAN行分为两类:(1)语句行。由一个FORTRAN语句组成,它对程序运行情况是有影响的。FORTRAN语句分为:执行语句和非执行
6、语句。执行语句使计算机在运行时产生某些操作,如赋值语句、打印语句等。非执行语句(包括说明语句,数据语句等)将有关信息通知编译系统,以便在编译时作出相应的处理,例如类型说明语句、函数子程序语句等。(2)非语句行,即注释行。它不是FORTRAN语句,它不被翻译成机器目标指令,不产生任何机器操作。它仅仅是为了人们阅读程序的方便而加到程序中的。一个程序中注释行的数目不受限制,根据需要而定。但一个程序单位不能只由注释行组成。注释行是程序的一部分,在打印程序清单时,注释行也照样打印出来。注释行的内容完全是根据程序设计人员需要而写的,一般是为程序(或程序中某一部分)的作用作注释。注释可以用英文或汉语拼音文字
7、,还可以用汉字作注释。在一些实用程序中,注释行的篇幅有时占整个程序的三分之一以上。4、FORTRON程序中的语句可以没有标号,也可以有标号,根据需要而定。标号的作用是标志一个语句以便被其它语句引用。在同一个程序单位中不能有两个相同标号的语句。标号不影响语句的执行顺序。程序中语句执行的顺序一般依照它们在程序中的位置而定,即写在前面的语句先执行,写在后面的语句后执行。5、一个程序单位中各类语句的位置是有一定规定的,例如PROGRAM语句应是主程序的第一个语句,FUNCTION语句是函数子程序的第一个语句,END语句只能是程序单位中最后一行。6、FORTRAN源程序必须按一定的格式书写。哪些内容写在
8、一行中的哪一列都有严格的规定。1.3 FORTRAN源程序的书写格式 FORTRAN源程序必须严格地按照一定的格式书写。在编译时对一行中不同位置上的内容分别处理。标准的FORTRAN程序纸格式见下图。1、第l5列为标号区:可以写l至5位整数。也可以没有标号。标号区中的空格不起作用。如 l00与100 或1 0 0作用相同。标号应是无符号整数(不应包括正负号或小数点)。标号大小顺序没有任何要求。假如第二行的标号为1000,第三行的标号可以是10,也可以是10000。标号区内不得出现标号以外的内容,但注释行例外。注释行的内容可以写在标号区内,一行中第一列为“C”或“*”的,该行即被认为注释行。如果
9、在第一列上出现的不是数字、空格或“C”和“*”的字符,编译时按出错处理。2、第6列位续行标志区:如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。3、第772列为语句区:语句可以从第7列以后的任何一列开始写,但一行只能写一个语句。语句区中的空格(除引号内的字符串内的空格)在编译时被忽略,例如SIN(X)与S IN(X)等效。4、第7380列为注释区:程序员一般利用此8列为程序行编序号以便查找。3.1 常量所谓常量是指其值始终不变的量,例如3,5.6,-8在FORTRAN中允许使用下面六种常量:(1)整型常量(2)实型常量(3)双精度常量(4)复型常量(5)逻辑型常量(6)
10、字符型常量。3.1.1 整型常量 整型常量,又称整型常数或整数(integer)。它是一个正的或负的或零的数。例如5,-8,+123。FORTRAN中的整数不应包括小数点。整数可以包括数符,也可以不包括数符。常数中各数字之间的空格不起作用。常数中不允许加入逗号。3.1.2 实型常量实型常量,又称实数(real)。实数有两种表示形式:(一)小数形式:例如+12.3,-68.56,3.75,0.0等。它由一个或多个数字和一个小数点组成。小数点前或小数点后可以不出现数字,但不能小数点前后都不出现数字。例如+0.8,-8.0,0.0,60.,.36,.0 合法 18,36,7,.非法。(二)指数形式:
11、数字部分和指数部分,例如:12.3E8,0.91E-30。数字部分可以是不带小数点的整数形式,也可以是带小数点的实数,例如3E5,3.0E5均合法。指数不能为小数,例如3E5.6,不合法。指数部分不能单独用来代表一个常数,例如E12。3.2 变量3.2.1 变量的概念变量是指在程序运行期间其值是可以变化的量。系统为程序中的每一个变量开辟一个存储单元,用来存放变量的值。在程序中用到的变量,应该给它赋予确定的值,否则它有一个不确定的值。3.2.2 变量名一个变量需要用一个名字(变量名)来识别。FORTRAN的变量名按以下规定选定:1、第一个字符必须是字母;2、在一个字母后面可以跟15位数字或字母。
12、例如:A,X1,ABCD,CHINA,RATE,TOTAL,G861是合法的,而3X,X+Y,WAN-LI,-6B,DR.LI是不合法的。选用变量名时注意:(1)在变量名中大写与小写是等价的,例如TOTAL,Total,total都代表同一个变量。(2)变量名的字符之间可以插入空格,例如:AMOUNT和A M O U N T都代表同一个变量AMOUNT。(3)变量名应尽量做到见名知义,例如:GRADE代表等级,AVER代表平均值,AMOUNT代表金额。(4)FORTRAN 77没有规定保留字,即可以用FORTRAN中的函数名或语句定义符作变量名,例如:SIN=3.5PRINT*,SIN 或RE
13、AD*,PRINTPRINT*,PRINT3.2.3 变量类型 常量是分为类型的,而变量是用来存放常量的,因此变量也相应地区分为整型变量、实型变量、双精度型变量、复型变量、逻辑型变量、字符型变量。整型变量用来存放整型常量,实型变量用来存放实型常量。在程序中应当说明哪些变量是整型变量,哪些变量是实型变量。变量在内存中所占的字节数和数据存储形式与相应类型的常数相同。规定变量的类型可以用以下几种方法:1、隐含约定-I-N规则FORTRAN规定:在程序中的变量名,凡以字母I,J,K,L,M,N六个字母开头的,即认为该变量为整型变量。以其它字母开头的变量为实型变量。例如下面变量为整型变量:I,J,IMA
14、X,NUMBER,LINE,JOB,K1而下面的变量为实型变量:B1,COUNT,AMOUNT,YOUNG,TOTAL,BOOK,DG342、用类型说明语句确定变量类型 FORTRAN中有六个类型说明语句:INTEGER语句(整型说明语句)REAL语句(实型说明语句)DOUBLE PRECISION语句(双精度说明语句)COMPLEX语句(复型说明语句)LOGICAL语句(逻辑型说明语句)CHARACTER语句(字符型说明语句)例如:INTEGER A,SUM,TOTAL3.隐含说明语句IMPLICIT语句IMPLICIT INTEGER(A,C,T-V)IMPLICIT REAL(I,J)I
15、MPLICIT INTEGER(A,B),REAL(I,K)说明:1、类型说明语句最优先,IMPLICIT语句次之,I-N规则最低。例如:IMPLICIT REAL(I,J)INTEGER IMAX2、IMPLICIT语句和类型说明语句应该出现在程序单位中的所有执行语句的前面,IMPLICIT语句又应该在所有的类型说明语句的前面。在编写程序时不仅需要考虑程序本身的结构,即操作语句间的结构关系,还要考虑数据的结构,要清楚数据的特性及数据间的联系,设计出适当的数据结构,然后考虑用什么样的算法。例如学生记录那样的数据结构可以用数组来实现。对于同一个问题的求解,可以采用不同的数据结构和不同的算法。对不
16、同的数据结构有不同的算法,它们的复杂程度不同。选择合适的数据结构,可以降低算法的复杂程度,因此,在程序设计中应重视数据结构的设计。在计算机高级语言中提供实现各种数据结构的功能,用数据类型表示不同的数据结构。每种高级语言都规定它可以使用的数据类型。三类数据结构:1)基本类型:最基本的数据项,是不可再分的。基本类型包括整型、实型、双精度型、复型、逻辑型等类型2)构造类型:由已知类型,按一定规则构造而成的复合类型数据,包括数组、记录、文件和集合等3)指针类型:用于构造各种形态的动态数据结构,如链表、队、栈、树、图等在FORTRAN 77中基本类型有以下六种:整型 实型 双精度型 复型 逻辑型 字符型
17、6.2 双精度类型数据实型提供7位有效数字,双精度型提供1517位有效数字。双精度常数要用指数形式表示,将实数中表示指数的字母E改成字母D即可。例如:1.23456789表示为1.23456789D+0 0.123 表示为1.23D-01例6.1 分数序列2/1,3/2,5/3,8/5,13/8,21/13,求出这个序列的前20项之和。Fibonacci数列:1、1、2、3、5、8、13、21.。DOUBLE PRECISION A,B,C,SS=0.0D0A=1.0D0B=1.0D0C=A+BDO 10,I=1,20,1S=S+C/B A=B B=C C=A+B10CONTINUEPRINT
18、*,S=,SEND 6.4 四种数值型数据之间的转换和运算6.4.1 不同类型数据之间运算的规则 表6.1给出不同类型数据之间进行加减乘除运算的规则(C=A+B或C=A*B)C的类型 整型 实型 双精度型 复型 整型 整 实 双 复 实型 实 实 双 复 双精度型 双 双 双 复 复型 复 复 复 复 其中表示FORTRAN 77标准是不允许的。但有的FORTRAN编译系统作了放宽,允许双精度型数据和复型数据之间运算,结果为复型 6.4.2 不同类型数据的赋值规则表6.2 不同类型数据的赋值规则(v=e)v e整型 实型 双精度型 复型 整型 直接赋值 取整,舍去小数再赋值 取整,舍去小数再赋
19、值 实部取整 实型 化成实型,赋值 直接赋值 舍掉多余的有效数字,变成实型,赋值 实部赋值 双精度型 先化成双精度型,赋值 先化成双精度型,赋值 直接赋值 实部化成双精度型,赋值 复型 化成实数,加上虚部0,变成复数,赋值 实部赋值,虚部赋零 化成实数,虚部赋零 直接赋值 6.4.3 类型转换函数FORTRAN 77提供一些函数,使不同类型的数据能相互转换,见表6.3。整型 实型 双精度型 复型 INT(A)不转换,仍得A将A的小数部分舍掉,取整 将A的小数部分舍掉,取整 将实部的小数部分舍去,取整 REAL(A)A化成实型 仍为A本身 舍去多余的有效数字 取A的实部 DBLE(A)A化成双精
20、度型 A化成双精度型 仍为A本身 取A的实部并将它转为双精度型 CMPLX(A)将A化实型,作为实部,虚部为0 将A作为实部,虚部为零 将A的多余有效数字去掉,作为实部,虚部为零 仍为A本身 CMPLX(A1,A2)A1,A2先化实型,然后分别作为实部和虚部 A1作实部,A2作虚部 将A1,A2先舍去多余有效数字,再分别作实部、虚部 实部是REAL(A1),虚部是REAL(A2)6.4.4 不同类型数据的比较规则表6.4是比较规则。将A与B进行关系运算 A B 整型 实型 双精度型 复型 整型 允许 允许 允许 实型 允许 允许 允许 双精度型 允许 允许 允许不允许 复型 不允许 星号表示只
21、有用.EQ.或.NE.时才可以进行比较 6.5 字符型数据FORTRAN不仅能用于数值计算,而且具有处理文字的能力。计算机的用途已日益扩展到非数值运算领域,必须能有效地对文字信息进行处理。例如,对一个班学生名字按字母顺序排列,从一批书籍中找出指定书名的那一本等等。只有以前介绍过的五种类型(整型、实型、双精度型、复型、逻辑型)是不够的,FORTRAN 77提供了字符类型。6.5.1 字符型常量字符型常量亦称字符串(character string),它是用引号(单引号或双引号)括起来的若干个字符。字符型常量允许使用系统可以使用的字符,只要能从键盘输入给计算机系统的字符都可以出现在字符串中。例如下
22、面的字符串都是合法的:CHINA “U.S.A”LI DAN “FUN-LI”How are you?“X=?”A+B;C+D;E+F;*$?#“您好”FORTRAN规定:字符串如出现引号要用两个连续的引号表示,例如:THATS RIGHT!6.5.2 字符型变量用来存放字符型常量的变量称为字符型变量。在程序中必须先定义字符型变量才能使用它。定义字符型变量用CHARACTER语句或IMPLICIT语句,例如:CHARACTEER*5 STR1,STR2,STR3CHARACTER NAME*20,ADDR*30,CODE*10如果语句统一指定的字符长度与变量个别指定的长度不一致,以个别指定优先
23、于统一指定,例如:CHARACTER*5 A,B*6,C,D*4,E若CHARACTER语句中不指定长度,则隐含指定长度为1:CHARACTER A,B,C可以用IMPLICIT语句定义字符型变量:IMPLICIT CHARACTER*5(A-C),CHARACTER*4(X)CHARACTER语句还可以定义符号常量:CHARACTER*5 NAMEPARAMETER(NAME=CHINA)6.5.3 字符型变量的赋值用赋值语句对字符型变量赋值,例如:CHARACTER*5 NAME1,NAME2,NAME3NAME1=CHINANAME2=BEIJINGNAME3=NEW也可以通过READ语
24、句从键盘读入字符常量给字符变量,注意用表控格式输入字符串时要用撇号将字符串括起来,例如:READ*,NAME1,NAME2,NAME36.5.4 子字符串字符串的一部分称为字符串的子串。例如:字符变量A的值为NEW YEAR,则NEW,YEAR,EW,Y,AR都是A的子串。子串的形式表示:字符变量名(e1:e2)e1和e2是整型表达式,表示子字符串在字符串中的起止位置,例如:CHARACTER*33 STR STR=STRUCTURED PROGRAMMING IN FORTRAN PRINT*,STR(1:10),STR(27:33)e1和e2应满足关系:1e1e2LL为字符变量的长度,如省
25、略e1表示e1为1,如省略e2,则表示e2=L,如e1,e2都不写(但不能省写冒号),表示e1=1,e2=L。子字符串 子串的值 STR(12:22)PROGRAMMING STR(27:)FORTRAN STR(:10)STRUCTURE STR(5:5)C STR(:)STRUCTURED PROGRAMMING IN FORTRAN可以将一个子字符赋给一个字符变量或另一个子字符串,例如:NAME=STR(27:33)STR(1:10)=STR(27:33)STR(23:29)=STR(27:33)6.5.5 字符表达式字符型数据也可以进行运算。FORTRAN 77只提供一种字符运算符字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran77 程序设计 简介
限制150内