Fortran语言程序设计初步_第1页
Fortran语言程序设计初步_第2页
Fortran语言程序设计初步_第3页
Fortran语言程序设计初步_第4页
Fortran语言程序设计初步_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1231958年年FORTRAN II1962年年FORTRAN IV(Fortran 66)1978年年Fortran 771992年,年,Fortran90标准终于问世。主要增加面标准终于问世。主要增加面向对象概念及工具,提供指针,加强数组功能,向对象概念及工具,提供指针,加强数组功能,改良编写格式。改良编写格式。1997年,最新标准年,最新标准 Fortran95。可视为可视为90的修订版,的修订版,主要加强了主要加强了Fortran在并行计算方面的支持。在并行计算方面的支持。4567891011121314151617184. Fortran没有保留字,即函数名等可作为变量没有保留字,

2、即函数名等可作为变量(最好不用作变量,以免混淆最好不用作变量,以免混淆),但在同一程序),但在同一程序单位中变量名不能与已出现的函数名和语句定义单位中变量名不能与已出现的函数名和语句定义符重名。符重名。19 变量是开辟的存储单元,用来存放常量的,相应变量是开辟的存储单元,用来存放常量的,相应的有的有整型变量、实型变量、双精度变量、复型变量、整型变量、实型变量、双精度变量、复型变量、逻辑型变量和字符型变量逻辑型变量和字符型变量。变量在内存中所占的字节。变量在内存中所占的字节数和数据存储形式与相应类型的常数相同。数和数据存储形式与相应类型的常数相同。1. I-N隐含约定:凡以字母隐含约定:凡以字母

3、I、J、K、L、M、N六个六个字母开头的,即认为该变量为整型变量。以其它字母字母开头的,即认为该变量为整型变量。以其它字母开头的变量为实型变量。开头的变量为实型变量。a99、book、YOUNG1、XIJ等为实型变量。等为实型变量。I、J6、knife、Long、M1607、number为整型变量为整型变量;202. 类型说明语句:有类型说明语句:有integer(整型)、整型)、real(实型)、实型)、double precision(双精度)、双精度)、complex(复型)、复型)、logical(逻辑型)、逻辑型)、character(字符型)字符型)六种类型说明语句。六种类型说明语

4、句。可用其改变可用其改变IN约定限制。约定限制。 INTEGER AB, OTAL, X8REAL IMAX, NUMBER, JOB53. implicit语句(隐含说明语句):可以用语句(隐含说明语句):可以用implicit语句语句将某一字母开头的全部变量指定为所需类型。将某一字母开头的全部变量指定为所需类型。 IMPLICIT INTEGER (A, C, T-V) IMPLICIT INTEGER (A-C), REAL (I, K) IMPLICIT REAL (I, K) IMPLICIT NONE 取消取消I-N规则规则211. 优先级:优先级:类型说明语句类型说明语句 imp

5、licit语句语句 I-N隐含约定隐含约定几点说明:几点说明: IMPLICIT REAL (I, J) INTEGER IMAX2. 类型说明语句和类型说明语句和implicit语句都是非执行语句;语句都是非执行语句;3. 类型说明只在本类型说明只在本程序单位程序单位内有效;内有效;4. implicit语句和类型说明语句语句和类型说明语句应该出现在本程序单位中应该出现在本程序单位中的所有执行语句的前面,其中,的所有执行语句的前面,其中,implicit语句又应在所有语句又应在所有的类型说明语句的前面。的类型说明语句的前面。22 (1)自变量有)自变量有个数个数规定,且必须为规定,且必须为常

6、数常数或或有确定值的变有确定值的变量和表达式量和表达式。例如:例如:abs(-1.0)、sqrt(a)、log(1.0+2.0)、int(a+b)均合法。均合法。 (2)函数)函数自变量有类型规定,函数值也有类型规定自变量有类型规定,函数值也有类型规定。如:。如:mod(a1, a2)的结果与自变量类型一致的结果与自变量类型一致 。 (3)函数名有通用名和专用名之分,一般使用通用名。)函数名有通用名和专用名之分,一般使用通用名。之所以有专用名,只是为了和之所以有专用名,只是为了和fortran老版本兼容。老版本兼容。23 (4)三角函数中角度的单位是)三角函数中角度的单位是“弧度弧度”而不是而

7、不是“度度”。 (5)INT函数的作用是简单的截去小数部分。函数的作用是简单的截去小数部分。INT(8.5)=8,INT(-8.5)=-8(6)SIGN函数的作用是函数的作用是“符号传递符号传递”,可检查,可检查A和和B是是否同符号。否同符号。SIGN(6.5,-8.3)=-6.5SIGN(-6.5,8.3)=6.524七、七、Fortran算术表达式算术表达式1. 算术运算符和运算优先级算术运算符和运算优先级括号括号 函数函数 乘方乘方 * 乘除乘除 * / / 加减加减 同一优先级,遵循同一优先级,遵循“从左到右从左到右”原则。原则。乘方乘方* 乘乘* * 除除/ / 加加 减减2. Fo

8、rtran算术表达式的含义和表示方法算术表达式的含义和表示方法Fortran的运算符和括号将各的运算符和括号将各Fortran运算元素(包括常量、运算元素(包括常量、变量、函数、数组元素)连结起来的一个有值的式子。变量、函数、数组元素)连结起来的一个有值的式子。算术表达式;关系表达式;逻辑表达式;字符表达式。算术表达式;关系表达式;逻辑表达式;字符表达式。25 算术表达式注意:算术表达式注意: (1)由于用)由于用“/”号作为除号,因此在写除法运算式子应号作为除号,因此在写除法运算式子应加上必要的括号。加上必要的括号。 (2)乘号不能省略)乘号不能省略 。 (3)Fortran中无大、中、小括

9、号,一律用小括号。中无大、中、小括号,一律用小括号。 (4)如果连续使用乘方符号,按)如果连续使用乘方符号,按“先右后左先右后左”原则处理。原则处理。为避免出错,建议使用括号。为避免出错,建议使用括号。 4*3*2,先计算,先计算3*2,在进行,在进行4*9的运算。的运算。 (5)对单边运算符,相当于在它前面有一个运算量)对单边运算符,相当于在它前面有一个运算量“0”。 -A相当于相当于0-A;-A*2相当于相当于0-A*2即即-(A*2),),而不是相当于(而不是相当于(-A)*2。26一些正误比较一些正误比较273. 表达式运算中的类型问题表达式运算中的类型问题 FORTRAN 77允许不

10、同类型的算术量(包括整型、实允许不同类型的算术量(包括整型、实型、双精度、复型)间的算术运算,但型、双精度、复型)间的算术运算,但不允许在算术量和不允许在算术量和非算术量(如逻辑型、字符型)之间进行算术运算非算术量(如逻辑型、字符型)之间进行算术运算。 同类型的算术量之间运算的结果仍保持原类型,如同类型的算术量之间运算的结果仍保持原类型,如 5/2=2、1/2=0、4*(-1)= 0。不同类型时,编译系统遵循。不同类型时,编译系统遵循“低级转换成高级低级转换成高级”(实型比整型高)原则将它们转换成(实型比整型高)原则将它们转换成同一类型,然后进行运算。同一类型,然后进行运算。 类型的转换是从左

11、而右进行的,在遇到不同类型的算类型的转换是从左而右进行的,在遇到不同类型的算术量时才进行转换。如:术量时才进行转换。如:1/4*20.0=?28 整型量没有任何误差(确认在整数范围内)。整型量没有任何误差(确认在整数范围内)。 实型量的运算由于有效位数的限制会出现一些误差,实型量的运算由于有效位数的限制会出现一些误差,运算中尽量不要使两个相差很大的数值直接相加或相减。运算中尽量不要使两个相差很大的数值直接相加或相减。 判断实数相等最好用判断实数相等最好用 。 BA4. 运算的误差问题运算的误差问题29八、八、赋值语句赋值语句1. 赋值语句的性质和作用赋值语句的性质和作用 V=e变量变量=表达式

12、表达式1. 有三类赋值语句:算术赋值语句、逻辑赋值语句、字符有三类赋值语句:算术赋值语句、逻辑赋值语句、字符赋值语句。赋值语句。几点说明:几点说明:2. 赋值语句中赋值语句中“=”号是赋值符号,而不是等号。例如:号是赋值符号,而不是等号。例如:N=N+1。303. 算术赋值语句兼有计算和赋值双重功能。算术赋值语句兼有计算和赋值双重功能。4. 赋值号左边只能是变量名(或数值元素名),而不能赋值号左边只能是变量名(或数值元素名),而不能是表达式,赋值号右边可以是常量、变量或表达式。是表达式,赋值号右边可以是常量、变量或表达式。程序程序1A=1.0B=2.0A=BPRINT*,A,BEND程序程序2

13、A=1.0B=2.0B=APRINT*,A,BEND312. 执行赋值语句时的类型转换问题执行赋值语句时的类型转换问题 算术赋值语句中的被赋值变量和右边表达式的类型算术赋值语句中的被赋值变量和右边表达式的类型可以相同,也可以不同。可以相同,也可以不同。 如果类型不同,则是先进行表达式的求值,然后将如果类型不同,则是先进行表达式的求值,然后将该表达式的值转换为被赋值变量的类型该表达式的值转换为被赋值变量的类型。 如如 IMAX=3.5*2.1的值不是的值不是7.35而是而是7。32九、九、简单的输出语句简单的输出语句1. 输出语句的作用和分类输出语句的作用和分类Fortran的输出格式有三类:的

14、输出格式有三类:(1)按用户指定的格式输出;按用户指定的格式输出;(2)系统隐含的标准格式输出(又称表控格式);系统隐含的标准格式输出(又称表控格式);(3)无格式的输出,即以二进制形式输出。无格式的输出,即以二进制形式输出。2. 表控输出语句表控输出语句 用这种方式输出数据时,系统自动地分别为每一用这种方式输出数据时,系统自动地分别为每一个不同类型的数据规定所占的列数和表数形式。个不同类型的数据规定所占的列数和表数形式。WRITE(*,*)A,BPRINT *,A,B33(1)系统为每个整数分配)系统为每个整数分配1013列,列,数据打印在这些列数据打印在这些列的右端的右端。(2)一个实数分

15、配给)一个实数分配给15 18列,其中小数部分列,其中小数部分6 7列。如列。如果实数的值很大,以上格式无法容纳,则系统会自动改成用果实数的值很大,以上格式无法容纳,则系统会自动改成用标准化的指数形式输出。标准化的指数形式输出。(3)对一个用指数形式输出的实数分配给)对一个用指数形式输出的实数分配给15列,其中指数列,其中指数部分部分4 5列,小数部分列,小数部分6列。列。34(5)一条)一条print或或write语句可同时输出多个整数和实数。当语句可同时输出多个整数和实数。当在一行内打印不下时,会自动换行再打印,直到把全部需输在一行内打印不下时,会自动换行再打印,直到把全部需输出的数据打印

16、完为止。出的数据打印完为止。(6)如果如果print或或write语句中无任何输出项,它将输出一个语句中无任何输出项,它将输出一个空白行空白行。(4)如果实数的整数部分位数多于系统规定的有效位数)如果实数的整数部分位数多于系统规定的有效位数(例如(例如IBMPC为为7位位),或实数的数值小于,或实数的数值小于1,则在,则在输出时输出时会自动转换成规范化的指数形式输出会自动转换成规范化的指数形式输出。如。如123106和和0.132的输出为,的输出为, 表控输出结果因不同计算机而异表控输出结果因不同计算机而异! PRINT *,或 WRITE(*,*)35十、十、简单的输入语句简单的输入语句1.

17、 输入语句的作用和分类输入语句的作用和分类Fortran的输入格式有三类:的输入格式有三类:(1)按用户指定的格式输入;按用户指定的格式输入;(2)用自由格式输入(又称表控输入);用自由格式输入(又称表控输入);(3)无格式的输入,即以二进制形式输入。无格式的输入,即以二进制形式输入。2. 表控输入语句表控输入语句 用户不必指定输入数据的格式,只需将数据按其用户不必指定输入数据的格式,只需将数据按其合法形式依次输入即可,合法形式依次输入即可,数据间以逗号或空格间隔数据间以逗号或空格间隔。READ *,A,B READ(*,*)A,B36(1)输入数据的个数应当不少于输入数据的个数应当不少于RE

18、AD语句中变量的个数。语句中变量的个数。输入数据的类型要与输入数据的类型要与READ语句中相应变量的类型一致。语句中相应变量的类型一致。 如果输入的第一个数据行上数据个数少于如果输入的第一个数据行上数据个数少于READ语句中语句中变量的个数,则系统会继续从第二个输入的数据行中读数。变量的个数,则系统会继续从第二个输入的数据行中读数。如果输入的数据不足,计算机将等待用户继续输入数据,直如果输入的数据不足,计算机将等待用户继续输入数据,直到输入完全部数据为止。到输入完全部数据为止。 3,10,7.5,-15.8 3,10 7.5,-15.8 3 10 7.5,-15.8 READ(*,*) i,

19、j, a, b(2)如果输入的数据个数多于所需的个数,则多余的数据如果输入的数据个数多于所需的个数,则多余的数据不起作用。不起作用。 3,10,7.5,-15.8,30,70.6 37(3)每一个每一个READ语句都是从一个新的输入行开始读数的。语句都是从一个新的输入行开始读数的。 READ(*,*) i, j READ(*,*) a, b READ(*,*) x, y输入输入 3,10,7.5,-15.8 30.0,70.6 i=3j=10 x=?a=30.0 y=? b=70.6 则则(4)如果在输入数据行中出现)如果在输入数据行中出现“”号,表示对号,表示对READ语语句的输入到此结束,

20、未被赋值的变量不予赋值。句的输入到此结束,未被赋值的变量不予赋值。 READ(*,*) i, j, a, b输入输入 3,10 / 7.5,-15.8 i=3 a值不变值不变j=10 b值不变值不变38相当于相当于(5)一个数据的数字之间不要插入空格。一个数据的数字之间不要插入空格。3,1 0,7.5,-15.8 3,1 ,0,7.5,-15.8 (6)数据类型应与变量类型一致。)数据类型应与变量类型一致。 如果变量为整型,输入数据为实型,按出错处理。如果变量为整型,输入数据为实型,按出错处理。 如果变量为实型,输入数据为整型,一般通融。如果变量为实型,输入数据为整型,一般通融。39十一、十一

21、、参数语句(参数语句(PARAMETER语句)语句) 在程序中要多次用到某些常数,可以用一个符号在程序中要多次用到某些常数,可以用一个符号来代表一个常量。来代表一个常量。PARAMETER (PI=3.1415926)S=2.0*PI*RINTEGER A, B, CPARAMETER (A=2, B=5, C=3)I=MOD(A, B)+C 用来定义符号常量,用来定义符号常量,应写在所有执行语句之前。应写在所有执行语句之前。符号常量的定名规则与定变量名相同,遵循符号常量的定名规则与定变量名相同,遵循I-N隐含隐含约定,如需改变类型,可在之前加类型说明语句。约定,如需改变类型,可在之前加类型说

22、明语句。40(1)在程序定义一个符号常量后,不能再改变它的值。)在程序定义一个符号常量后,不能再改变它的值。PARAMETER (PI=3.14)PI=3PARAMETER (PI=3.14)READ(*,*) PI(2)用符号常量好处是:如果需要改变某一常数时,不需一)用符号常量好处是:如果需要改变某一常数时,不需一一改变这个常数,只需改变参数语句中符号常量的值则可。一改变这个常数,只需改变参数语句中符号常量的值则可。PARAMETER (price=1.0)Total1=price*3Total2=price*4Total3=price*5几点说明:几点说明:41十二、十二、END语句、语

23、句、STOP语句、语句、PAUSE语句语句 END语句应该出现在程序单位的最后一行,一个语句应该出现在程序单位的最后一行,一个程序单位中只能有一个程序单位中只能有一个END语句。语句。 它的作用有:结束本程序单位的运行,作为一个它的作用有:结束本程序单位的运行,作为一个程序单位的结束标志,子程序中的程序单位的结束标志,子程序中的END还有使流程返还有使流程返回调用程序(兼有回调用程序(兼有RETURN语句的功能)。语句的功能)。 一个程序单位中可以有多个一个程序单位中可以有多个STOP语句,执行到任语句,执行到任一个一个STOP语句处时,程序即停止运行语句处时,程序即停止运行。在子程序中如。在

24、子程序中如果有果有STOP语句,也是使整个程序停止运行。语句,也是使整个程序停止运行。STOP 1111 或或 STOP ERROR1其中,其中,1111和和ERROR1为输出信息,供调试程序和辨为输出信息,供调试程序和辨别流程用。数字为不超过别流程用。数字为不超过5位的整数,字符串加引号。位的整数,字符串加引号。42 PAUSE语句是暂停语句语句是暂停语句,调试程序用,调试完成,调试程序用,调试完成后可删去。程序暂停时,后可删去。程序暂停时,按回车键则继续运行按回车键则继续运行。使用方使用方法同法同STOP语句。语句。43十三、十三、程序举例程序举例 program exam1read(*,

25、*) a,b,cs=(a+b+c)/2.0area=sqrt(s*(s-a)*(s-b)*(s-c)write(*,*) a=,a,b=,b,c=,cwrite(*,*) area=,areaend1. 求三角形面积。(用公式求三角形面积。(用公式 ))()(csbsass44 program exam2real IR0=100.R1=20.R2=50.U=100.R12=R1*R2/(R1+R2)R=R0+R12I=U/Rwrite(*,*) R=,Rwrite(*,*) I=,Iend2. 已知已知U=100v, R1=20,R2=50 , R0=100 。 求等效电阻求等效电阻R和总电流

26、和总电流I。45 program exam3parameter(pi=3.1415926)h=20000.R=6.37154e6vc=7900.*sqrt(R)/sqrt(h+R)ve=vc*sqrt(2.0)c=2.0*pi*(h+R)t=c/vcvc=int(vc*3600./1000.*100.+0.5)/100.ve=int(ve*3600./1000.*100.+0.5)/100.t=int(t/60.*100.+0.5)/100.write(*,*) vc=, vc, Km/hwrite(*,*) ve=, ve, Km/hwrite(*,*) time=, t, minutesend3. 已知:人造卫星距地面已知:人造卫星距地面h=20000m, 地球半径地球半径 R=6.37106m 。求:求: (1)卫星绕地球圆周运动速度卫星绕地球圆周运动速度Vc(Km/h)和脱离轨道速度和脱离轨道速度Ve(Km/h), (2)环行一周所需时间。以上结果取小数点后两位,对第三位四舍五入。环行一周所需时间。以上结果取小数点后两位,对第三位四舍五入。)/()(7900smh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论