第二章Fortran语言基础_第1页
第二章Fortran语言基础_第2页
第二章Fortran语言基础_第3页
第二章Fortran语言基础_第4页
第二章Fortran语言基础_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

第2章FORTRAN语言基础,字符集与保留字基本数据类型常量与变量运算符与表达式及语句输入输出,源程序:programmain!exampleimplicitnonerealt6,t7,t8,tavet6=22.7t7=25.8t8=27.2tave=(t6+t7+t8)/3.0print*,tave=,taveend,变量申明,语句,保留字,运算式,注释行,1.字符集FORTRAN规定允许使用的字符为:,2.1字符集与保留字,注意:在FORTRAN语句中不区分大小写字母,如REAL何real或Real是一样的。,2.保留字保留字(也称关键字)是FORTRAN90/95中具有特定意义的字符串。如:语句关键字、内部函数名,(1)语句关键字如语句“IF(ATHEN”中的“IF”和“THEN”是语句保留字。类似的保留字有:PROGRAM、INTEGER、REAL、READ、PRINT、WRITE、DO、END、SUBROUTINE、FUNCTION等。(详见P445),(2)内部函数名如“ABS”、“SIN”、“LOG”等(详见P456-459),注意:FORTRAN90/95允许保留字作为其他实体的名称(变量名、数组名、函数名、程序名等)如:语句“PROGRAMPROGRAM”中第一个“PROGRAM”将被编译程序识别为保留字,第二个“PROGRAM”将被识别为实体名称(主程序单元名)。,1.FORTRAN提供的数据类型,不同类型数据有不同的特性,其处理的方式有所不同,取值范围也不一样,在处理数据前,必须说明数据的特性。,2.2基本数据类型,2.数据类型有四个性质:(1)每个数据类型有一个唯一的名称。(2)每个数据类型规定了一个取值范围(值的集合)(3)每个数据类型规定了其常量数据的表示方法(4)每个数据类型规定了一组操作,在程序运行过程中,其值不能被改变的量称为常量,它在程序中直接生成并直接用于计算和处理。整型常量、实型常量、复型常量、字符型常量、逻辑型常量,2.3常量,1.数值型常量及其类型(1)整型常量整型常量又称为整型常数或整数,包括正数、负数和0。例如:+5-367098,(2)实型常量实型常量即实型常数或简称为实数。它有两种形式:小数形式:12.3-3.5100.56指数形式:5.35E5表示5.35105,2.66E-3表示2.6610-3,当单精度实数不足以表示一个数的大小或精度时,可以用双精度实数表示,只是将实数指数部分中的字母E改成字母D即可。例如,6.85746304857D5,.3875479654765D+3等都是双精度实数。,(3)复型常量复型常量即复型常数或简称为复数。如:(1.0,1.0)表示复数1.0+1.0i,(2.1,-4.5)表示复数2.1-4.5i,(-6.0,0)表示复数-6.0。,2.字符型常量一对单引号(撇号)或双引号括起来的若干个非空字符串为字符型常量,又称为字符或字符串。如:a,A,x+y,#$%注意:字符串内字母区分大小写,a和A是不同的字符常量。,(1)字符串中含有撇号如:Imaboy.“Imaboy.”(2)字符串长度(字符串中的空格是有意义)如Imaboy.的长度为10为空串而则为长度为1,3.逻辑型常量逻辑常量仅有两个,.TRUE.和.FALSE.注意:对于逻辑值.TRUE.,在其存储单元字节内每位为“1”,可视为整数值-1,对于逻辑值.FALSE.,在其存储单元字节内每位为“0”,可视为整数值0,它们均能参与整数运算。如:7+.FALSE.,结果仍为7。1+.TRUE.,结果则为0,4.符号常量如:圆周率、重力加速度g等数据。,1、变量的定义变量是指在程序运行期间其值是可以变化的量,系统为程序中的每一个变量开辟一个存储单元,用来存放变量的值。2、变量的命名FORTRAN中规定须以字母开头,后可接多达30个字母、数字或下划线。,2.4变量,下面列出的是合法的标识符,可以作为变量名:Sum,average,student_name,BASIC下面是不合法的标识符和变量名:_total,M.D.John,H1N1,integer,3、变量的类型变量也相应的分为五种类型:(1)整型变量(2)实型变量(3)复型变量(4)字符型变量(5)逻辑型变量,数值型变量,字符型变量,逻辑型变量,下面为合法声明整型变量语句:INTEGER(KIND=2)a,b,c,d!声明KIND值为2的4个整型变量INTEGER(1)e!声明KIND值为1的1个整型变量INTEGERf!声明KIND值为4(缺省)的1个整型变量INTEGER:g=123!声明KIND值为4(缺省)的1个整型变量且初值为123注意:符号在声明中可有可无。若有,则可赋初值,否则不可赋初值。如声明语句“INTEGERg=123”是非法语句。,(1)整型变量,下面为合法声明实型变量语句REAL(KIND=4)a,b,c,d!声明KIND值为4的4个实型变量REAL(8)e!声明KIND值为8的1个实型变量REALf!声明KIND值为4(缺省)的1个实型变量REAL:g=1.23!声明KIND值为4(缺省)的1个实型变量且赋初值为1.23,注意:符号在声明中可有可无。若有,则可赋初值,否则不可赋初值。如声明语句“REALg=1.23”是非法语句。KIND值为8的实型变量为双精度变量,可由DOUBLEPRECISION声明取代。,(2)实型变量,下面为合法声明复型变量语句:COMPLEX(KIND=4)a,b,c,d!声明KIND值为4的4个复型变量COMPLEX(8)e!声明KIND值为8的1个复型变量COMPLEXf!声明KIND值为4(缺省)的1个复型变量COMPLEX:g=(3,4)!声明KIND值为4(缺省)的1个复型变量,且赋初值为(3,4)。注意:符号在声明中可有可无。若有,则可赋初值,否则不可赋初值。如声明语句“COMPLEXg=(3,4)”是非法语句。,(3)复型变量,下面为合法声明字符型变量语句:CHARACTERa!声明长度为1(缺省)的1个字符型变量CHARACTER(8)b,c!声明长度为8的2个字符型变量CHARACTER(LEN=4)e,f,g!声明长度为4的3个字符型变量CHARACTER*6h!声明长度为6的1个字符型变量CHARACTER:a=A!a的初值为“A”CHARACTER(7):b=“FORTRAN”,c!b的初值为“FORTRAN”,c初值为7空格“”而声名语句CHARACTER*7h=“student”则为非法语句。,(4)字符型变量,下面为合法声明逻辑型变量语句:LOGICAL(KIND=4)a!声明KIND值为4的1个逻辑型变量LOGICAL(4)a!声明KIND值为4的1个逻辑型变量LOGICALa!声明KIND值为4(缺省)的1个逻辑型变量LOGICAL:a=.True.!声明KIND值为4(缺省)的1个复型变量,且赋初值为真。,(5)逻辑型变量,(6)变量的声明在程序中,变量类型需要通过类型声明语句来定义。变量声明有两种形式:显式声明和隐式声明(隐含约定)。显式声明INTEGERaREALbCOMPLEXc,隐式声明(隐含约定),I-N规则规定:在程序中,凡是变量名用以下字母开头的变量被默认为整型变量,I、J、K、L、M、N、i、j、k、l、m、n以其他字母开头的变量被默认为实型变量,如:id为整型变量,而total则为实型变量。,FORTRAN90/95中一般不提倡使用,通过在程序变量说明之前加入:IMPLICITNONE语句来取消I-N规则。,IMPLICIT语句,功能:禁止I-N规则或重新定义I-N规则,例如:IMPLICITNONE!关闭默认类型功能,所有变量都要事先声明IMPLICITINTEGER(a,b,c)!a,b,c开头的变量都认为是整型IMPLICITREAL(m-p)!m到p开头的变量都认为是实型,注意:以上三种方法中,以类型显式声明语句最优先,IMPLICIT语句次之,“I-N规则”的隐含约定级别最低。类型说明语句和IMPLICIT语句都是非执行语句。类型说明只在本程序单位内有效。IMPLICIT命令要置于PROGRAM命令的下一行,不能把它放在其他位置。,(7)变量的初始化直接把数值写在声明的变量后面。使用这个方法来设置初值时,不能省略定义语句中间的冒号。如:,在FORTRAN77中则使用DATA命令来设置初始值,如:,1.运算符号,2.5运算符与表达式,2.算术运算符及其表达式+(正号或加号)、-(负号或减号)、*(乘号)、/(除号)、*(乘方)。不同的运算符有优先级次序。,例如:(a-b)/c*2+sin(x+y)。请注意:(1)由于用“/”号作为除号,因此在写除法运算式子时应加上必要的括号。(2)乘号不能省略,如asinx,必须写成a*sin(x)。(3)FORTRAN中无大、中、小括号之分,一律用小括号。(4)乘方按“先右后左”原则处理。(5)对单项运算符(正号或负号)相当于在它前面有一个运算量“0”,如:-a*2相当于0-a*2,而不是(-a)*2。,算术表达式的求值运算的规则:(1)同类型的操作数之间运算的结果仍保持原类型。特别要注意:两个整数相除的商也是整数。例如,5/2的值是2而不等于2.5,4*(-1)等于0,应写为5*(1./3.)而不是5*(1/3)。(2)如果参加运算的两个操作数为不同类型,则编译系统会自动将它们转换成同一类型后进行运算。转换的规律是:将低级类型转换成高级类型。类型的转换时从左向右进行的,在遇到不同类型的操作数时才进行转换。例如,1/2*1.0等于0,而1./2*1等于0.5。,算术操作数类型和级别,3.关系运算符及其表达式,格式为:表达式1关系运算符表达式2有以下几点说明:(1)如果表达式1,表达式2都为算术表达式,则进行关系运算前将其转换成同一类型,转换方法同算术表达式。(2)如果表达式1,表达式2都为字符表达式,则进行关系运算前将其转换成等长字符串,不足末尾补足空格。(3)复数的关系运算只有两种:等于和不等于。(4)对算术表达式进行关系运算,根据它们值的大小决定运算结果。(5)对字符表达式进行关系运算,依次比较两字符串相应位置字符的ASCII码值大小决定运算结果。,例如:1234!结果为.FALSE.(4+5*2).LE.10!结果为.FALSE.(4.2,7.3).NE.(7.3,4.2)!结果为.TRUE.MOD(4,2).EQ.0!4除以2的余数是否等于0。结果为.TURE.banana=apple!结果为.FALSE.Thisisapen.100例如,下面语句是非法语句。LOGICALflag1,flag2flag1=1.5!类型不一致flag2=china!类型不一致,(3)字符赋值语句赋值号左边变量和右边表达式类型均为字符型。例如:下面语句是合法语句。CHARACTER*7strstr=studentstr=Heisa/student例如:下面语句是非法语句。CHARACTER*7strstr=student+125!125是整数不能与字符串进行加法运算str=125+3*20!右边不能为算术运算表达式str=a100.AND.p!右边不能为逻辑运算表达式,当右边表达式长度与左边变量长度不同时:当右边表达式长度小于左边变量长度,将表达式运算后的结果长度强制转换为左边变量长度,不足补空格,并将转换后的字符串赋予左边变量;当右边表达式长度大于左边变量长度,将表达式运算后的结果左侧部分赋予变量,多余截去。,例如:CHARACTER*5str1CHARACTER*3str2str1=isstr2=china执行以上语句后,str1值是“is”,str2值是“chi”。,(4)DATA赋值语句DATA语句给数组赋初值的一般形式为:DATA变量列表/初值表/,变量列表/初值表,其中,初值表中只允许出现常量,不允许出现表达式。例如:DATAa,b,i/3.0,-3.1,8/,对DATA语句为变量赋初值,FORTRAN作如下规定:在初值表中如果有几个连续相同的变量可以简写为:n*常量。例如:DATAa,b,c,i,k/3*1.0,2*3/变量列表中的变量与初值表中的常量个数相同,类型一一对应。例如:DATAa,b,c,d/3.0,2*2.0/,i/3.0/上面的赋值是错误的。,如果在一个程序单位中有多个DATA语句给同一个变量赋初值,则以最后一个DATA语句中所赋的初值为准。例如,在一个程序单元中有以下DATA语句:DATAa,b,c,d/1.0,3.0,2*0.0/DATAx,y,c/4.0,2.0,7.5/其中变量c分别在两个DATA语句中出现,并且赋的值不同,结果c的值应为7.5。,2.程序控制语句(1)PROGRAM语句FORTRAN允许编程人员为自己的程序定义一个名字,其语句格式是:PROGRAM程序名PROGRAM语句可以省略,如果不省略必须放在该程序块的第一个语句位置。,(2)END语句END语句在FORTRAN中是可执行语句,它有三个功能:作为一个程序块的结束标志。主程序中END语句表示整个程序的终止执行语句。子程序中执行END语句,作用与返回语句RETURN语句作用相同。每个程序单元必须有一个END语句在该程序单元的最后一行。,(3)STOP语句和PAUSE语句STOP语句:作为一个程序块的结束标志。STOP语句的一般形式为:STOPn其中,n为在执行STOP语句时所输出的信息。PAUSE语句:暂停语句,用于暂停程序的运行,但不结束程序的运行,当需要从暂停处恢复运行时,按一个回车键即可。PAUSE语句的一般形式为:PAUSEn,常用的内部函数如表所示:,2.7内部函数,下面举例说明表中内部函数的使用:,它是FORTRAN输入、输出中最简单的一种方式,是按系统隐含的标准格式输入输出。(2)有格式输入、输出。它是按用户规定的数据格式输入、输出。故也称可控格式(或有格式)的输入、输出。(3)无格式的输入、输出。它是以二进制形式输入和输出数据,只适用于计算机内存与磁盘、磁带等之间的数据交换。,本节只讲(1)表控输入/出,(2-3)将在文件一章讲解。,(1)表控格式输入、输出。,2.8输入和输出,1.表控输入语句表控输入不必指定输入数据的格式,所以又称为自由格式输入,其一般形式为:READ*,输入表其中,“*”号表示表控输入;而输入表(如不同类型的变量,中间用逗号分隔开)则用来控制数据的输入,即要求输入表和输入的数据有严格的对应关系。,例如:a,b为实型,m,n为整型READ*,a,b,m,n可以从键盘输入以下数据:3.7,-1.8,24,10(数据间用逗号分隔)或:3.7-1.82410(数据间用空格分隔)则a=3.7,b=-1.8,m=24,n=10。,在使用表控输入语句时应注意以下几点:(1)应保证从输入设备上输入数据的个数与READ语句输入表中变量的个数相同,各数据类型与相应变量的类型一致。(2)输入数据可分为多行输入,直到输入全部数据。(3)输入数据个数要求不少于输入表中变量个数。如果少于变量个数,则程序将等待用户输入后续数据。如果多于变量个数,则多余的数据不起作用。,例如:上述READ语句执行时输入以下数据:3.7,-1.8,24,10,75,34,2.4后3个数是无效的,将被忽略。READ语句读取前4个数后,程序将继续执行下一条语句。,在使用表控输入语句时应注意以下几点:(4)使用多个READ语句时,每个READ语句都是从一个新的输入行开始读数的。例如:READ*,a,bREAD*,m,n如果输入数据为:3.7,-1.8,24,10第一个READ语句读入前两个数,即a=3.7,b=-1.8,而第二个READ语句并不会从这一输入行剩余的数据中读数,所以m,n未被赋值。想要正确赋值,应改为两个输入行:3.7,-1.824,10,在使用表控输入语句时应注意以下几点:(5)输入数据时,可以用符号斜杠“/”结束输入,为被输入数据的变量保持原值不变。例如:READ*,a,b,m,n输入数据为:3.7,-1.8/,24,10执行结果为a=3.7,b=-1.8,m,n均未被赋值。,在使用表控输入语句时应注意以下几点:(6)如果READ语句中有几个连续地变量要赋以相同的值,则可用重

温馨提示

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

评论

0/150

提交评论