版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
FORTRAN语言
--FORTRAN77结构化程序设计讲师:徐红波Email:3.1常量所谓常量是指其值始终不变的量,例如3,5.6,-8在FORTRAN中允许使用下面六种常量: (1)整型常量 (2)实型常量 (3)双精度常量 (4)复型常量 (5)逻辑型常量 (6)字符型常量。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,.非法。 (二)指数形式: 数字部分和指数部分,例如:12.3E8,0.91E-30。 数字部分可以是不带小数点的整数形式,也可以是带小数点的实数,例如3E5,3.0E5均合法。 指数不能为小数,例如3E5.6,8.6E-3.7不合法。 指数部分不能单独用来代表一个常数,例如E12。3.2变量
3.2.1变量的概念
变量是指在程序运行期间其值是可以变化的量。 系统为程序中的每一个变量开辟一个存储单元,用来存放变量的值。 在程序中用到的变量,应该给它赋予确定的值,否则它有一个不确定的值。3.2.2变量名
一个变量需要用一个名字(变量名)来识别。
FORTRAN的变量名按以下规定选定:
1、第一个字符必须是字母;
2、在一个字母后面可以跟1~5位数字或字母。 例如:A,X1,ABCD,CHINA,RATE,TOTAL,G861是合法的,而3X,X+Y,WAN-LI,-6B,U.S.A,DR.LI是不合法的。
选用变量名时注意: (1)在变量名中大写与小写是等价的,例如TOTAL,Total,total都代表同一个变量。 (2)变量名的字符之间可以插入空格,例如:AMOUNT和AMOUNT都代表同一个变量AMOUNT。 (3)变量名应尽量做到见名知义,例如:GRADE代表等级,AVER代表平均值,AMOUNT代表金额。(4)FORTRAN77没有规定保留字,即可以用FORTRAN中的函数名或语句定义符作变量名,例如:
SIN=3.5 PRINT*,SIN
或
READ*,PRINT PRINT*,PRINT3.2.3变量类型
常量是分为类型的,而变量是用来存放常量的,因此变量也相应地区分为整型变量、实型变量、双精度型变量、复型变量、逻辑型变量、字符型变量。整型变量用来存放整型常量,实型变量用来存放实型常量。
在程序中应当说明哪些变量是整型变量,哪些变量是实型变量。变量在内存中所占的字节数和数据存储形式与相应类型的常数相同。
规定变量的类型可以用以下几种方法:1、隐含约定-I-N规则
FORTRAN规定:在程序中的变量名,凡以字母I,J,K,L,M,N六个字母开头的,即认为该变量为整型变量。以其它字母开头的变量为实型变量。 例如下面变量为整型变量:
I,J,IMAX,NUMBER,LINE,JOB,K1
而下面的变量为实型变量:
B1,COUNT,AMOUNT,YOUNG,TOTAL,BOOK,DG342、用类型说明语句确定变量类型
FORTRAN中有六个类型说明语句:
INTEGER语句(整型说明语句)
REAL语句(实型说明语句)
DOUBLEPRECISION语句(双精度说明语句)
COMPLEX语句(复型说明语句)
LOGICAL语句(逻辑型说明语句)
CHARACTER语句(字符型说明语句) 例如: INTEGERA,SUM,TOTAL3.隐含说明语句IMPLICIT语句 IMPLICITINTEGER(A,C,T-V) IMPLICITREAL(I,J) IMPLICITINTEGER(A,B),REAL(I,K)说明:1、类型说明语句最优先,IMPLICIT语句次之,I-N规则最低。 例如:
IMPLICITREAL(I,J) INTEGERIMAX2、IMPLICIT语句和类型说明语句应该出现在程序单位中的所有执行语句的前面,IMPLICIT语句又应该在所有的类型说明语句的前面。
3.3FORTRAN函数
用FORTRAN解题往往要用到一些专门运算,如求三角函数sinx,cosx,求,绝对值|x|,对数lnx,指数ex,求一组数中最大数和最小数。FORTRAN提供了一些系统函数来完成这些运算。程序设计者不必自己设计进行这些运算的语句组(即程序段或子程序),只需写出一个函数的名字以及给出一个或若干个自变量,就可以得到所需的值。例如:
SQRT(4.0) SIN(2.0)EXP(3.5)LOG(3.0)例[3-1] PROGRAMFUNCTIONS PRINT*,SIN(1.0) PRINT*,TAN(1.0) PRINT*,ATAN(1.0) PRINT*,LOG(3.0) PRINT*,INT(8.6) PRINT*,INT(-8.6) PRINT*,MOD(8,3)
PRINT*,SIGN(4.0,-0.5) PRINT*,SIGN(-4.0,0.5) PRINT*,REAL(8) PRINT*,MAX(8,6,7,15,-1) PRINT*,MIN(8,6,7,15,-1) END3.4FORTRAN算术表达式
3.4.1算术运算符和运算优先级
五种算术运算符号:+-*/**
不同的运算符按以下优先级次序:
**最高*,/次之+,-最低 同一优先级的两个运算,按“先左后右”原则。 例如:
3+5-6.0*8.0/4**2
3.4.2FORTRAN算术表达式的含义和表示方法
所谓表达式是指一个或多个运算的组合。表达式是由运算符和括号将各运算元素(常量、变量、函数、数组元素)连接起来的一个有值的式子。
FORTRAN允许使用四种表达式: 算术表达式 关系表达式 逻辑表达式 字符表达式
算术表达式中各运算元素都是算术量,使用的运算符只能是算术运算符,表达式的值也是一个算术量(即数值)。例如:
(A-B)/C**2+SIN(X+Y)
表3.4是对表达式书写的正误比较,供读者参考。3.4.3表达式运算中的类型问题 FORTRAN允许不同类型的算术量(包括整型、实型、双精度、复型)之间的算术运算,但不允许在算术量和非算术量(如逻辑型、字符型)之间进行算术运算。例如2*3.5是允许的。2为整型量,3.5为实型量,那么它的乘积是什么类型的呢? FORTRAN作如下规定:1、同类型的算术量之间运算的结果仍保持原类型。2、如果参加运算的两个算术量为不同类型,则将它们转换成同一类型,然后进行运算。转换的规律是:将低级类型转换为高级类型。类型的级别如下:整型低,实型高。 如果有:5*6.5,则系统先将5转换为5.0,然后乘以6.5得32.5,为实型数。5*6.0的值为30.0。3.4.4运算的误差问题 整型量的运算是准确的,没有任何误差(只要在整数范围内)。而实型量的运算会出现一些误差。 例如:11111.1*1111.11 0.001.0-1246820.0 总之,在实数运算中应充分考虑到其可能出现的误差,而且在运算过程中误差会不断积累而增大,有时可能达到一个可观的程度。 整型量的运算速度比实数快而且不出现误差,但整数的范围有限。用实数运算速度慢而且有误差。如果想保持大的表数范围又有较高的准确度,应增加有效位数,可采用双精度型数,其有效位数可达16~17位以上。 3.5赋值语句
3.5.1赋值语句的性质和作用
赋值语句的作用是将一个确定的值赋给一个变量。其一般格式为:
v=e
变量=表达式 例如
A=3.14159*R**2
赋值语句有三类:算术赋值语句;逻辑赋值语句;字符赋值语句。 赋值语句中的“=”号是“赋值”的符号。将赋值号右边的表达式的值赋给左边的变量。例如:A=3.6的作用是3.6A。 算术赋值语句兼有计算和赋值双重功能。即先计算出表达式的值;然后将该值赋给一个变量。 根据赋值语句的性质可以看出:赋值号左边只能是变量名(或数值元素名),而不能是表达式,赋值号右边可以是常量、变量或表达式(常量或变量是表达式的最简单的形式)。赋值号两侧的内容不能任意调换。
下面两个程序作用是不同的:
程序1 PROGRAMASIGNMENT A=1.0 B=2.0 A=B PRINT*,A,B END程序2 PROGRAMASIGNMENT A=1.0 B=2.0 B=A PRINT*,A,B END3.5.2执行赋值语句时的类型转换问题
一个算术赋值语句中的被赋值的变量和表达式的类型可以相同,也可以不相同。FORTRAN作如下规定:1、如果变量与表达式的类型相同,则直接进行赋值。如:
I=3 A=5.7*T2、如果类型不同,则应先进行表达式的求值,然后将该表达式的值转换为被赋值变量的类型。如:
I=3.5*2.1 T=3*5/73、当赋值号两侧的类型不同时,往往会产生预想不到的结果。如:
IMAX=13.7*2.53.6简单的输出语句
3.6.1输出语句的作用和分类
程序的作用是对输入的数据进行加工处理,然后将结果输出。最常用的输出是显示。可用PRINT语句实现打印输出。 输出一个或多个数据时需要通知系统以下信息: (1)输出哪些数据; (2)用什么格式输出(如每个数据占多少列,小数部分占多少列,是用小数形式输出还是用指数形式输出?) (3)在什么设备上输出。 如果已确定用显示器输出,可以用PRINT语句,用PRINT语句意味着只能在显示器输出。在PRINT语句中将上面提到的第1、2个信息告之系统。FORTRAN的输出格式有以下三类:(1)按用户指定的格式输出;(2)系统隐含的标准格式输出(又称表控格式);(3)无格式的输出,即以二进制形式输出,只适用于向磁盘、磁带等输出。3.6.2表控输出语句
表控输出是表控格式输出的简称。即由计算机系统隐含规定了输出的格式。用这种方式输出数据时,系统自动地分别为每一个不同类型的数据规定所占的列数和表数形式(例如实数是用小数形式输出还是用指数形式输出,小数点位置在何处等)。例如: 假若I=45,J=128 PRINT*,I,J
假若A=13.567,B=-186.75 PRINT*,A,B
假若A=162×1025,B=-11.72×10-13 PRINT*,A,B3.7简单的输入语句
3.7.1输入语句的作用和分类
所谓输入是指从外部设备上将数据输到计算机内存中。向计算机输入数据又叫做“计算机从外部设备读入数据”,输出数据又叫做“向外部设备写数据”。 FORTRAN用READ语句实现输入数据。与输出一样,有三种类型的输入:(1)数据按用户规定的格式输入;(2)用自由格式输入(又称表控输入);(3)无格式输入,即以二进制形式输入,只适用从磁盘或磁带输入。3.7.2表控输入语句
表控输入又称自由格式输入,用户不必指定输入数据的格式,只需将数据按其合法形式依次输入即可,数据间以逗号或空格间隔。例如有一输入语句:
READ*,I,J,A,B “*”号表示“表控输入”,要求从系统隐含指定的输入设备上读入两个整型数给I和J,读入两个实数给A和B。可以从键盘输入以下数据:
3,10,7.5,-15.8
或:3107.5-15.8 注意:(1)应该保证从输入设备输入READ语句中所要求的数据:
1)输入数据的个数应当不少于READ语句中变量的个数;
2)输入数据的类型要与READ语句中相应的变量的类型一致。如果在输入的第一个数据行上数据个数少于READ语句变量的个数,则系统会继续从第二个输入的数据行中读数,依此类推。(2)若输入的数据个数多于所需的个数,则多余的数据不起作用。例如,输入以下数据:3,10,7.5,-15.8,30,70.6(3)每一个READ语句都是从一个新的输入行开始读数的。例如
READ*,I,J READ*,A,B READ*,X,Y
如果输入:
3,10,7.5,-15.8 70.6,8.5(4)如果在输入数据行中出现“/”号,表示对READ语句的输入到此结束,未被赋值的变量不予赋值。如:
READ*,I,J,A,B
输入数据为:
3,10/7.5,-15.8(5)在一个数据的数字之间不要插入空格,因此空格是数据间的分隔符。例如对上述READ语句输入以下数据:
15,718,76.3,65.8(6)前已提及:数据类型应与变量类型一致,如果变量为整型而输入数据为实型数,则按出错处理。如果变量为实型,输入数据为整型数,许多系统是通融的,先自动将它变成实数然后输入给实型变量,如:
READ*,A,B
输入:
168,2473.8参数语句(PARAMETER语句)
在程序中常要多次用到某些常数,例如=3.1415926,若每次用到时都重复写3.1415926,是不方便的,FORTRAN77允许用一个名字来代表一个常量,例如可以指定用PI来代表3.1415926,在本程序单位中用到PI时,它就代表3.1415926,这个PI称为“符号常量”或“符号常数”,即用一个符号来代表一个常量。
FORTRAN规定用PARAMETER语句来定义符号常量。 例如:PARAMETER(PI=3.1415926)
PARAMETER语句与赋值语句不同,它是非执行语句,在程序定义一个符号常量后,不能再改变它的值。例如下面这样是错误的:
PI=0.5或READ*,PI PARAMETER语句应写在所有执行语句之前。符号常量的定名规则与定变量名相同。名字本身隐含类型,也遵循I-N规则。可以用类型语句定义符号常量的类型,例如:
INTEGERP PARAMETER(P=5)
注意,先写类型语句,后写参数语句。在一个参数语句中可以定义多个符号常量。如
PARAMETER(A=0.5,N=50,J=30)
用符号常量好处是:若需要改变某一常量,不需一一改变这个常量,只需改变参数语句中符号常量的值则可。例如:
PARAMETER(PRICE=3.5) COST1=PRICE*NUM1 COST2=PRICE*NUM2 COST3=PRICE*NUM3
单价PRICE调整时,不必一一修改赋值语句,只需将参数语句中的PRICE=3.5改为PRICE=5.1即可,一改全改,不会由于遗漏某一处未改而出错。 符号常量可以是数值型、逻辑型、字符型。 符号常量不能作为语句标号,也不能出现在FORMAT语句中代替常数。除此之外,凡出现常量处均可用符号常量代替。3.9END语句、STOP语句和PAUSE语句
3.9.1END语句FORTRAN77中END语句的作用:(1)结束程序单位的运行;(2)作为程序单位的结束标志。
END语句应该出现在本程序单位中的最后一行。一个程序单位中只能有一个END语句。 在主程序中的END语句是使程序停止运行,控制回到操作命令状态。在子程序中的END,一方面作为子程序的结束标志,一方面使流程返回到调用程序(接着执行调用程序中的其它语句)。即它兼有RETURN语句的功能。3.9.2STOP语句 STOP语句是“停止运行”,一个程序单位中可以有多个STOP语句,执行到任一个STOP语句时程序即停止运行。在子程序中如果有STOP语句,使整个程序停止运行而不是使控制返回主程序。 在一个程序中含有多个STOP语句时,为了使程序员能清晰地辨别出是哪一个STOP语句使程序停止运行的,需要在执行STOP时,输出所需的信息。STOP语句的形式:
STOP[n]
例如:
STOP123
或 STOP‘A’
则在程序停止运行时输出信息“123”或“A”,由此辨别程序的流程。注意:STOP语句中的“n”是写一个不超过5位的无符号整数或一个字符串。而且它是可选的。3.9.3PAUSE语句 PAUSE语句是暂停语句,使程序“暂时停止执行”,但不是“结束运行”。系统只是把程序的执行暂时“挂起来”,等待程序操作员输入其它操作命令。在程序设计中,有时有意在程序中加几个PAUSE语句,即设几个“断点”,把程序分成几段,调试程序时一段一段地检查,比如第
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度销售代理合同:服装品牌销售代理协议
- 2024年度二手食品买卖合同(含食品安全证书)2篇
- 2024年度智能城市公共服务平台建设与运营合同
- 二零二四年度知识产权许可合同concerning某生物科技公司专利技术
- 二零二四年保险合同:财产保险条款2篇
- 二零二四年度加工承揽合同工作范围与质量标准规定
- 森林经营的经济效益评估考核试卷
- 杂质控制合成材料制造技术考核试卷
- 森林改培对农田水资源的保护考核试卷
- 2024年度版权转让合同音乐作品2篇
- 屋面太阳能发电系统施工方案
- 护理学科建设规划
- 海南省海口市2023-2024学年九年级上学期期末语文试题B卷(解析版)
- 2024年度生产设备操作安全协议
- 四方建房合同模板
- 城市公共交通条例
- 铁路安全专项培训试卷(一)考试
- 第5课用发展的观点看问题2023-2024学年中职高教版2023哲学与人生
- 2021大学生个人职业生涯规划书6篇
- 《心灵的色彩》课件-2024-2025学年人美版(2024)初中美术七年级上册
- 2020年江苏徐州中考满分作文《当你需要时有我》4
评论
0/150
提交评论