版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 三 章 FORTRAN语言程序设计初步1FORTRAN语言程序设计初步任何一种程序设计语言都有自己的一套语法规则以及由基本符号按语法规则构成的各种语法成分:如常量、变量、表达式、语句、函数等.FORTRAN语言程序设计初步就是要求我们熟练地掌握这些语法成分。2本 章 主 要 内 容3.1 FORTRAN语言发展概况3.2 简单程序分析3.3 FORTRAN书写格式3.4 FORTRAN源程序输入方式3.5 常量3.6 变量3.7 FORTRAN内部函数3.8 FORTRAN算术表达式3.9 赋值语句3.10 简单的输出语句3.11 简单的输入语句3.12 参数语句3.13 END 、 ST
2、OP 、 PAUSE 语句3.14 程序举例FORTRAN语言程序设计基础33.1 FORTRAN语言发展概况FORTRAN-FORmula TRANslation (公式翻译)是世界上第一个被正式推广使用的高级语言(于1954年提出; 1956年正式使用)FORTRAN是数值计算领域里使用的主要语言;FORTRAN的发展历程早期的版本不是结构化语言,没有直接实现三种基本结构的语句(使用goto实现特定操作)。F77才在F66作了大幅度的修改。 FORTRAN的特点链接FORTRAN的发展历程链接43.1 FORTRAN语言发展概况FORTRAN 90的推出,是FORTRAN语言发展史上的一个
3、里程碑,它挽救了FORTRAN语言面临淘汰的局面,使传统的FORTRAN语言焕发了青春,以其强大的功能和严谨的风格受到人们的欢迎和认可,并展现出良好的应用前景 FORTRAN95是FORTRAN90的修订版,增加了许多新功能,加强了多处理机并行计算能力。发达国家已开始重新认识FORTRAN语言,对FORTRAN90/95语言的研究、开发和应用给予了高度重视,FORTRAN语言正在发挥越来越大的作用。我国从90年代末开始引进FORTRA90/95有关资料和相关软件,并在许多高校开设FORTRAN90/95课程。53.1 FORTRAN语言发展概况Fortran90的程序结构图简介主程序 A1US
4、E Module ACall BCall CContainsSubroutine CEnd Subroutine.End 主程序 A1内部子程序Subroutine BEnd Subroutine Module AContains.End Module A模块子程序63.1 FORTRAN语言发展概况Fortran90的主要改进:书写格式;数据声明与赋初值;添加二进制、八进制、十六进制运算;新的DO循环;数据的自定义类型;多重选择(select case);动态数组;内部子程序和递归子程序的功能;添加了许多新的内在子程序(内在函数)指针;模块;接口下一节:程序分析73.2 简单程序分析 10
5、20 30 40 50 60 70 8001234567890123456789012345678901234567890123456789012345678901234567890123456789C CALCULATE THE AVERAGE OF THREE NUMBERSx=90.5y=87.0z=68.5AVER=(x+y+z)/3.0print * ,the three numbers are , x , y , zprnt * , average=, averend#includevoid main() float x,y,z,Aver;x=90.5;y=87.0;z=68.5;
6、Aver=(x+y+z)/3;printf(“%f%f%fn”,x,y,z);printf(”%fn”,Aver);8源程序的建立9C语言源程序及运行结果10语法着色:绿色:注释文本;蓝色:关键字;黑色:代码。注意源程序字符与单词颜色113.2 简单程序分析 10 20 30 40 50 60 70 8001234567890123456789012345678901234567890123456789012345678901234567890123456789C MAIN PROGRAMPROGRAM EX2print * ,R , 1.0,C=, C(1.0) print * ,R , 1
7、.5,C=, C(1.5)print * ,R , 3.0,C=, C(3.0)print * ,R , 12.5,C=, C(12.5)end01234567890123456789012345678901234567890123456789012345678901234567890123456789C SUBPROGRAMFUNCTION C(R)pi=3.1415926C=2 * pi * Rreturnend例如:将此文件保存为:li3.for如保存此文件:li3_1.for分别将两个文件编译再build li3.EXE 即可运行12#includevoid main() float
8、x,y,z,w;float c(float);x=c(1.0);y=c(1.5);z=c(3.0);w=c(12.5);printf(%15f%15f%15f%15fn,x,y,z,w);float c(float r)float pi=3.14159,cc;cc=pi*r*r;return cc;对比C语言分析该程序13从上例可以看出计算机程序的组成:单位定义部分(主、子程序)说明部分输入部分计算或处理部分输出部分END结束14从上例可以看出计算机程序的组成:程序单位:具有以上各部分组成(或部分)的程序称为一个程序单位,可以单独编译,也可以一起编译。(主程序、子程序、数据块子程序、模块) (
9、我们已经知道,在C语言中,程序的组成是由若干个函数组成的。)15FORTRAN的程序单位 FORTRAN90程序主程序单元 外部子程序单元 模块单元 数据块单元 CONTAINS 外部子程序1 类型说明部分 CONTAINS CONTAINS 内部子程序组内部子程序组 外部子程序2 内部子程序组 数据块说明 CONTAINS 内部子程序组 FORTRAN各程序单元主程序单元 外部子程序单元 模块单元 数据块单元 CONTAINS 外部子程序1 类型说明 CONTAINS CONTAINS 内部子程序组 内部子程序组 外部子程序2 内部子程序组 数据块说明 CONTAINS 内部子程序组(1)(
10、2)(3)(4)16使用Compaq Visual Fortran 6(或 Microsoft Fortran Powerstation4.0)建立程序与执行过程如下(八步):1)首先在工作盘中建立文件夹,如:For_test2)启动Fortran集成开发环境(Developer Studio); 3)“文件” “新建”“项目”确定位置,填写项目名 4)“文件” “新建” “FILE” 选择程序格式:“Fortran Fixed Format Source File”在Location: For_test OK5)进入编辑状态输入源文件保存该文件6)需要时需重复步骤4建立新的文件;7)分别打开
11、源文件编译; 8)Build *.Exe 文件运行!FixedFree17对于编译连接后的*.EXE文件,还可以单独运行:1)运行CMDD:2)可以删除原文件以及目标文件等;3)直接键入文件名,运行*.EXE程序.18FORTRAN 语言的基本特点1)一个程序由一个或若干个程序单位组成;2)每一个程序单位都是以“END”语句作为结束;3)一个程序单位包括若干行:(1)语句行执行语句(使计算机在运行时产生某些操作)非执行语句(如类型说明语句、数据语句)(2)非语句行(如注释行)尽管不执行,但在打印清单时被打印出来;4)FORTRAN语句可以没有标号,也可以有标号;5)一个程序单位中各类语句位置是
12、有一定规定的;6)FORTRAN源程序必须按一定的格式书写。!19FORTRAN编译系统目前使用的编译系统:Microsoft Fortran Powerstation 4.0(微软卖给了Digital, Digital继续开发)Digital Visual Fortran 5.0( Digital 被Compaq并购 )Compaq Visual Fortran 6.0 6.5(Compaq与Intel合并) Intel Visual Fortran 9.0 11.020FORTRAN编译系统的安装21FORTRAN编译系统的安装运行安装程序22FORTRAN编译系统的安装选择安装23FOR
13、TRAN编译系统的安装建议在安装本系统之前关闭其它应用程序24FORTRAN编译系统的安装33206 050 0010743 0000725FORTRAN编译系统的安装建议改为自己定义的盘符和文件夹26FORTRAN编译系统的安装27FORTRAN编译系统的安装28FORTRAN编译系统的安装建议选择更新环境29FORTRAN编译系统的安装30FORTRAN编译系统的安装31FORTRAN编译系统开始运行32FORTRAN编译系统开始运行Compaq Virsual Fortran6.533FORTRAN编译系统开始运行文件新建项目Fortran Console App自动创建文件夹34FOR
14、TRAN编译系统开始运行在6.5版本中,Workspace里可以包含多个Projects,但每一个Projects里只能包含一个主文件(EXE)。而在PS4.0中,只有项目空间Projects Workspace,所以在此只有一个主文件,该文件名就是项目空间名。工作空间、项目、文件之关系Go35FORTRAN编译系统开始运行文件新建File选择格式填写文件名Compaq Virsual Fortran6.536POWER STATION4.037POWER STATION4.038FORTRAN编译系统开始运行Compaq Virsual Fortran6.539FORTRAN编译系统建立源文
15、件Compaq Virsual Fortran6.540FORTRAN编译系统保存源文件41FORTRAN编译系统开始编译42FORTRAN编译系统编译43FORTRAN编译系统连接装配44FORTRAN编译系统连接装配45FORTRAN编译系统开始运行46FORTRAN编译系统显示结果47总结上机步骤:建立一个新的Project(File/New,选择Project卡,选择Fortran console program格式,给出Project名), Project会自动保存*.dsw文件生成一个新的程序文件(File/New,选择File卡,选择两种格式之一,并给出文件名),或者是插入一个已
16、有的文件(Project/add to project/Files)。单击File/Save Workspace,就保存Project所包含的程序文件。在Builds菜单上直接选择Execute就会自动完成编译到执行全过程,也可以选择Build只做编译。要编写新的程序就要另建一个Project,也可更换Project中的文件。注意不要把两个独立的程序文件放在同一个Project里(否则编译时出错)。下次要修改程序时,直接File/Workspace打开*.dsw中的Project工程文件。48Fortran PowerStation 4.0其它编译环境:GO CVF6.5 DOS 环境GO P
17、S4.0 环境49FORTRAN程序举例Exa3_1.for (P46)Exa3_2main.for(P47)Exa3_2sub.for(P47) (实例演示)50关于Debug格式与Release格式debug格式:在开发过程中便于程序调试的环境;Release格式:经过优化后的环境,执行效率高(高于debug很多倍)。可在这两项中设置:1)Configuration2)Set Active Configuration513.3 FORTRAN书写格式FORTRAN程序代码的编写格式有两种:Fixed Format(固定格式)本教材采用扩展名:.F或.FORFree Format(自由格式4
18、.0版本以上)扩展名:.F90523.3 FORTRAN77书写格式(固定)Fortran一行80列,分为四个区域:1)标号区(15列):15位无符号的整数,中间空格不起作用(100、 100、1 0 0是相同的)没有大小顺序。标号区第一列必须是空格、数字、C、*、!【F90:数字之间不能有空格;以!作为行注释】;2)续行标志区(第6列)非空格或非0的字符:作为上一行的继续行的标志。看图示533.3 FORTRAN77书写格式(固定)Fortran一行80列,分为四个区域:3)语句区(第772列)通常一行只写一条语句。当多条语句写在一行时,中间用分号隔开。空格是被忽略的,如s in ( x)
19、是有效的。4)注释区(第7380列):不是语句的部分,除打印清单外,编译系统不予处理(输入的内容为红色)。543.3 FORTRAN书写格式 Fixed Format(固定格式)第1个字符当为字母c、C或*,这一行文本会当成说明或批注,不会被编译。第15个字符当为数字,就是用来给这一行程序代码取个代号,不然只能是空格。第6个字符如果是非0非空的任何字符,表示这一行程序会接续上一行。第772个字符Fortran程序代码的编写区域。第7380个字符以后不使用这些列,语句超过该列的部分会被忽略,有的编译器会发出错误信息。553.3 FORTRAN书写格式(For FORTRAN90)Free For
20、mat(自由格式PASCAL 、C使用的格式) 基本上允许非常自由的编写格式,它没有规定每一行的第几个字符有什么作用,但要注意:1.!感叹号后面的文本都是注释(行内也一样)。2.每行可以编写132个字符。3.行号放在每行语句的最前面。4.某一行程序代码的最后是符号&,则下一行和这一行连接;如果某一行程序代码的开头是&,则它会和上一行连接(表明是拆分关键字,在CVF6可以不用)。5.程序命令之间的空格是无意义的。 563.3 Fortran书写格式(For FORTRAN90) !Free Format program main write(*,*)”Hello” !这也是注释 write(*,
21、*)& ”Hello” wri& &te(*,*)”Hello” !CVF6中可以不要这个& end57 !Free Format program main write(*,*)”Hello” write(*,*)& ”Hello” wri& &te(*,*)”Hello” end58FORTRAN77字符集:编写Fortran77程序时,所能使用的所有字符及符号就是F77的字符集: AZ(az)程序中不区分大小写 26个 09 10个 空格 = + - * / ( ) ,:. $ 22个 _(下划线)、!、”、%、&、;、 10.29如:A=10.29 B=5.54 C=Mod(A,B) =
22、 4.7593关于Fortran90位操作函数举例integer(1):A,B,C !(必须定义为整型数)A=b10101100B=b11101101write(*,“(1x,B8)”) Iand(A,B) !按位“与”write(*,“(1x,B8)”) IOR(A,B) !按位“或”write(*,“(1x,B8)”) IEOR(A,B) !按位“异或”write(*,“(1x,B8)”) Not(A) !按位“非”write(*,*) Bit_size(A),Bit_size(Not(A) !A的位数write(*,*) Btest(A,4) !判断A的第四位是否为1write(*,“(
23、1x,B8)”) IBCLR(A,2) !将A的第二位置零write(*,“(1x,B8)”) IBSET(A,0) !将A的最低位置1write(*,“(1x,B8)”) Ishft(A,1),Ishft(A,-1)!A左移、A右移write(*,“(1x,B8)”) IshftC(A,1,4),IshftC(A,-1,4)!A的第四位End !左移,A的第四位右移94算术表达式953.8 算术表达式3.8.1算术运算符和运算优先级可以使用五种算术运算符号: 加(+)、减(-)、乘(*)、除(/)、乘方(*)注意:A*-B 是不合法的,应该写成(A*(-B));两个运算符不能相邻(但在CVF
24、6中作了修改)。优先级次序: 高*乘方 中* / 乘除 低+ - 加减当幂为小数时也可以用于求平方根。*0.5=sqrt(4.0)963.8 算术表达式3.8.2 算术表达式的含义和表示方法表达式是运算符和运算元素(常量、变量、函数、数组)连接起来的具有数值的式子。基本特征:1)运算元素都是算术量;2)运算符是算术运算符;3)表达式的值是一个算术量(数值) (A-B)/C * * 2+SIN (X+Y)973.8 算术表达式算术表达式书写时的注意事项:1) 一般除号( / )前后运算元素用括号括起来;2)乘号(*)不能省略;3)无大中小括号之分,一律用小括号;4)对多次乘方需按“先右后左”的原
25、则处理;5)注意单目运算符(-5,+10,-A)。-A就相当于0-A 如:-A *2相当于0-A*2 ,也就是-(A*2) 而不是(-A)*2, 不要混淆。6)算术表达式求值运算的优先次序高 低1)括号; 2)函数; 3)*; 4)* / ; 5)+ -链 接983.8 算术表达式3.8.3 表达式运算中的类型问题 FORTRAN 允许不同类型的算术量之间的算术运算(整型、实型、双精度、复型)。如 2*3.5 FORTRAN 规定如下:1)同类型的算术量之间运算的结果仍然保持原类 型。特别规定:两个整数相除的商也是整数。 (1/2的值是0)2)如果参加运算的两个算术量为不同类型,则编译 系统会
26、自动将它们转换成同一类型然后再进行运 算。规则是: 将低级类型转换成高级类型 993.8 算术表达式3.8.3 表达式运算中的类型问题四则运算规律(或乘方运算规律) 整型 实型 整型 整型 实型 实型 实型 实型运算量2(基数类型)运算量1(指数类型)运算结果(乘方运算结果)1003.8 算术表达式3.8.3 表达式运算中的类型问题类型的转换是从左而右进行的。在遇到不同类型的算术量时才进行转换。如下例:5*6.5 是先将5转换为5.0(此时就遇到不同类型的算术量),再乘以6.5等于32.5。 但注意:1/4*20.0时,由于1/4两个是同类型的算术量,结果等于0,再0*20.0,结果为0如:A
27、=5/2 2.000000 B=5/2.0 2.500000 C=5.0/2 2.500000 D=5.0/2.0 2.500000 I=5.0/2 2 J=5.0/2.0 21013.8 算术表达式3.8.3 表达式运算中的类型问题1)在FORTRAN中没有像C中有强制类型转换: (char)(x+i) 将表达式x+i的类型转换为char类型2)在FORTRAN中也不能数字与字符混合运算: 1+3.14159+“ A” 这在c中都是可以的 其结果是:69.1415861023.8 算术表达式3.8.4 运算的误差问题1)整型量的运算是准确的,没有任何误差;2)实型量的运算会出现误差(实数有效
28、位数 的限制)。因此,在书写表达式时,应尽 量使每一次运算结果都在有效位数范围之 内,也就是尽量不要使两个相差很大的数 值直接相加或相减运算。同样:理论上是相等的数,在实数中不能直接 判断是否相等。而是使用绝对值之差 |A-B|作为判断条件。(sqrt(4.1234567)*2.0-4.1234567不为GO103I=1/3+1/3+1/3 I=0A=1/3+1/3+1/3 A=0.000000I=1.0/3.0+1.0/3.0+1.0/3.0 I=1A=1.0/3.0+1.0/3.0+1.0/3.0 A=1.000000理论上:1/3+1/3+1/3=1 1.0/3.0+1.0/3.0+1.
29、0/3.0=1现在的编译系统中作了相应的“相等”处理。104分析结果:Integer:ImaxReal:JmaxImax=1.0/3.0+1.0/3.0+1.0+3.0Jmax=1.0/3.0+1.0/3.0+1.0+3.0Write(*,*) Imax,JmaxEnd105赋值语句1063.9 赋值语句3.9.1赋值语句:将一个确定的值赋给一个变量 变量=表达式1)有三类赋值语句:2)算术赋值语句兼有计算和赋值功能;3)赋值号左边只能是变量名,不能是表 达式;4)不能象C语言那样进行复合赋值、连 续赋值以及增量运算。算术赋值语句逻辑赋值语句字符赋值语句链接1073.9 赋值语句3.9.2 执
30、行赋值语句时的类型转换问题赋值语句中的被赋值的变量和表达式的类型可以相同,也可以不同。 规则如下:1)两者类型相同时,直接赋值;2)两者类型不相同时,先求表达式的 值,再将该值转换为变量的类型: I=3.5*2.1将7.35转换为77送I1083.9 赋值语句3.9.2 执行赋值语句时的类型转换问题 如IMAX=13.7*2.5 结果不是34.25 而是34整型实型结果为整型整型先取整,再赋值,结果为整先化实,结果为实型实型结果为实型变量类型表达式类型109关于赋值语句:是赋值不是等号;具有计算功能;具有类型转换功能;左边一定是变量名,右边是表达式。输出语句1103.10 简单的输出语句3.1
31、0.1输出语句的作用和分类程序的作用是对输入的数据加工后输出结果: 1)显示 2)打印对于输出来说,需要告之系统如下内容: 1)输出那些数据? 2)什么格式输出? 3)输出到哪个设备上?FORTRAN语言输出格式有三类: 1)按用户指定格式; 2)系统隐含的标准格式; 3)二进制格式(无格式)输出。1113.10 简单的输出语句3.10.2表控输出语句(list directed format): 就是系统隐含的输出格式;系统自动地分别为每个不同类型的数据安排所占列数的表示形式(小数或指数)。如:Print * , I , J (I=45, J=128) 打印结果: 13列 13列 Print
32、 * , A , B 18列 18列4512813.567000-186.750000实际整型数: 21亿多-10位实际默认实型数的小数位数为6位112Integer a, ba=45b=88Print *, a, bEnd1133.10 简单的输出语句3.10.2表控输出语句当实型数据超过上述格式时,系统自动转换为标准的指数形式输出:A=162*1025 , B=-11.72*10-13 1.620000E+027-1.172000E-0121)根据系统不同,指数的列数也有不同(6或4列)2)Print * 表示输出一个空白行;3)Print * ,A , B ,C , D , E , I,
33、 J, K, L, M 等, 系统会在一行打不下时,自动换行打印;4)Print * , A , B 与 Write (* , *) A , B作用相同 在Write (*, *) A, B中, 第一个*表示隐含设备输出, 第二个*表示表控格式输出,相当于Print *输入语句114Real a, b, ca=162E25b=-11.72E-13c=12.345Print *, a, b, cEnd115对于Write输出:通常写法:write(*,*) 变量名表严格写法:write(unit=*,fmt=*) 变量名表116直接输出文本:Print * ,“文本内容”Write(*,*) “
34、文本内容”117输出带引号的字符串Write(*,*)“My name is “”Peter” ”Write(*,*)My name is “Peter” End1183.11 简单的输入语句3.11.1输入语句的作用和分类同输出一样,输入也有同样的三种类型计算机内 存数据输入从外设读入输入Input计算机内 存数据输出输出到外设输出Output1193.11 简单的输入语句3.11.2表控输入语句(也称自由格式输入):不必指定输入数据的格式,只需将数据按其合法的形式依次输入,数据之间以逗号或空格相间(PS4和CVF6都一样)。 为表控输入,从系统隐含指定的输入设备上读入,如命令: READ
35、* , I, J, A, B 则输入:,.,. 或: 7.5 -15.8空格个数不定! READ (* , *) I , J , A , BREAD * , I , J , A , B1203.11 简单的输入语句3.11.2表控输入语句注意在FORTRAN 77子集中,不接受READ * , I, J, A, B 格式(因没有指定输入设备),所以在程序中应该写成:第一个*表示隐含设备输入(通常是键盘) 第二个*表示表控格式输入.注意以下六点:一)对READ语句中数据的要求: 1)输入数据的个数不少于READ中变量的个数; 2)输入数据的类型要与READ中变量的类型匹配;READ (* ,*)
36、 I, J, A, B1213.11 简单的输入语句对于语句: READ (* ,*) I, J, A, Ba) 3, 10, 7.5, -15.8 (按语句输入数据)b)3, 10 7.5, -15.8 c)3, 10, 7.5 -15.8 如果输入的数据个数不够,系统将等待用户的继续输入,直到输入完毕。1223.11 简单的输入语句3.11.2表控输入语句二)输入数据的个数多于变量个数,则多的数 据将丢失;三)每一个READ语句都是从一个新的输入行 开始读数。如: READ *, I, J READ *, A, B READ *, X,Y输入:3,10,7.5, -15.8 70.6, 8
37、.5 (此时实际还等待输入)此时,变量真实内容:I=3, J=10; A=70.6, B=8.5!区别:Read *,I,J,A,B,X,Y这里的三句读语句是读如三个记录1233.11 简单的输入语句3.11.2表控输入语句四)在输入数据行中出现“/”表示READ语句输 入结束,未赋值的变量不予赋值。五)在一个数据的数字之间不要插入空格,因 为空格是数据间的分隔符;六) 变量是整型,输入是实型,系统报错; 变量是实型,输入是整型,系统先将此数 转换为实数,然后再赋给实型变量。但在CVF6中,系统不报错,只是将实数取整送整型变量124read(*,*) M,Nread(*,*) A,Bwrite
38、(*,*) M,Nwrite(*,*) A,Bend输入:1.4 , 4 4 , 4.1125输入一部分后,键入回车,系统则继续等待的输入,直到所有变量获得输入值为止126强行结束输入127分析:I=123J=456Print *,I,J,KEndImplicit NoneInteger I,JI=123J=456Print *,I,J,KEnd128K=0129参数语句1303.12 参数语句(PARAMETER)用一个名字来代替一个常量(符号常量)注:PARAMETER 是非执行语句,放在所有执行语句之前。但一般先写类型说明语句,后写参数语句。它不能作为语句标号,也不能出现在Format语
39、句中代替常数。 PARAMETER 的类型有: 数值型、逻辑型、字符型Parameter (PI=3.1415926).Read *, R S=PI*R*2. L=2.0*PI*R在C中(1):#Define PI=3.1415926在C中(2):Const float pi=3.14159对于F90:Real,parameter:pi=3.1415131integer A, Bparameter (AB=123.456) A=AB*2 B=AB-123print *,A, B, ABend2.也可以一次定义多个符号常量: parameter (AB1=123.456,AB2=95.123)n
40、ext1.符号常量一旦定义,在程序中不可再次赋 值,只能引用;1323.13 END、STOP、PAUSE语句END语句的作用:(1)结束本程序单位的运行;(2)作为程序的结束标志。注:一个程序单位只有一个END语句;主程序 中的END就是返回到命令状态,子程序中 的END就是返回主程序(返主)。STOP语句的作用: 停止程序的运行(一个程序单位可有多个STOP语句) stop n 如: stop 1234 输出信息1234 stop abc 输出信息abc 不超过5个字符(现在的编译系统做了修改,已经没有这个限制了)133END、STOP、PAUSE语句STOP语句的举例:!这是一个求平均数
41、的程序Print *,请输入三个数:Read(*,*) x, y, zAver=(x+y+z)/3.0Print *,x=, x, y=, y, z=, zPrint *,aver=, aver stop 程序正常终止!End1341353.13 END、STOP、PAUSE语句PAUSE语句的作用:是暂时停止执行(不是结束运行),系统暂时挂起来,等待操作员输入操作命令,如设置“断点”: PAUSE n其中n为输出信息,与STOP n中的n相同; 恢复继续运行可使用ENTER键。136integer A,Bb =0read *,ab=a+bprint *,a,bpause 001read *,
42、ab=a+bprint *,a,bpause 002read *,ab=a+bprint *,a,bpause 003print *,程序结束!end注意:只有按任意键才能继续输入也可以:PAUSE “字符串”程序举例1373.14 程序举例求三角形面积(Exa3_3.for)已知:A,B,C为三角形的三条边; S=(A+B+C)/2 则三角形的面积是: S=(S(S-A)(S-B)(S-C))的开平方输入五个数,打印出绝对值最大的数(Exa3_4.for)计算人口增长情况(Exa3_5.for)计算人口增长情况(Exa3_5a.for)计算:速度与距离(Exa3_6.for)138求三角形面
43、积已知:A,B,C为三角形的三条边;S=(A+B+C)/2 则三角形的面积是:S=S(S-A)(S-B)(S-C)的开平方值Program tra_area !注意程序的取名规则Read(*,*) a,b,cs=(a+b+c)/2.0Area=SQRT(s*(s-a)*(s-b)*(s-c) !Area=(s*(s-a)*(s-b)*(s-c)*0.5Write(*,*)A=,a,B=,b,C=,cWrite(*,*)AREA=,areaEnd139输入五个数,打印出绝对值最大的数program MAX_NUMBERRead(*,*) a,b,c,d,eLarge=MAX(abs(a),abs
44、(b),abs(c),abs(d),abs(e)Write(*,*) 绝对值最大的数是:,largeEnd通过在后章节的学习我们可以用多种方法来解此题。140计算人口:1982的人口数:10.3亿,年增长1.5%,求2000年年底人口数:P=P0(1+R)n Program PopulationR=0.015N=2000-1982P0=10.3E08P1=P0*(1.0+R)*NWrite(*,*) 2000年的人口数:,P1End141计算人口:求任意年份之间、任意增长率的通用人口数增长计算程序:P=P0(1+R)n Program PopulationInteger Year1,Year2
45、Read (*,*) R,Year1,Year2,P0 N=Year1-Year2P1=P0*(1.0+R)*NWrite(*,*) Year1 ,年的人口数:,P1End142计算速度与距离:已知一火车以均匀速度V0 行驶,从t=10开始加速运行,加速度为a,问经过t=50分钟后火车的速度和行驶的距离:速度V=V0+at 距离S= V0 t + 1/2 at2 Program SandVRead(*,*) v0,av0=v0*1000.0/(60.*60.)a=a*1000.0/3600.0*2 ! A=m/s2t1=10.*60.t2=50.*60.t=t2-t1v=v0+a*tv=int
46、(v*100.0+0.5)/100.0s=v0*t2+0.5*a*t*2s=int(s*100.0+0.5)/100.0Write(*,*) v=,v,M/SEC.Write(*,*) S=,s,MEnd程序的调试143程序的调试:建立源程序;编译;连接;按如下步骤:GO程序调试OVER144本章小结本章内容是学习FORTRAN语言最基本知识和最基础的语法规则。FORTRAN语言源程序的书写格式;FORTRAN编译系统的使用;常量(数据类型);变量(命名规则及类型);表达式(算术、关系、逻辑);数据类型(说明符及在内存的表示);系统常用函数(自变量和函数值类型);赋值语句(特别注意数据类型的转
47、换);基本I/O语句等.要求熟练掌握本章节内容!145CHAPTERENDS第三章练习:2、10、11、12题146FORTRAN 的主要特点(与其它语言的比较)是相当数学化的语言(常用于科学和工程计算问题以及复数表示与计算等);简单易学(相对而言);执行速度快,代码高度优化;高版本的FORTRAN还具有并行运算能力;便于交流.返回147如何实现小数的四舍五入基本公式是: INT(X*A+0.5)/AA为10小数点后保留1位; A为100小数点后保留2位;A为1000小数点后保留3位;如:X=123.4567 现在想取小数点后两位的四舍五入的值: INT(123.4567*100+0.5)/1
48、00=123.46返回148149编辑文件和阅读文档的主工作区项目工作区输出窗口和状态栏1501、运行Fortran PowerStation 2、文件新建Project Workspaces标签: 输入: Project Workspace name; Location默认值:c:programFiledevstudio (最好是将默认路径改为自己所创建的文件夹)开发自己的简单应用程序步骤:1513、FileNewText File标签:这样就可以直接输入源文件了。注意:当我们保存文件时,其文件名后缀有两种: .F90:Fortran free Format(自由格式) .For:Fortr
49、an Fixed Format(固定格式 ) 1524、输入文件内容、存盘(文件菜等) 注意自由格式和固定格式输入的区别。5、 BuildCompile: 编译 BuildBuild: 连接 BuildExetuce: 运行重复36进行第二个源程序(注意一个项目中只能含有1个主程序文件,不能将两个独立的程序文件放入同一个项目中,否则会导致编译错误。)或用DEL移去已建立的文件,重复46153 注意: 1)在项目区所移去的文件仅从此项目中移去,目录下该文件仍然存在。 2)新建的原文件名不得与以前的文件名同名。Back154 程序的调试过程: (该文件已经经过编译和连接)w1=111.0w2=22
50、2.0w3=(w1+w2)/2.0print *,w3end155156变量初值开始时指针指向第一条语句,准备执行单步操作157按F8执行单步操作158159Compaq Visual Fortran 6.5-Debug将光标定在要调试的语句上;(通常是第一条语句)在菜单的build下Start Debug;Run to Cursor(Ctrl+F10),出现箭头;按F10单步执行,并观察变量的变化;停止Debug:菜单BuildStop Debugging.返回160Go Back如果一个整型数据要进行开方运算,则需要转换(使用转换函数):A1=SQRT(REAL(I)编译出错161 a=4.1234567 b=(sqrt(a)*2 c=a-b print *,c end运行结果:4.566660E-16Back162st1=12345678st2=0.0000000987654321st3=st1-st2print *,st3end运行结果:st3=1.234568E+07(12345680)这个结果显然有误差。163Real(8) st1,st2,st3st1=12345678st2=0.000000098
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025养殖行业疫病防控与生物安全合作协议3篇
- 低温仓储的设备运维与维护保养考核试卷
- 图书馆数字资源利用考核试卷
- 收藏品市场消费心理与购买动机考核试卷
- 摩托车节气门清洗与调整考核试卷
- 二零二五年度葡萄酒经销商售后服务协议范本
- 医疗设备在精准医疗领域的创新应用与挑战应对策略研究考核试卷
- 2025-2030年地震波速测试与分析系统企业制定与实施新质生产力战略研究报告
- 会展旅游行业的国际合作与交流考核试卷
- 2025-2030年名人故居雕塑复原行业跨境出海战略研究报告
- 女性生殖系统解剖与生理 生殖系统的血管淋巴和神经
- 江苏省2023年对口单招英语试卷及答案
- 易制毒化学品安全管理制度汇编
- GB/T 35506-2017三氟乙酸乙酯(ETFA)
- GB/T 25784-20102,4,6-三硝基苯酚(苦味酸)
- 特种设备安全监察指令书填写规范(特种设备安全法)参考范本
- 硬笔书法全册教案共20课时
- 《长方形的面积》-完整版课件
- PDCA降低I类切口感染发生率
- 工业企业现场监测工况核查表
- 沉淀池及排水沟清理记录表
评论
0/150
提交评论