FORTRAN语言第2章共8章.ppt

上传人:小飞机 文档编号:5431317 上传时间:2023-07-06 格式:PPT 页数:103 大小:2.69MB
返回 下载 相关 举报
FORTRAN语言第2章共8章.ppt_第1页
第1页 / 共103页
FORTRAN语言第2章共8章.ppt_第2页
第2页 / 共103页
FORTRAN语言第2章共8章.ppt_第3页
第3页 / 共103页
FORTRAN语言第2章共8章.ppt_第4页
第4页 / 共103页
FORTRAN语言第2章共8章.ppt_第5页
第5页 / 共103页
点击查看更多>>
资源描述

《FORTRAN语言第2章共8章.ppt》由会员分享,可在线阅读,更多相关《FORTRAN语言第2章共8章.ppt(103页珍藏版)》请在三一办公上搜索。

1、第一节 FORTRAN常量第二节 FORTRAN变量第三节 FORTRAN内部函数第四节算术表达式第五节赋值语句第六节表控输入/输出语句第七节END、PAUSE、STOP语句,第二讲 顺序结构程序设计,第一节 FORTRAN常量,Fortran的语言元素是指在程序设计中所用到的基本成分,例如字符集、常量、变量、记号以及其它的基本结构等。只有了解并掌握了这些基本要素,才可能正确自如地使用该种语言。,一、FORTRAN字符集,26个英文字母,(除了字符串内的字符外,程序中小写字母等价于相应的大写字母)数字09 _(下划线)22个特殊字符,空格=+-*/(),:.$!”%&;?,Fortran的源程

2、序就是上述字符及符号按照词法、语法和语义的规定对算法的描述。在编写源程序时需要注意的是:(1)除字符型常量外,源程序中不区分字母的大小写,如语句“ReaL a”和“real A”是等价的。(2)字符集以外的可打印字符,只能出现在注释、字符常量、字符串编辑符和输入输出记录中。,Fortran的字符集,二、FORTRAN标识符,第一节 FORTRAN常量,标识符即名称,是用来在程序中标识有关实体(如:变量、符号常量、函数、程序单元、公用块、数组、模块和形参等)。,Fortran 95规定:标识符只能由字母、数字、下划线和美元符号“$”组成,且起始字符必须是英语字母。,Fortran的关键字,关键字

3、是Fortran95中的一种特定字符串。如 read*,a,b read是关键字。类似的关键字有:print、write、program、integer、do、if、then、end、subroutine、function等。在编译环境中正确的关键字会以蓝色字符显示。关键字都有特定的含义,在程序中有具体的位置要求,不能随意改变,否则将产生一个语法错误。,Fortran对于关键字不予保留,即允许其关键字作为其他实体的名称。但是,不主张这样做,因为使用关键字作为实体名称会到导致程序难以理解和阅读。例如:用户可以将自己的变量名、数组名等命名为read、print、end、integer、progra

4、m、print、do等关键字,编译程序会根据上下文来识别一个字符串究竟是关键字还是实体名称。,一个程序中,数据是程序加工处理的对象,而通过语句描述了对数据的具体操作。,不同类型的数据具有不同的特性,在计算机内存中占有不同的存储长度,存储的方式不同,具有不同类型的运算。,数据类型只是数据的形式化和抽象化描述,它说明一类数据的共同性质,而不是具体的数据对象。程序处理的数据必须是具体的数据对象,一个数据对象可以是常量、变量、数组或指针等,用户根据具体问题的需要定义数据对象的数据类型。,三、FORTRAN常量,常量定义:常量是在程序中直接生成并直接用于计算和处理,且在程序运行期间保持不变的数据。,第一

5、节 FORTRAN常量,例如:15、0、-21、.1416、256_2、(10.2,0.3)、fortran、”student”、.true.,常量无需类型定义、直接由其表示形式可确定其数据类型。Fortran常量包括整型、实型、复型、字符型和逻辑型五种内部类型常量和一种特殊的常量符号常量,下面分别介绍它们的表示方法及其注意事项。,三、FORTRAN常量1、整型常量,整型常量由09的一系列数字组成,包括正数、负数和0。如125,258,28等。注意:(1)Fortran95不允许整数内部出现非数值字符 如“,”、“:”和空格;(F77中整数的空格被忽略,而F90及以上版本整数加入空格将产生错误

6、)(2)整型常量不能有小数点;(3)正负号和数字之间可以保留空格。,第一节 FORTRAN常量,三、FORTRAN常量1、整型常量,整型数据:微机支持4种kind_Value:1,2,4,8(1)范围:-128127(2)范围:-3276832767(3)-21474836482147483647(-231231-1)(4)-92233720368547758089223372036854775807 Integer F77默认kind_Value的值为2,第一节 FORTRAN常量,三、FORTRAN常量2、实型常量 实型常量又叫实数,有两种表示形式:小数形式和指数形式 十进制小数形式:由整

7、数部分、小数点及小数部分三部分组成,必须包含小数点。,第一节 FORTRAN常量,例如:+12.5、-13.248、0.243、12.和.123 十进制小数有 3种不同表达形式:n.m n.m,n代表整数部分,m代表小数部分,不允许出现非数值字符(如逗号、顿号和空格等)。,三、FORTRAN常量2、实型常量 指数形式:用来表示一个绝对值非常大或非常小的数。,第一节 FORTRAN常量,指数形式的实数三部分组成:有效数字、E(或e)和指数。例如:+0.125E+2、-132.48e-1、243E-3、.12e+2,1.2e+1 1.32e5表示132000或1.32105。1.285E-12表示

8、1.28510-12。,指数形式的实数有下列四种表达方式:n.mES n.ES nES.mES,n代表有效数字的整数部分,m代表有效数字的小数部分,最前面的正负号表示数值的正负。字符E后面是指数部分,正负号确定指数的正负,指数必须是十进制整数,表示10的多少次方。字符E前后均不能为空。有效数字部分和指数部分的数字遵循整数和小数形式实数的要求。若指数标识为D或d,则表示该实数为双精度实数。,第一节 FORTRAN常量,指数形式应注意以下事情:有效数字可以是整型或实型常量,如1E2和1.0E2两者都表示100.0,它们等价,但它们与100是不等价的,因为100代表一个整型常量;E前面的数据不能省略

9、,E后面的指数只能是整型常量,如5E3.2,E4.,.E8都是错误的指数表示。若指数标识为D或d,则表示该实数为双精度实数,等价于kind值为8,但不能指定kind值,即d指数不允许指定实型kind值。,【例】判定下列实数,哪些是合法实数?哪些是非法实数?说明原因。1,234,567E-6.123E-1 12.3E$3¥125.5E001E+5-2.34E24.5 6E21.35E+3 11.24E+312.5D34,合法实数有:0E0、0.E0、.123E-1、-2.34E2、1.35E+3、12.5D34。非法实数有:(指数部分不能为实数)9.8E3_3(非法的实型KIND值)1,234,

10、567E-6(不能含非数值字符)12.3E$3(不能含非数值字符)¥125.5E001(不能含非数值字符)E+5(E 前面不能为空)4.5 6E2(不能含非数值字符空格)11.24E+3(指数部分的正负号与数字之间不能有空格),在计算机输出数据时,只能按照一种标准的指数形式进行输出。不同的计算机系统采用不同的标准化指数形式,常用的标准化形式有二种。,1.数字部分的绝对值小于1(即小数点前面的数字必须为0),且小数点后第一个数字必须为一个非0的数字。例如,0.1234E4、0.56E-3是标准化指数形式。对于不符合标准化条件的实数,可以通过改变指数部分的数值使其转变为标准化指数形式。例如实数0.

11、0001234的标准化指数形式是0.1234E-3。2.数字部分的绝对值小于10且大于1(即小数点前只能有且只有一个非0数字)。例如,1.234E3、5.6E-4是标准化指数形式。对于不符合标准化条件的实数,可以通过增大或减小指数部分的值使其转变为标准化指数形式。例如实数0.0001234的标准化指数形式是1.234E-5。,三、FORTRAN常量3、复型常量,复型常量是采用圆括号将两个以逗号分割的实数或整数括起来表示的。其中第一个实数或整数表示复数中的实部,第二个实数或整数表示复数中的虚部。(实数1,实数2)实数1+实数2i(1.25,0.4)1.25+0.4ii(1.0_4,4.2_8)1

12、.0_8+4.2_8i(1,4)1.0+4.0i,转换原则是:遇整变实,向高看齐,在Fortran语言中,复型常量的实部和虚部的数据类型被自动识别为实型。当复数实部和虚部的数据类型不一致,或它们的kind值不同时,编译系统会自动将其转换。,三、FORTRAN常量4、字符常量,字符型常量又叫字符串,它是用单引号或双引号括起来的字符序列。例如,“a”、“123”、“Im a student.”、China、我是中国人!字符型常量中的字符可以是计算机系统中允许使用的任何字符。在字符串内大小写字母均可使用,但它们是不同的字符。单引号和双引号只起定界作用,它们不是字符串的组成部分。,字符串本身中含有单引

13、号或双引号的处理:,例如要将Im a student作为一个字符串来处理,为了区分是字符串中的字符还是定界符,可采用两种方式表示:1.交替使用法,I m a student He said:I am feeling well.2.重复使用法,Im a student He said:Im feeling well.,字符串内字符的个数称为字符串的长度。长度为0的字符串称为空串。在字符串内部的空格是有效字符,并占有一个字符的位置。例如,ABC 和A B C 是两个不同的字符串。前者字符串的长度为3,后者为5。字符串中的一个西文字符占据一个字节的存储空间,一个汉字(含汉语标点符号)占据2个字节的存

14、储空间,且按两个西文字符计算长度,如字符串中国的长度是4。,字符通常是以其ASCII代码的二进制存储在内存中的。,Fortran90支持C字符串,所谓C字符串就是C语言中的字符串。C字符串中允许出现非打印字符(控制字符),如回车符、换行符、退格符等等。C字符串中使用特殊字符“”后 跟非打印字符的ASCII码或标志符来表示非打印字符。Fortran90中,如果一个字符串的后面紧接一个字符C,那么这个字符串就是C字符串。例如,中国NC CHINAC.通过C字符串可表示任何可输出的字母字符、专用字符、图形字符和控制字符。,一个字符常量需要写成多行源程序时,有一条特殊的规则:不仅每一续行都不能尾随注释

15、,而且每一续行必须以续行标识符(&)作为开头,任何尾随&号之后或者前导&号之前的空格都不是字符常数的组成部分,&号本身不是常数的组成部分。其它的字符包括空格都是字符常数的有效组成部分。,三、FORTRAN常量5、逻辑常量,逻辑常量只有真和假两种值:.true.false.。需要注意的是:逻辑值两边的小数点“.”必须有;逻辑值中字母不区分大小写。,三、FORTRAN常量,6、符号常量,符号常量是用一个标识符来代表一个常量。符号常量常用PARAMETER语句来定义。例如:PARAMETER(PI3.1415926,g9.81)该语句定义了两个符号常用PI和g,在该程序单位内,PI代表3.14159

16、26,g代表9.81。,parameter为特有的常量定义标识,要定义的项必须放在()内,如果有多项,每项之间要用逗号隔开。,Parameter 语句位置:位于所有可执行语句之前。符号常量的定名规则与定变量名相同。名字本身隐含类型,也遵循IN规则。可以用类型说明语句定义符号常量的类型。例:INTEGERPPARAMETER(P5),注意:先写类型说明语句,后写参数语句在一个参数语句中可以定义多个符号常量。,注意,符号常量与变量有着本质的区别:PARAMETER语句是非执行语句,必须放在可执行语句的前面。在编译源程序时,编译程序将程序中的符号常量名全部替换成所对应的常量。变量对应于一个存储单元,

17、程序执行时,可将表达式的值存放到变量所对应的存储单元中(即给变量赋值)或从变量所对应的存储单元中取出相应的值。所以,符号常量不能当变量使用。符号常量也可以在需要改变一个常量的值时做到“一改全改”。,【例】符号常量的使用示例。parameter(g=9.80655)t=10 v=g*t print*,v End 该语句定义了符号常量g,在该语句所在的程序单元内,g都代表9.80655,和常量一样进行运算。,一、变量的概念,第二节 FORTRAN变量,变量是程序运行期间其值发生改变的数据,是程序主要处理的对象。变量用变量名(标识符)表示,它代表了某个存储空间及所存储的数值。,在Fortran中经常

18、可以如下语句:n=n+1该语句理解为:“空间n里的数据增加1”。,+1,6,5,1)FORTRAN变量名不区分字母的大小写,如grade、GRADE、Grade所表示的是同一个标识符。2)变量名的长度因FORTRAN版本不同而有差异。3)变量名要尽量做到“见名知义”。4)FORTRAN没有规定的“保留字”,因此FORTRAN中具有特定意义的语句名、函数名可以用作变量名。但为避免误解,在实际中要尽量避免使用这些有一定意义的符号名作为变量名。,二、变量名,三、变量的说明,在使用变量之前,必须用相关标识符(关键字)说明变量的数据类型,使编译器能够依照数据类型给每个变量分配存储单元,用于存放变量的值。

19、说明语句是非执行语句,要放在程序单元的头部。实行“先定义,后使用”。,三、变量的说明,FORTRAN中变量类型的定义有三种方式:1.使用类型说明语句说明(强制说明)一般格式为:类型说明符:变量名,变量名 注意:符号“:”,在变量定义语句中可有可无。若有可对变量赋初值,否则不能赋初值,赋值则会出错。,integer 整型说明符real 实型说明符double precision双精度型说明符complex 复型说明logical 逻辑型说明character 字符型说明,类型说明符为:,例如:integer x,y,z!定义x、y和z是整型变量。integer(2):a=1,b Integer*

20、2:a=1,b!定义a、b是短整型变量,对变量a赋初值1,缺省值为4real i!定义i是单精度实型变量real*8 J 或real(8)J!定义J是双精度实型变量,complex:s=(1.5,8.9)!定义s是单精度复型变量,并对其赋初值(1.5,8.9)character name!定义name是字符型变量Character*6 name1 Character(6)name1,name2*8,name4Character(len=6)name3,字符型说明语句用于说明字符型变量。其一般形式为,CHARACTER n 变量名表,其中n为正整数。在变量名表中的各变量名之间要用逗号分隔。,字符

21、型变量用于存放字符型常量(即字符串)。由于字符串的长度是各不相同的,因此,在说明字符型变量时,同时要说明其长度。,例如:说明语句,CHARACTER 6A,B,C,说明了变量A、B、C为字符型变量,且每个变量中最多可以存放 6 个字符。这是一种统一指定各字符变量长度的方法。,在 FORTRAN中还允许用一个说明语句来定义不同长度的字符型变量。,CHARACTER A 6,B 10,C 3,这个说明语句说明了3 个字符型变量,其中A 的长度为6(即最多可以存放6 个字符,下同),B的长度为10,C的长度为3。这是一种个别指定各字符变量长度的方法。这个说明语句分别与下列三个说明语句是等价的:,CH

22、ARACTER 6 A,B 10,C 3,CHARACTER 10 A 6,B,C 3,CHARACTER 3 A 6,B 10,C,这表明,当统一指定的长度与个别指定的长度不一致时,遵循“个别指定”优先于“统一指定”的原则。,如果在CHARACTER 说明语句中对各字符型变量既没有统一指定长度,也没有个别指定长度,则默认长度为1,即一个字符型变量只能存放一个字符。,例如,说明语句CHARACTER A,B,C,说明了三个字符型变量 A、B、C,它们的长度均为1。,2.隐含说明语句implicit,implicit说明语句可以将某个或某些字母开头的变量规定为所需的类型,一般格式为:implic

23、it 类型说明符(变量名起始字符1,变量名起始字符2,)implicit 类型说明符(变量名起始字符1-变量名起始字符2)例如:implicit integer(a,c,t-v),real(e,k)该语句的含义是将以a和c及t到v开头的变量规定为整型,以e和k开头的变量规定为实型。,必须注意,IN规则只适用于整型变量和实型变量,而对于其它类型的变量是不适用的。implicit none 可以取消I-N规则。,3.隐含约定,Fortran语言规定,凡以i,j,k,l,m,n 6个字母开头的变量被默认为整型变量,以其他字母开头的变量被默认为实型变量。该规则又称为IN规则。例如:在没有前面两种说明的

24、情况下,i1,ma,n3s等都为整型变量。,(1)在以上三种变量说明方式中,第一类优先级最高,第二类次之,隐含约定最低。也就是说,当一个变量被强制定义为某种类型时,implicit语句和隐含约定将不再起作用。在implicit语句后可以使用类型定义语句重新说明已隐含定义的变量类型,反之则不允许。,说明:,例如有如下连续说明语句:implicit integer(a-d)!合法 implicit real(c-f)!非法,以字母c和d开头的 变量已被隐含定义为整型变量。integer c,d!合法,类型定义语句比 implicit语句优先。implicit logical(c)!非法,以字母c开

25、头的变量 已被定义为整型变量。,(3)IN规则具有一定的副作用,如隐含说明与强制说明一同使用时,变量类型不清晰,因此一般不提倡使用,可以通过在程序变量说明之前加入:implicit none语句来取消IN规则。,(2)在一个程序中,一个字母不能同时出现在两个或两个以上的implicit语句中。,(4)变量类型说明语句都为非执行语句,应把它们放在所有可执行语句之前,其中implicit语句要放在类型说明定义语句之前。,(5)类型说明只在所在程序单元中有效。,(6)需要特别指出的是,对于字符型变量的说明通常采用的格式为:character(len=n)变量表 格式中的len=n 代表被说明变量的长

26、度,len=常省略。例如:character(20)name!定义了一个长度为20的字符型变量name。当n=1时,字符型变量的定义格式可简化为:character 变量表例如:character a(10)!定义了一个包含10个字符型元素的数组,并且每个数组元素的长度都为1。字符型数据定义时还可以单独指定变量表中某个变量的长度,遇到这种情况时,遵循的原则是“个别优于一般”。例如:character(8)a*10,b,c*13!定义了三个字符型变量,根据上面的原则可知a的长度为10,b的长度为8,c的长度为13。,变量 的初始化,通常一个变量是先定义,再赋值。例如:integer aa=20

27、可以在定义变量时对其赋初值,即初始化。integer:a=10,初始化时,双冒号不能省略,在FORTRAN程序中可以通过DATA语句给变量或数组赋初值。其一般形式如下:,用data语句初始化,DATA 变量表/初值表/,变量表/初值表/,例如:integer a,b,c data a,b,c/1,2,3/data i,j,k/3*5/,说明:1)data可以给多个变量同时赋初值,中间用逗号隔开;2)被赋值的常量一定要放在一对“/”之中。3)被赋值的常量与对应的变量数据类型要一致。4)被赋值的常量中还可以使用“*”来表示数据的重复。,第三节 FORTRAN内部函数,函数在科学计算领域有广泛的使用

28、,数学等学科为我们提供了大量的函数,如:三角函数、对数函数、双曲函数、字符串处理函数等等。计算机语言中提到的函数是对数学等学科中函数的计算机实现,它实际上是具有独立功能的程序模块。,Fortran语言是以科学计算为特长的计算机语言,它为用户提供了丰富的内部函数库(标准函数库)。它将三角函数、平方根函数、指数及对数函数等一些专门用于计算的函数分别编成一个个子程序,放在程序库中供调用,这些子程序就称为内部函数或标准函数。用户在使用时,只要写出相应的函数名和该函数所要求的自变量(变元、参数)即可。例如:求2的平方根 SQRT(2.0),函 数,意 义,LOG(X),LOG10(X),INT(X),M

29、OD(X1,X2),SIGN(X1,X2),REAL(X),MAX(X1,X2,),MIN(X1,X2,),SQRT(X),求自然对数 ln(x),求常用对数 log10(x),取 x 的整数部分,转换为实型,求x1,x2,中的最大者,求x1除以x2的余数,即求x1 int(x1/x2)x2,若x20,则|x1|;若x20,则|x1|,求x1,x2,中的最小者,常用的算术型标准函数,第三节 FORTRAN内部函数,说明:(1)fortran内部函数,也称为库函数。在程序中可直接调用这些函数,在完成程序的编译后,通过连接,即将一组二进制指令代入该函数出现的地方,与编译好的目标程序一起形成可执行程

30、序。(2)一个内部函数要求一个或多个自变量。如sin(x)自变量仅一个。mod(m,n)自变量为两个:m、n。而象求最大值、最小值max,min等函数,自变量就可以有多个。(3)函数的自变量是有类型的,函数的值也是有类型的,如求余函数mod(m,n),自变量与函数值,要求同为整型或实型。而sin(x)等,自变量与函数值都是实型,否则,如果用整型自变量将产生语法错误,函数值用整型变量存储将丢失小数部分的数据,导致结果错误。,(4)所有函数必须遵守原有数学规则,如负数不能开方,不能对负数求对数,实数不能求余等,违反规则程序将产生错误。(5)所有函数名字的后面都必须带有括号(),否则将产生错误。如c

31、os(x)不能写成cosx,因为后者Fortran语言将把它当作一个标识符,而非调用一个函数。(6)三角函数参数单位是弧度,因此要特别注意,如果是普通的度数,必须先转化为弧度才能使用对应的函数。(7)要注意Fortan语言中函数名与数学中函数名的差异,如Fortran语言中log(x),相当于数学的自然对数,即lnx。,内部函数的使用:,使用内部函数要注意以下几点:(1)每个内部函数都要求一个或几个自变量,使用时必须与其要求相匹配。如平方根函数、三角函数等只能有一个自变量,MOD和SIGN函数需要两个自变量,MAX和MIN函数需要两个或两个以上。同时自变量用括号括起来,如代数表达式“sinx+

32、cosy”,用FORTRAN表示,必须写成“SIN(x)+COS(x)”,不加括号就是错误的。(2)某些内部函数对自变量的顺序也有要求,在使用中,自变量顺序改变时,函数的值就不同。如MOD和SIGN函数(见前面的例子),而MAX合MIN函数对自变量的顺序没有任何要求。,下面看一些函数运用的具体例子:,(1)求三个数x、y、z中的最大值可以表示为:max(x,y,z);(2)判断一个自然数m是否为另外一个自然数n的因数,通过mod(n,m)是否为0可以判断,如果为0,则说明m是n的因数,否则说明n不能被m整除。mod(m,n)=0,使用内部函数要注意以下几点:(4)内部函数的自变量可以是常量、变

33、量或表达式。如SIN(2.0),SIN(2.0*4.5),SIN(x+y)(x,y为实型变量)均是正确的。(5)三角函数的角度单位是“弧度”,而不是“度”,在编程时要注意先将角度转换为弧度再作为自变量使用。,第四节 FORTRAN算术表达式,运算符是对相同类型的数据进行运算操作的符号。将常量、变量、函数用运算符连接起来的式子称为表达式。表达式的类型由运算符的类型决定,每个表达式按照规定的运算规则产生一个唯一的值。,根据运算符的不同,表达式分为:算术表达式 字符表达式 关系表达式 逻辑表达式,第四节 FORTRAN算术表达式,一、算术运算符号与其优先级别,提供5中算术运算,运算符依次为:+、-、

34、*、/、*,加、减、乘、除、乘方运算例如:2*3表示23,m*n表示mn。算术运算符的运算优先级为:乘方,乘、除,加、减,+、-、*、/同级运算从左到右依次运算,乘方同级运算从右到左,第四节 FORTRAN算术表达式,二、算术表达式,算术表达式是由算术运算符将数值型常量、变量和返回数值型数据的函数等连接起来的式子,其结果是数值型数据。例如:3+2*5/4-5.5*4*2 sin(a+1)*2)/(n*2+1),三、算术表达式中类型转化,第四节 FORTRAN算术表达式,同类型的操作数运算,保持原类型,不同类型的运算,先将低级类型,然后按同类型量运算。,整型实型双精度型复型,低,高,高级类型,类

35、型的转换是按表达式的运算顺序进行的,例:1/2 值为0,3.6*1/2-1.2 值为0.6,1/2*3.6-1.2 值为-1.2,数据类型的转换是从左到右进行的,在遇到不同类型的数据时才开始转换。,第四节 FORTRAN算术表达式,算术表达式注意事项说明:(1)表达式中常量的表示、变量的命名以及函数的引用要符合Fortran语言的规定。,(2)Fortran表达式只能在行上从左到右书写,即所有字符都必须写在一行,Fortran表达式中没有带有下标的变量、分式等。例如:写成:x1/y1+x2/y2。,(3)算术表达式中的乘号不能省略。,例如,要将数学表达式3sin(x)写成FORTRAN表达式时

36、,应写成3SIN(X),而不能写成3SIN(X),当然更不能写成3SINX或3SINX。,(4)Fortran表达式只允许用小括号,不能使用大、中括号。根据需要用括号表明运算顺序。例如数学表达式:应写成:(a+b)*2+(a-b)*2)*3+c)+8。,(5)两个整数相除的结果一定也为整数,小数部分自动舍去。当分子小于分母时结果一律为0。例如:3/2!结果为1,而不是1.333333。3/4*4!结果为0,而不是3。(6)在进行实型数运算时,要注意误差问题。,例:1、2、,答案:1、2.0*SIN(3.14/4)/3.0 2、(Sin(4.0)+cos(10*3.14/180)*exp(2.5

37、)/(Sqrt(2.0)+abs(a*x)+log(3.0*5),第四节 FORTRAN算术表达式,不同类型数据的混合运算,FORTRAN算术表达式允许不同数值类型的量进行混合运算。当一个实型量与一个整型量进行算术运算时,系统将自动把整型量转换成实型量后再进行运算。但必须注意,在作不同类型数据的混合运算时,其类型的转换是在运算过程中逐步进行的,只有在作某种具体的运算而又遇到两个运算对象的类型不一致时才进行转换,并不是将整个式中的不同类型量全部转换成同一类型后再作表达式的计算。,例如,设所有变量的类型按隐含规则确定,且A=1.0,B=3.5,I=5,K=5,求表达式,(K+1)/5+I A B,

38、的值。,在这个例子中,A与B为实型变量,I与K为整型变量。首先计算K+1,这是整型运算,结果是6;作6/5的运算,这也是整型运算,结果为1;取相反数,结果为 1。然后作运算I A,这是不同类型的两个数值型量作乘法运算,先将I的值5.0后再与A的值1.0相乘,结果为5.0。再将前面得到的结果1与5.0相加,先作类型转换,1转换成1.0,与5.0相加后得6.0。最后减去B的值3.5后得结果9.5。,由这个例子可以看出,在写FORTRAN表达式时,要注意各运算量的类型,特别是在表达式中有除法运算时,应使得作除法运算的两个运算量的类型正确,否则会由于整型相除产生错误结果。,又例如,为了计算并输出级数,

39、的值,编制了如下的FORTRAN程序:,S=0.0DO 10 N=1,100S=S+1/NWRITE(,)S=,SEND,这个程序没有任何语法错误,但当这个程序输入到计算机后,经过编译和连接,最后运行的结果为 S=1.0。显然,这个结果是错的。问题出在什么地方呢?问题出在标号为10的这个语句中,在赋值号(=)右边的算术表达式中,根据运算顺序,首先计算1/N,但当N1时,由于 1和N均为整型量,其运算结果总是为0,因为这是一个整型除法,只有当N=1时,其和不为0而等于1。因此,最后累加到实型变量S中的值只有1.0。解决这个问题的措施是只需在表达式中将1/N改成1.0/N。,类似于上例中的错误在编

40、程时是很容易发生的。例如,,等都是错误的。,第五节 赋值语句,赋值是一种非常重要的概念,是最基本的语句。一般格式为:变量名=表达式 作用是:将一个确定的值(右边表达式的值即常量)赋给左边变量,即将表达式的值存放到变量所对应的存储单元。例如:pi=3.1416 x=x1+x2*x3+5 i=i+1,第五节 赋值语句,赋值语句使用说明:(1)赋值语句的功能是先计算右边表达式的值,而后将此结果赋给左边的变量。对变量的赋值过程是“覆盖”过程,指的是在变量对应的存贮单元中用新的值去替换原有的值。例如:n=n十1,(2)赋值号“=”是语句符号,执行赋值操作,不是运算符,不是去判断赋值号两端相等。(3)赋值

41、语句不能连等,赋值语句只允许出现一个赋值号,不允许有两个赋值号。例如a=b=3在数学上是合法的,但是非法的Fortran赋值语句。,(4)“=”两边数据类型不相同时,先对右边表达式进行计算,然后将计算结果的数据类型转换为赋值号左边变量的数据类型进行赋值。(先计算,再类型转换,最后赋值)例如:integer m,nreal x,ym=5/2 n=5.0/2x=5/2y=5.0/2,m=2n=2x=2.0y=2.5,在编写程序时,应尽可能使贼值号两侧保持同类型。,输入输出是计算机内存与外部设备交换数据的过程。要顺利地传递数据,一般应在输入输出语句中给计算机语提供三方面的信息:(1)通过什么设备进行

42、输入输出;(2)采用什么样的格式进行输入输出;(3)输入、输出的内容。,第六节 表控输入语句,FORTRAN提供了三种类型的输入输出格式:(1)表控格式输入、输出:它是FORTRAN输入、输出中最简单的一种方式,是按系统隐含的标准格式输入输出。(2)有格式输入、输出:它是按用户规定的数据格式输入、输出。故也称可控格式(或有格式)的输入、输出。(3)无格式的输入、输出:它是以二进制形式输入和输出数据,只适用于计算机内存与磁盘、磁带等之间的数据交换。,第六节 表控输入语句,一、一般形式 简单的输入语句:Read*,变量名表 Read(*,*)变量名表,表控格式、自由格式,键盘 表控格式,表控输入输

43、出是一种不需要指定格式的输入输出,在前面示例中出现的READ*,READ(*,*)和PRINT*,WRITE(*,*)语句就是表控输入输出语句,下面我们分别详细地介绍该类语句。,二、功能执行时,暂停,等待用户从键盘输入数据,分别赋给各变量,赋值顺序自左向右。,第六节 表控输入语句,例:READ*,a,b,m,n如果a,b为实型,m,n为整型,可以从键盘输入以下数据:3.7,-1.8,24,10(数据间用逗号分隔)或3.7-1.8 24 10(数据间用空格分隔)则a=3.7,b=-1.8,m=24,n=10。,第六节 表控输入语句,在使用表控输入语句时应注意以下几点:(1)应保证从输入设备上输入

44、数据的个数与READ语句输入表中变量的个数相同,各数据类型与相应变量的类型一致。(2)输入数据可分为多行输入,直到输入全部数据。如下例READ语句可以分两行数据输入,还可分更多的行进行数据输入。,3,10,7.5,-15.8,3,10 7.5,-15.8,3 10 7.5,-15.8,READ(*,*)i,j,a,b,第六节 表控输入语句,在使用表控输入语句时应注意以下几点:(3)输入数据个数要求不少于输入表中变量个数。如果少于变量个数,则程序将等待用户输入后续数据。如果多于变量个数,则多余的数据不起作用。,3,10,7.5,-15.8,30,70.6,后2个数是无效的,将被忽略。READ语句

45、读取前4个数后,程序将继续执行下一条语句。,例如:上述READ语句执行时输入以下数据:,第六节 表控输入语句,在使用表控输入语句时应注意以下几点:(4)使用多个READ语句时,每个READ语句都是从一个新的输入行开始读数的。,READ(*,*)i,j READ(*,*)a,b输入 3,10,7.5,-15.8,第一个READ语句读入前两个数,即i=3,j=10,而第二个READ语句并不会从这一输入行剩余的数据中读数,所以a,b未被赋值。想要正确赋值,应改为两个输入行:,3,107.5,-15.8,READ(*,*)i,j,a,b输入 3,10/7.5,-15.8,i=3 a值不变0j=10 b

46、值不变0,第六节 表控输入语句,在使用表控输入语句时应注意以下几点:(5)如果在输入数据行中出现“”号,表示对READ语句的输入到此结束,未被赋值的变量保持原值不变。,(6)如果READ语句中有几个连续的变量要赋以相同的值,则可用重复因子r,r表示某一数据重复出现的次数。例如:READ*,i,j,k,a,b,c,d,str1,str2执行时输入以下数据:3*12,4*125.45,2*student 将12赋予i,j,k,将125.45赋予a,b,c,d,将“student”赋予str1和str2。,第六节 表控输入语句,(7)在一个数之间不能插入空格。因为空格也是两个数据间的分隔符。例如:m

47、=123,n=456,输入语句为:READ*,m,n如果输入数据为:123,456 键入数据时不小心输入了一个空格,则执行结果为m=1,n=23,显然不是想要的数据。(8)当变量为整型,而输入的数据为实型时,按出错处理。若变量为实型,而输入数据为整型,则系统自动将输入数据转换为实型再赋值给实型变量。例如:READ*,a,b输入:12,34执行结果为a=12.0,b=34.0。,一、含义:表控输出是最简单的格式输出。其输出格式不必用户自己说明,而是由系统作了隐含的规定,故也称为固定格式输出。FORTRAN提供了两种形式的表控输出语句:PRINT输出语句和WRITE输出语句。二、写法:WRITE(

48、*,*)输出表 PRINT*,输出表,表控格式,三、功能:WRITE语句中第一个星号“*”表示在系统隐含指定的设备上输出;WRITE语句中的第二个星号“*”表示“表控格式输出”;输出项可以有多个,每个输出项之间用逗号“,”分隔;当语句中没有输出项时,命令将输出一个空白行。,第七节 表控输出语句,变量名,表达式或常量,四、表控输出的特点:系统自动地分别为每一个不同类型的数据规定所占的列数和表数形式。2.系统为每个整数分配1013列,数据打印在这些列的右端。当要输出的数据位数不够时,左端以空格补齐。,第七节 表控输出语句,四、表控输出的特点:,3.一个实数分配给1518列,其中小数部分67列。如果

49、实数的值很大,以上格式无法容纳,则系统会自动改成用标准化的指数形式输出。,第七节 表控输出语句,4.对一个用指数形式输出的实数分配给15列,其中指数部分4 5列,小数部分6列。,6.一条print或write语句可同时输出多个整数和实数。当在一行内打印不下时,会自动换行再打印,直到把全部需输出的数据打印完为止。,5.如果实数的整数部分位数多于系统规定的有效位数(例如IBMPC为7位),或实数的数值小于1,则在输出时会自动转换成规范化的指数形式输出。如123106和0.132的输出为,,四、表控输出的特点:,第七节 表控输出语句,第七节 表控输出语句,7.如果print或write语句中无任何输

50、出项,它将输出一个空白行。,表控输出结果因不同计算机而异!,PRINT*,或 WRITE(*,*),四、表控输出的特点:,例 分析下列程序的结果implicit noneinteger m,nread*,m,n,n,mm=m+nn=m+nprint*,m,nend当输入78 9 10时输出结果为?,19 28,例:输入三个实数,输出最大值和最小值read*,x1,x2,x3maxnum=max(x1,x2,x3)minum=min(x1,x2,x3)print*,最大的数是,maxnumwrite(*,*)最小的数是“,minumend从键盘输入 2.8,9.6,4.3输出结果为:最大的数是9

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号