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

下载本文档

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

文档简介

1、1/133 FORTRAN语言程序设计初步2/133FORTRAN语言程序设计初步语言程序设计初步任何一种程序设计语言都有自己的任何一种程序设计语言都有自己的一套语法规则以及由基本符号按语一套语法规则以及由基本符号按语法规则构成的各种语法成分:如常法规则构成的各种语法成分:如常量、变量、表达式、语句、函数等量、变量、表达式、语句、函数等.FORTRAN语言程序设计初步语言程序设计初步就是就是要求我们熟练地掌握这些语法成分要求我们熟练地掌握这些语法成分.3/1333.1 FORTRAN3.1 FORTRAN语言发展概况语言发展概况3.2 3.2 简单程序分析简单程序分析3.3 FORTRAN3.

2、3 FORTRAN书写格式书写格式3.4 FORTRAN3.4 FORTRAN源程序输入方式源程序输入方式3.5 3.5 常量常量3.6 3.6 变量变量3.7 FORTRAN3.7 FORTRAN内部函数内部函数3.8 FORTRAN3.8 FORTRAN算术表达式算术表达式3.9 3.9 赋值语句赋值语句3.10 3.10 简单的输出语句简单的输出语句3.11 3.11 简单的输入语句简单的输入语句3.12 3.12 参数语句参数语句3.13 END 3.13 END 、 STOP STOP 、 PAUSE PAUSE 语句语句3.14 3.14 程序举例程序举例FORTRAN语言基础4/

3、133FORTRAN-FORmula TRANslation (公式翻译公式翻译)是世界上第一个被正式推广使用的高级语言是世界上第一个被正式推广使用的高级语言( (于于1954年提出年提出; 1956年正式使用年正式使用) )FORTRANFORTRAN是数值计算领域里使用的主要语言;是数值计算领域里使用的主要语言;发展发展( (有代表性的几个版本有代表性的几个版本) ): FORTRANFORTRAN 1958 FORTRANFORTRAN 1962 ( (Fortran 66) ) FORTRANFORTRAN 77 1978 FORTRANFORTRAN 90 1990早期的版本不是早期

4、的版本不是结构化语言结构化语言, ,没没有直接实现三种有直接实现三种基本结构的语句基本结构的语句( (使用使用gotogoto实现实现特定操作特定操作).F77).F77才在才在F66F66作了大作了大幅度的修改幅度的修改. . FORTRAN的特点5/1331954 FORTRAN I1958 FORTRAN1962 FORTRAN1966 由于从由于从到到不兼容,故在此基础不兼容,故在此基础上制定标准:上制定标准: FORTRAN 661978 FORTRAN77向下兼容向下兼容1991 FORTRAN901997 FORTRAN95注:注:FORTRAN95FORTRAN95不象不象FO

5、RTRAN90FORTRAN90在在FORTRAN77FORTRAN77的基的基础上添加了很多新的内容,础上添加了很多新的内容,而而FORTRAN95FORTRAN95只能视为是只能视为是FORTRAN90FORTRAN90的修正版,加强了的修正版,加强了并行运算方面的支持功并行运算方面的支持功能能.(.(这是其它语言不可替代这是其它语言不可替代的的) )NEXT6/133 10 20 30 40 50 60 70 8001234567890123456789012345678901234567890123456789012345678901234567890123456789C CALCUL

6、ATE THE AVERAGE OF THREE NUMBERSx=90.5y=87.0z=68.5AVER=(x+y+z)/3.0print * * ,the three numbers are , x , y , zprnt * * , average=, averendVoid main() float x,y,z,Aver;x=90.5;y=87.0;z=68.5;Aver=(x+y+z)/3;Printf(“%f%f%fn”,x,y,z);Printf(”%f”,Aver);7/1338/133语法着色语法着色:绿色:绿色:注释文本;注释文本;蓝色:蓝色:关键字;关键字;黑色:黑色:

7、代码。代码。9/133 10 20 30 40 50 60 70 8001234567890123456789012345678901234567890123456789012345678901234567890123456789C MAIN PROGRAMPROGRAM EX2print * * ,R , 1.0,C=, C( (1.0) ) print * * ,R , 1.5,C=, C( (1.5) )print * * ,R , 3.0,C=, C( (3.0) )print * * ,R , 12.5,C=, C( (12.5) )end0123456789012345678901

8、2345678901234567890123456789012345678901234567890123456789C SUBPROGRAMFUNCTION C( (R) )pi=3.1415926C=2 * * pi * * Rreturnend例如:将此文件保存为:li3.for如保存此文件:li3_1.for分别将两个文件编译再build li3.EXE 即可运行10/133单位定义部分单位定义部分( (主、子程序主、子程序) )说明部分说明部分输入部分输入部分计算或处理部分计算或处理部分输出部分输出部分ENDEND结束结束11/133程序单位:具有以上各部分组成程序单位:具有以上各部分

9、组成(或部分或部分)的的程序称为一个程序单位,可以单独编译,程序称为一个程序单位,可以单独编译,也可以一起编译。也可以一起编译。(主程序、子程序、数据块子程序、主程序、子程序、数据块子程序、模块模块)我们已经知道,在我们已经知道,在C语言中,程序的组成语言中,程序的组成是由若干个函数组成的。是由若干个函数组成的。12/1331)1)首先在工作盘中建立文件夹首先在工作盘中建立文件夹, ,如:如:For_testFor_test2)2)进入进入FortranFortran启动程序启动程序(Developer Studio);(Developer Studio); 3)“3)“文件文件” “ “新建

10、新建” “ “FILE”FILE” “Fortran Fixed Format Source File”“Fortran Fixed Format Source File”在在Location: For_testLocation: For_test OKOK4)4)进入编辑状态进入编辑状态输入源文件输入源文件保存文件保存文件1 15)5)重复步骤重复步骤3 3建立文件建立文件2 26)6)打开文件打开文件1 1编译编译; ; 打开文件打开文件2 2编译编译; ;7)Build 7)Build * *.Exe .Exe 文件文件运行运行! !13/1331)运行运行CMDD:2)可以删除原文件以

11、及目标文件等可以删除原文件以及目标文件等;3)直接运行直接运行*.EXE程序程序.14/1331)1)一个程序由一个或若干个程序单位组成一个程序由一个或若干个程序单位组成; ;2)2)每一个程序单位都是以每一个程序单位都是以“END”END”语句作为结束语句作为结束; ;3)3)一个程序单位包括若干行一个程序单位包括若干行: :(1)语句行语句行执行语句执行语句(使计算机在运行时产生某些操作)(使计算机在运行时产生某些操作)非执行语句非执行语句(如类型说明语句、数据语句)(如类型说明语句、数据语句)(2)非语句行非语句行(如注释行如注释行)尽管不执行,但在打印清单时是要打印出来的尽管不执行,但

12、在打印清单时是要打印出来的4 4)FORTRANFORTRAN语句可以没有标号,也可以有标号;语句可以没有标号,也可以有标号;5 5)一个程序单位中各类语句位置是有一定规定的)一个程序单位中各类语句位置是有一定规定的; ;6 6)FORTRANFORTRAN源程序必须按一定的格式书写。源程序必须按一定的格式书写。!15/133目前使用的编译系统:目前使用的编译系统:Microsoft Fortran Powerstation 4.0(微软卖给了微软卖给了Digital, Digital继续开发继续开发)Digital Visual Fortran 5.0( Digital 被被Compaq并购

13、并购 )Compaq Visual Fortran 6.0 6.5(Compaq与与HP合并合并) HP Compaq Visual Fortran X.X16/13317/133运行安装程序18/133选择安装19/133建议在安装本系统之前关闭其它应用程序20/13321/133建议改为自己的盘符和文件夹22/13323/13324/133建议选择更新环境25/13326/13327/13328/133Compaq Virsual Fortran6.529/133在在6.5版本中,版本中,Workspace里可以包含多个里可以包含多个Projects,但但每一个每一个Projects里只能

14、包含一个主文件(里只能包含一个主文件(EXE)。)。而在而在PS4.0中,只有项目空间中,只有项目空间Projects Workspace,所,所以在此只有一个主文件,该文件名就是项目空间名。以在此只有一个主文件,该文件名就是项目空间名。Workspace*.exeProjectsProjects*.exe30/133Compaq Virsual Fortran6.531/133POWER STATION4.032/133POWER STATION4.033/133Compaq Virsual Fortran6.534/133Compaq Virsual Fortran6.535/13336/

15、13337/13338/13339/13340/13341/13342/1331.1.建立一个新的建立一个新的Project(File/New,Project(File/New,选择选择ProjectProject卡,选择卡,选择Fortran console programFortran console program格式格式, ,给出给出ProjectProject名名) ), ProjectProject会自动保存会自动保存* *.dsw.dsw文件文件2.2.生成一个新的程序文件生成一个新的程序文件(File/New,(File/New,选择选择FileFile卡,选择两卡,选择两种格

16、式之一,并给出文件名种格式之一,并给出文件名) ),或者是插入一个已有的文,或者是插入一个已有的文件(件(Project/add to project/Files)Project/add to project/Files)。单击。单击File/Save File/Save Workspace,Workspace,就保存就保存ProjectProject所包含的程序文件。所包含的程序文件。3.3.在在BuildsBuilds菜单上直接选择菜单上直接选择ExecuteExecute就会自动完成编译到执就会自动完成编译到执行全过程,也可以选择行全过程,也可以选择BuildBuild只做编译。只做编译

17、。4.4.要编写新的程序就要另建一个要编写新的程序就要另建一个Project,Project,也可更换也可更换ProjectProject中的文件。注意不要把两个独立的程序文件放在同一个中的文件。注意不要把两个独立的程序文件放在同一个ProjectProject里(编译时出错)。里(编译时出错)。5.5.下次要修改程序时,直接下次要修改程序时,直接File/WorkspaceFile/Workspace打开打开* *.dsw.dsw中的中的ProjectProject工程文件。工程文件。43/133系统界面简介系统界面简介编译系统操作步骤编译系统操作步骤编译系统基本设置等编译系统基本设置等GO

18、44/133Exa3_1.for (P46)Exa3_2main.for(P47)Exa3_2sub.for(P47)(通过实际运行来演示通过实际运行来演示)45/13346/13347/133在在DOSDOS环境下环境下: :建立文件建立文件; ;保存文件于当前文件夹保存文件于当前文件夹( (编译文件夹编译文件夹););编译编译: FOR1: FOR1运行运行: PAS2: PAS2建立连接建立连接: LINK: LINK运行可执行文件运行可执行文件: : 文件名文件名48/133FORTRANFORTRAN程序代码的编写格式有两种:程序代码的编写格式有两种:Fixed Format(固定格

19、式)本教材采用(固定格式)本教材采用扩展名:扩展名:.F或或.FORFree Format(自由格式(自由格式4.0版本以上)版本以上)扩展名:扩展名:.F9049/133Fortran一行一行80列,分为四个区域列,分为四个区域:1)1)标号区(标号区(1 1 5 5列)列):15位无符号的整数,中间空位无符号的整数,中间空格不起作用(格不起作用(100、 100、1 0 0是相同的)没有大是相同的)没有大小顺序。标号区第一列必须是空格、数字、小顺序。标号区第一列必须是空格、数字、C、*(F90:数字之间不能有空格;以数字之间不能有空格;以!作为行注释)作为行注释)2)2)续行标志区(第续行

20、标志区(第6 6列)列)非空格或非非空格或非0的字符:作为上一行的继续行的字符:作为上一行的继续行3)3)语句区(第语句区(第7 7 7272列)列)一行只写一条语句一行只写一条语句,空格被忽略(空格被忽略(s in ( x) 有效)有效)4)4)注释区(第注释区(第7373 8080列)列):不是语句的部分,除打印不是语句的部分,除打印清单外,编译系统不予处理(输入的内容为红色)清单外,编译系统不予处理(输入的内容为红色)50/133第第1个字符个字符当为字母当为字母c、C或或*,这一行文本会当成说明,这一行文本会当成说明或批注,不会被编译。或批注,不会被编译。第第15个字符个字符当为数字,

21、就是用来给这一行程序代码取当为数字,就是用来给这一行程序代码取个代号,不然只能是空格。个代号,不然只能是空格。第第6个字符个字符如果是非如果是非0非空的任何字符,表示这一行程非空的任何字符,表示这一行程序会接续上一行。序会接续上一行。第第772个字符个字符Fortran程序代码的编写区域。程序代码的编写区域。第第7380个字个字符以后符以后不使用这些列,语句超过该列的部分会被不使用这些列,语句超过该列的部分会被忽略,有的编译器会发出错误信息。忽略,有的编译器会发出错误信息。51/133Free Format(自由格式)(自由格式) 基本上允许非常自由的编写格式,它没有规定每基本上允许非常自由的

22、编写格式,它没有规定每一行的第几个字符有什么作用,但要注意:一行的第几个字符有什么作用,但要注意:1.1.!感叹号后面的文本都是注释(行内也一样)。!感叹号后面的文本都是注释(行内也一样)。2.2.每行可以编写每行可以编写132132个字符。个字符。3.3.行号放在每行程序的最前面。行号放在每行程序的最前面。4.4.一行程序代码的最后如果是符号一行程序代码的最后如果是符号& &,代表下一行,代表下一行程序会和这一行连接。如果一行程序代码的开头程序会和这一行连接。如果一行程序代码的开头是符号是符号&,&,代表它会和上一行程序连接代表它会和上一行程序连接( (拆分关

23、键字拆分关键字) )。5.5.程序命令之间的空格,无意义。程序命令之间的空格,无意义。 52/133 !Free Format program main write(* *,* *)”Hello” !这也是注释这也是注释 write(* *,* *)& ”Hello” wri& &te(* *,* *)”Hello” end53/133 !Free Format program main write(* *,* *)”Hello” write(* *,* *)& ”Hello” wri& &te(* *,* *)”Hello” end54/133

24、编写编写Fortran77Fortran77程序时,所能使用的所有字符及符程序时,所能使用的所有字符及符号就是号就是F77F77的字符集:的字符集: A AZ Z(a az z)程序中不区分大小写)程序中不区分大小写 2626个个 0 09 9 1010个个 空格空格 = + - = + - * * / / ( ) ,:,:. $ . $ 2222个个 _(_(下划线下划线) )、!、!、”、% %、& &、;、;、 、 10.29) = 10.29如:如:A=10.29A=10.29 B=5.54 B=5.54 C=Mod(A,B C=Mod(A,B) = 4.75) = 4

25、.7588/1333.8.13.8.1算术运算符和运算优先级算术运算符和运算优先级可以使用五种算术运算符号:可以使用五种算术运算符号: 加(加(+ +)、减()、减(- -)、乘()、乘(* *)、除()、除(/ /)、乘方()、乘方(* * *)注意:注意:A A* *-B -B 是不合法的,应该写成(是不合法的,应该写成(A A* *(-B)(-B)); ;两个运算符不能相邻两个运算符不能相邻。优先级次序:优先级次序: 高*乘方 中* / 乘除 低+ - 加减当幂为小数时也可以用于求平方根。*0.5=sqrt(4.0)89/1333.8.2 3.8.2 算术表达式的含义和表示方法算术表达式

26、的含义和表示方法表达式表达式是运算符和运算元素(常量、变是运算符和运算元素(常量、变量、函数、数组)连接起来的具有数值量、函数、数组)连接起来的具有数值的式子。的式子。基本特征基本特征:1 1)运算元素都是算术量;)运算元素都是算术量;2 2)运算符是算术运算符;)运算符是算术运算符;3 3)表达式的值是一个算术量(数值)表达式的值是一个算术量(数值) (A-BA-B)/C /C * * * * 2+SIN (X+Y)2+SIN (X+Y)90/133算术表达式书写时的注意事项算术表达式书写时的注意事项: :1) 一般除号一般除号( ( / ) )前后运算元素用括号括起来前后运算元素用括号括起

27、来;2)乘号(乘号(* *)不能省略)不能省略;3)无大中小括号之分无大中小括号之分,一律用小括号一律用小括号;4)对多次乘方需按对多次乘方需按“先右后左先右后左”的原则处理的原则处理;5)注意单目运算符注意单目运算符(-5,+10,-A)。-A就相当于就相当于0-A 如:如:-A * * *2相当于相当于0-A* * *2 ,也就是也就是-(A* * *2) 而不是而不是(-A)* * *2, 不要混淆。不要混淆。6)算术表达式求值运算的优先次序算术表达式求值运算的优先次序高高 低低1)括号; 2)函数; 3)*; 4)* / ; 5)+ -91/1333.8.3 3.8.3 表达式运算中的

28、类型问题表达式运算中的类型问题 FORTRAN FORTRAN 允许不同类型的算术量之间的算术运算允许不同类型的算术量之间的算术运算(整型、实型、双精度、复型)。如(整型、实型、双精度、复型)。如 2 2* *3.53.5 FORTRAN FORTRAN 规定如下:规定如下:1 1)同类型的算术量之间运算的结果仍然保持原类型。)同类型的算术量之间运算的结果仍然保持原类型。特别规定:两个整数相除的商也是整数特别规定:两个整数相除的商也是整数( (1/21/2的值是的值是0 0) )2 2)如果参加运算的两个算术量为不同类型,则编译)如果参加运算的两个算术量为不同类型,则编译系统会自动将它们转换成

29、同一类型然后再进行运算。系统会自动将它们转换成同一类型然后再进行运算。规则是:规则是: 将低级类型转换成高级类型将低级类型转换成高级类型 92/1333.8.3 3.8.3 表达式运算中的类型问题表达式运算中的类型问题四则运算规律(或四则运算规律(或乘方运算规律乘方运算规律) 整型 实型 整型 整型 实型 实型 实型 实型运算量2(基数类型)运算量1(指数类型)运算结果(乘方运算结果)93/1333.8.3 3.8.3 表达式运算中的类型问题表达式运算中的类型问题类型的转换是从左而右进行的。类型的转换是从左而右进行的。在遇到不同类在遇到不同类型的算术量时才进行转换型的算术量时才进行转换。如下例

30、:。如下例:5 5* *6.5 6.5 是先将是先将5 5转换为转换为5.05.0(此时就(此时就遇到不同类型遇到不同类型的算术量的算术量),再乘以),再乘以6.56.5等于等于32.532.5。 但注意但注意:1/41/4* *20.020.0时,由于时,由于1/41/4两个是同类型的算术量,两个是同类型的算术量,结果等于结果等于0 0,再,再0 0* *20.020.0,结果为,结果为0 0如如:A=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 294/1333.8

31、.4 3.8.4 运算的误差问题运算的误差问题1)整型量的运算是准确的,没有任何误差;)整型量的运算是准确的,没有任何误差;2)实型量的运算会出现误差(实数有效位数)实型量的运算会出现误差(实数有效位数 的限制)。因此,在书写表达式时,应尽的限制)。因此,在书写表达式时,应尽 量使每一次运算结果都在有效位数范围之量使每一次运算结果都在有效位数范围之 内,也就是尽量内,也就是尽量不要使两个相差很大的数不要使两个相差很大的数 值直接相加或相减运算值直接相加或相减运算。同样:理论上是相等的数,在实数中不能直接同样:理论上是相等的数,在实数中不能直接 判断是否相等。而是使用绝对值之差判断是否相等。而是

32、使用绝对值之差 |A-B|作为判断条件。作为判断条件。赋值语句(sqrt(4.1234567)*2.0-4.1234567不为GO95/133I=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=1如果:如果:I=1.0/3.0+1.0/3.0 则则I=0A=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.0/3.0=1在现在的编译系统中在现在的编译系统中作了相应的处理作了相应的处理96/1333.9.13.9.

33、1赋值语句:赋值语句:将一个确定的值赋给一个变量将一个确定的值赋给一个变量 变量变量= =表达式表达式1 1)有三类赋值语句:)有三类赋值语句:2 2)算术赋值语句兼有计算和赋值功能)算术赋值语句兼有计算和赋值功能; ;3 3)赋值号左边只能是变量名,不能是表)赋值号左边只能是变量名,不能是表 达式。达式。算术赋算术赋值语句值语句逻辑赋逻辑赋值语句值语句字符赋字符赋值语句值语句97/1333.9.2 3.9.2 执行赋值语句时的类型转换问题执行赋值语句时的类型转换问题赋值语句中的被赋值的变量和表达式的赋值语句中的被赋值的变量和表达式的类型可以相同,也可以不同。类型可以相同,也可以不同。 规则如

34、下:规则如下:1 1)两者类型相同时,直接赋值;)两者类型相同时,直接赋值;2 2)两者类型不相同时,先求表达式的)两者类型不相同时,先求表达式的 值,再将该值转换为变量的类型;值,再将该值转换为变量的类型; I=3.5I=3.5* *2.12.1将将7.357.35转换为转换为7 77 7送送I I98/1333.9.2 3.9.2 执行赋值语句时的类型转换问题执行赋值语句时的类型转换问题 如如IMAX=13.7IMAX=13.7* *2.5 2.5 结果不是结果不是34.25 34.25 而是而是3434整型实型结果为整型整型先取整,再赋值,结果为整先化实,结果为实型实型结果为实型变量类型

35、表达式类型99/133在在FORTRAN90中:中:Integer:A=123, B=999Real:W=789.876, Y=345.345实现了数据类型的说明和数据初始化一次完成,实现了数据类型的说明和数据初始化一次完成,简化了程序中语句数。简化了程序中语句数。(也可以只定义数据类型也可以只定义数据类型)FORTRAN90中的中的赋值语句赋值语句100/133关于赋值语句的说明关于赋值语句的说明是赋值不是等号;是赋值不是等号;具有计算功能;具有计算功能;具有类型转换功能;具有类型转换功能;左边一定是变量名,右边是表达式。左边一定是变量名,右边是表达式。输出语句101/1333.10.13.

36、10.1输出语句的作用和分类输出语句的作用和分类程序的作用是对输入的数据加工后输出结果:程序的作用是对输入的数据加工后输出结果: 1)显示)显示 2)打印)打印对于输出来说,需要告之系统如下内容:对于输出来说,需要告之系统如下内容: 1)输出那些数据?)输出那些数据? 2)什么格式输出?)什么格式输出? 3)输出到哪个设备上?)输出到哪个设备上?FORTRAN语言输出格式有三类:语言输出格式有三类: 1 1)按用户指定格式;)按用户指定格式; 2 2)系统隐含的标准格式;)系统隐含的标准格式; 3 3)二进制格式(无格式)输出。)二进制格式(无格式)输出。102/1333.10.2表控输出语句

37、表控输出语句(list directed format): 就是系就是系统隐含的输出格式统隐含的输出格式;系统自动地分别为每个不同类型的系统自动地分别为每个不同类型的数据安排所占列数的表示形式(小数或指数)。数据安排所占列数的表示形式(小数或指数)。如:如:Print * * , I , J (I=45, J=128) 打印结果:打印结果: 13列 13列 Print * , A , B 18列 18列4512813.5670000-186.7500000实际整型数实际整型数: 21亿多亿多-10位位实际默认实型数的小数位数为实际默认实型数的小数位数为6位位103/133Integer a,

38、ba=45b=88Print *, a, bEnd104/1333.10.23.10.2表控输出语句表控输出语句当实型数据超过上述格式时,系统自动转换为标准的当实型数据超过上述格式时,系统自动转换为标准的指数形式输出:指数形式输出:A=162* *1025 , B=-11.72* *10-13 1.620000E+027-1.172000E-0121 1)根据系统不同,指数的列数也有不同()根据系统不同,指数的列数也有不同(6 6或或4 4列)列)2 2)Print Print * * 表示输出一个空白行;表示输出一个空白行;3 3)Print Print * * ,A , B ,C , D

39、, E , I, J, K, L, M A , B ,C , D , E , I, J, K, L, M 等,等, 系统会在一行打不下时,自动换行打印系统会在一行打不下时,自动换行打印4 4)Print Print * * , A , B , A , B 与与 Write Write ( (* * , , * *) ) A , B A , B作用相同作用相同 在在Write Write ( (* *, , * *) ) A, B A, B中,中, 第一个第一个* *表示隐含设备输出表示隐含设备输出, , 第二个第二个* *表示表控格式输出,相当于表示表控格式输出,相当于Print Print

40、* *输入语句105/133Real a, b, ca=162E25b=-11.72E-13c=12.345Print *, a, b, cEnd106/1333.11.13.11.1输入语句的作用和分类输入语句的作用和分类同输出一样,输入也有同样的三种类型同输出一样,输入也有同样的三种类型计算机计算机内内 存存数据输入从外设读入输入计算机计算机内内 存存数据输出输出到外设输出107/1333.11.23.11.2表控输入语句(也称自由格式输入):表控输入语句(也称自由格式输入):不必指定输入数据的格式,只需将数据按其合不必指定输入数据的格式,只需将数据按其合法的形式依次输入,数据之间以逗号或

41、法的形式依次输入,数据之间以逗号或空格空格相相间间。 为表控输入,从系统隐含指定的输入设为表控输入,从系统隐含指定的输入设备上读入,如命令备上读入,如命令: READ * * , I, J, A, B 则则输入:,输入:,. .,. . 或:或: 7.5 -15.87.5 -15.8空格个数不定空格个数不定 READ * * , I , J , A , B108/1333.11.23.11.2表控输入语句表控输入语句注意注意在在FORTRAN 77FORTRAN 77子集中子集中, ,不接受不接受READ * * , I, J, A, B 格格式式( (因没有指定输入设备因没有指定输入设备),

42、),所以在程序中应该写成所以在程序中应该写成: :第一个第一个* *表示隐含设备输入表示隐含设备输入( (通常是键盘通常是键盘) ) 第二个第二个* *表示表控格式输入表示表控格式输入. .注意注意( (以下六点以下六点):):一)对一)对READREAD语句中数据的要求:语句中数据的要求: 1 1)输入数据的个数不少于)输入数据的个数不少于READREAD中变量的个数;中变量的个数; 2 2)输入数据的类型要与)输入数据的类型要与READREAD中变量的类型匹配中变量的类型匹配;READ (* ,*) I, J, A, B109/133对于语句对于语句 READ ( (* * , ,* *)

43、 ) I, J, A, Ba) 3, 10, 7.5, -15.8 ( (按语句输入数据按语句输入数据) )b)3, 10 7.5, -15.8 c)3, 10, 7.5 -15.8 如果输入的数据个数不够,系统将等如果输入的数据个数不够,系统将等待用户的继续输入,直到输入完毕。待用户的继续输入,直到输入完毕。110/1333.11.23.11.2表控输入语句表控输入语句二)输入数据的个数多于变量个数,则多的数二)输入数据的个数多于变量个数,则多的数 据将丢失据将丢失; ;三)每一个三)每一个READREAD语句都是从一个新的输入行语句都是从一个新的输入行 开始读数。如:开始读数。如: REA

44、D READ * *, I, J, I, J READ READ * *, , A, BA, B READ READ * *, X, X,Y Y输入:输入:3 3,1010,7.5, -15.8 7.5, -15.8 70.6, 8.5 70.6, 8.5 (此时实际还等待输入此时实际还等待输入)此时,变量真实内容:此时,变量真实内容:I=3, J=10; A=70.6, I=3, J=10; A=70.6, B=8.5B=8.5!区别:Read *,I,J,A,B,X,Y这里是读这里是读三个记录三个记录111/1333.11.23.11.2表控输入语句表控输入语句四)在输入数据行中出现四)在

45、输入数据行中出现“/”/”表示表示READREAD语句输语句输 入结束,未赋值的变量不予赋值。入结束,未赋值的变量不予赋值。五)五)在一个数据的数字之间不要插入空格,因在一个数据的数字之间不要插入空格,因 为空格是数据间的分隔符为空格是数据间的分隔符; ;六)六) 变量是整型,输入是实型,系统报错;变量是整型,输入是实型,系统报错; 变量是实型,输入是整型,系统先将此数变量是实型,输入是整型,系统先将此数 转换为实数,然后再赋给实型变量转换为实数,然后再赋给实型变量。在VF4-6中,系统不报错,只是将实数取整送整型变量112/133Read(*,*) A, B, Cwrite(*,*) A,

46、B, C End输入:1.0,2.0,3.0输出:1.000000 2.000000 3.000000113/133114/133输入一部分后,键入回车,系统则继续等待的输入,直到所有变量获得输入值为止115/133强行结束输入116/133I=123J=456Print *,I,J,KEndImplicit NoneInteger I,JI=123J=456Print *,I,J,KEnd117/133K=0118/133参数语句参数语句119/133用一个名字来代替一个常量(符号常量)用一个名字来代替一个常量(符号常量)注注:PARAMETER PARAMETER 是非执行语句,放在所有执

47、行语句之前。是非执行语句,放在所有执行语句之前。但一般先写类型说明语句,后写参数语句。它不能作但一般先写类型说明语句,后写参数语句。它不能作为语句标号,也不能出现在为语句标号,也不能出现在FormatFormat语句中代替常数。语句中代替常数。 PARAMETER PARAMETER 的类型有:的类型有: 数值型、逻辑型、字符型数值型、逻辑型、字符型Parameter (PI=3.1415926).Read *, R S=PI*R*2. L=2.0*PI*Rnext在C中:#Define PI=3.1415926120/133integer A, Bparameter (AB=123.456)

48、 A=AB*2 B=AB-123print *,A, B, ABend也可以一次定义多个也可以一次定义多个:parameter (AB1=123.456,AB2=95.123)121/133ENDEND语句的作用:语句的作用:(1 1)结束本程序单位的运行;)结束本程序单位的运行;(2 2)作为程序的结束标志。)作为程序的结束标志。注:一个程序单位只有一个注:一个程序单位只有一个ENDEND语句;主程序语句;主程序 中的中的ENDEND就是返回到命令状态,子程序中就是返回到命令状态,子程序中 的的ENDEND就是返回主程序(返主)。就是返回主程序(返主)。STOPSTOP语句的作用语句的作用:

49、 : 停止程序的运行停止程序的运行( (一个程序单位可有多个一个程序单位可有多个STOPSTOP语句语句) ) stop n stop n 如:如: stop 1234 stop 1234 输出信息输出信息12341234 stop abc stop abc 输出信息输出信息abcabc 不超过不超过5 5个字符个字符(现在的编译系统做了修改,已经没有这个限制了现在的编译系统做了修改,已经没有这个限制了)122/133STOPSTOP语句的举例语句的举例: :!这是一个求平均数的程序这是一个求平均数的程序Print *,请输入三个数:请输入三个数:Read(*,*) x, y, zAver=(

50、x+y+z)/3.0Print *,x=, x, y=, y, z=, zPrint *,aver=, aver stop 程序正常终止!程序正常终止!End123/133124/133PAUSEPAUSE语句的作用:语句的作用:是暂时停止执行(不是结束运行),系是暂时停止执行(不是结束运行),系统暂时挂起来,等待操作员输入操作命统暂时挂起来,等待操作员输入操作命令,如设置令,如设置“断点断点”: PAUSE nPAUSE n其中其中n n为输出信息,与为输出信息,与STOP nSTOP n中的中的n n相同。相同。 恢复继续运行可使用恢复继续运行可使用ENTERENTER键。键。125/13

51、3integer A,Bb =0read *,ab=a+bprint *,a,bpause 001read *,ab=a+bprint *,a,bpause 002read *,ab=a+bprint *,a,bpause 003print *,程序结束!end注意:只有按任意键才能继续输入也可以:PAUSE “字符串”程序举例126/133v求三角形面积求三角形面积(Exa3_3.for)(Exa3_3.for)已知已知:A,B,CA,B,C为三角形的三条边为三角形的三条边; S S=(A+B+C)/=(A+B+C)/2 2 则三角形的面积是则三角形的面积是: S=S=(S(S-A)(S-B

52、)(S-C)S(S-A)(S-B)(S-C))的开平方的开平方v输入五个数,打印出绝对值最大的数输入五个数,打印出绝对值最大的数(Exa3_4.for)(Exa3_4.for)v计算人口增长情况计算人口增长情况(Exa3_5.for)(Exa3_5.for)v计算人口增长情况计算人口增长情况(Exa3_5a.for)(Exa3_5a.for)v计算计算: :速度与距离速度与距离(Exa3_6.for)(Exa3_6.for)127/133v求三角形面积已知:求三角形面积已知:A,B,CA,B,C为三角形的三条边;为三角形的三条边;S S=(A+B+C)/=(A+B+C)/2 2 则三角形的面积

53、是:则三角形的面积是:S=S=S(S-A)(S-B)(S-C)S(S-A)(S-B)(S-C)的开平方值的开平方值Program tra_area Program tra_area ! !注意程序的取名规则注意程序的取名规则Read(Read(* *, ,* *) a,b,c) a,b,cs=(a+b+c)/2.0s=(a+b+c)/2.0Area=sqrt(sArea=sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c)(s-c) ! !Area=(sArea=(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c)(s-c)* * *0.50.5

54、Write(Write(* *, ,* *)A=,a,B=,b,C)A=,a,B=,b,C=,c=,cWrite(Write(* *, ,* *)AREA=,area)AREA=,areaEndEnd128/133v输入五个数,打印出绝对值最大的数输入五个数,打印出绝对值最大的数program MAX_NUMBERRead(*,*) a,b,c,d,eLarge=max(abs(a),abs(b),abs(c),abs(d),abs(e)Write(*,*) 绝对值最大的数是:绝对值最大的数是:,largeEnd129/133v计算人口计算人口:1982:1982的人口数的人口数:10.3:1

55、0.3亿亿, ,年增长年增长1.5%,1.5%,求求20002000年年底人口数年年底人口数: :P=P0P=P0(1+R)(1+R)n n Program Program Population PopulationR=0.015R=0.015N=2000-1982N=2000-1982P0=10.3E08P0=10.3E08P1=P0P1=P0* *(1.0+R)(1.0+R)* * *N NWrite(Write(* *, ,* *) 2000) 2000年的人口数:年的人口数:,P1,P1EndEnd130/133v计算人口计算人口: :求任意年份之间、任意增长率求任意年份之间、任意增长

56、率的通用人口数增长计算程序的通用人口数增长计算程序: :P=P0(1+R)P=P0(1+R)n n Program PopulationInteger Year1,Year2Read (*,*) R,Year1,Year2,P0 N=Year1-Year2P1=P0*(1.0+R)*NWrite(*,*) Year1 ,年的人口数年的人口数:,P1End131/133v计算速度与距离计算速度与距离: :已知一火车以均匀速度已知一火车以均匀速度V V0 0 行驶行驶, ,从从t=10t=10开始加速开始加速运行运行, ,加速度为加速度为a,a,问经过问经过t=50t=50分钟后火车的速度和行驶的

57、距离分钟后火车的速度和行驶的距离: :速度速度V=V=V V0 0+at +at 距离距离S S= = V V0 0 t + 1/2t + 1/2 at at2 2 Program Program SandV SandVReadRead( (* *, ,* *) v0,a) v0,av0=v0v0=v0* *1000.0/(60.1000.0/(60.* *60.)60.)a=aa=a* *1000.0/3600.01000.0/3600.0* * *2 ! A=m/s2 ! A=m/s2 2t1=10.t1=10.* *60.60.t2=50.t2=50.* *60.60.t=t2-t1t=

58、t2-t1v=v0+av=v0+a* *t tv=int(vv=int(v* *100.0+0.5)/100.0100.0+0.5)/100.0s=v0s=v0* *t2+0.5t2+0.5* *a a* *t t* * *2 2s=int(ss=int(s* *100.0+0.5)/100.0100.0+0.5)/100.0WriteWrite( (* *, ,* *) v=,v,M) v=,v,M/SEC./SEC.WriteWrite( (* *, ,* *) S=,s,M) S=,s,M EndEndOver132/133本章内容是学习本章内容是学习FORTRAN语言最基本知语言最基本

59、知识和最基础的语法规则。识和最基础的语法规则。FORTRANFORTRAN语言源程序的书写格式;语言源程序的书写格式;FORTRANFORTRAN编译系统的使用;编译系统的使用;常量常量( (数据类型数据类型) );变量变量( (命名规则及类型命名规则及类型) );表达式表达式( (算术、关系、逻辑算术、关系、逻辑) );数据类型(说明符及在内存的表示);数据类型(说明符及在内存的表示);系统常用函数系统常用函数( (自变量和函数值类型自变量和函数值类型) );赋值语句赋值语句( (特别注意数据类型的转换特别注意数据类型的转换) );基本基本I/OI/O语句等语句等. .要求非常熟练!133/

60、133CHAPTERENDS第三章练习第三章练习:2、10、11、12题题134/133是相当数学化的语言是相当数学化的语言( (常用于常用于科学和工程科学和工程计算问题计算问题以及复数表示与计算等以及复数表示与计算等) );简单易学(相对而言)简单易学(相对而言); ;执行速度快执行速度快, ,代码高度优化代码高度优化; ;高版本的高版本的FORTRANFORTRAN还具有并行运算能力还具有并行运算能力; ;便于交流便于交流. .返回135/133基本公式是基本公式是: INT(X: INT(X* *A+0.5)/AA+0.5)/AA A为为1010小数点后保留小数点后保留1 1位位; ; A A为为100100小数点后保留小数点后保留2 2位位; ;A A为为10001000

温馨提示

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

评论

0/150

提交评论