




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章,2012年3月,顺序结构设计,Fortran数据表现形式常量:不变的量15变量:变化的,内存地址表达式函数:ABS,LOG,数据类型整型实型字符型复型逻辑型,优化代码,提高程序速度,直接常量:数据本身就是一个常量15,20.54,“中国”(1)整型常量:整型常量又称为整型常数或整数,包括正数、负数和0。如125,-258,+28等。必须注意:整型常量中的数字之间不能用“,”分隔,即日常中所用的千分位分隔符,例如123,000是错的整型常量表示;整型常量不能有小数点;整型常量内部最好不要加空格(FORTRAN77中整型常量的空格被忽略,而FORTRAN90及以上版本整型常量加入空格将产生错误)。,2.1.1直接常量,FORTRAN77中一个整型常量占2个字节的存储空间FORTRAN90标准中整型常量的范围没有明确规定。如16位计算机上整型常量的范围是2个字节,表示为十进制数为-32768+32767,即-215215-1,2.1.1直接常量,INTEGER(KIND=2)II=32771PRINT*,IEND,实型常量即实型常数或简称实数。它有2种表示形式:小数形式和指数形式小数形式根据小数点前后是否有数字形成3种不同格式,分别是:m.n、m.、.n。数字前面可以加上“+”或“-”号,默认为正号小数点“.”前或后可以不出现数字。例如3.52、4.0、-5.(相当于-5.0)、.6378(相当于0.6378)等指数形式可以表示一个绝对值非常大或非常小的数,表示方式是用E将有效数字和指数分隔,E的前面是指数,E的后面是小数。例如:1.32E5表示13200或1.32*1051.285E-12表示1.285*10-12,(2)实型常量,注意:E后面的指数只能是整型常量,如5E3.2是错误的指数表示。,符号常量,是用一个标识符来代表一个常量。符号常量常用PARAMETER语句来定义。例如:PARAMETER(PI=3.1416,M=10)该语句定义了两个符号常量PI和M,在该程序单位内,PI代表3.1416,M代表10PARAMETER为特有的常量定义标识,要定义的项必须放在()内,如果有多项,项之间要用逗号隔开。符号常量与变量有着本质的区别,PARAMETER语句是非执行语句,变量对应于一个存储单元,程序执行时,可将表达式的值存放到变量所对应的存储单元中(即给变量赋值)或从变量所对应的存储单元中取出相应的值。符号常量不能当变量使用,2.1.2符号常量,例1输入圆柱体的半径和高,求圆柱体的表面积和体积PROGRAMfexREALR,H,S,VPARAMETER(PI=3.141593)PRINT*,“请输入半径和高:”READ*,R,HS=PI*R*2*HV=PI*R*2*HPRINT*,“表面积为:”,SPRINT*,“体积为:”,VEND,2.2.1变量的概念变量:是指在程序运行过程中其值可以改变的量。变量实质上代表的是一个内存单元在FORTRAN中经常用看到下列的语句:N=N+1N所对应存储单元中的数据在原来基础上增加1。,例已知三角形3条边:a、b和c,输入边长,计算面积,并输出。三角形面积=,其中:s=解:PROGRAMexam1REALa,b,c,s,areaREAD*,a,b,cs=(a+b+c)/2area=SQRT(s*(s-a)*(s-b)*(s-c)PRINT*,area=,areaEND运行程序输入数据:2.53.54.5输出结果数据:area=4.353070,一个变量需要一个名字来识别,在同一个程序单位中不能用同一个变量名代表不同的变量。变量的名字即标识符:areastu_num在FORTRAN语言中,标识符只能由字母、数字和下划线组成,且开头只能是字母。定义标识符时应注意以下事情:(1)FORTRAN标识符不区分字母的大小写,如grade、Grade、GRADE所表示的是同一个变量。(2)标识符的长度因FORTRAN版本不同而有差异(P18表2.1),2.2.2变量的概念,(3)标识符要尽量做到“见名知义”,如可用AREA代表“面积”,GRADE代表“成绩”,AVER代表“平均值”等(4)FORTRAN没有规定的“保留字”,因此FORTRAN中具有特定意义的语句名、函数名,可以用作变量名。但是:INTEGERPRINTREALWRITE是一个不好的选择避免和FORTRAN的关键字命令混淆,2.2.2变量的概念,INTEGER(KIND=2)II=32771PRINT*,IEND,FORTAN中变量的类型的定义有三种方式:1.类型说明语句格式为:类型说明符变量名1,变量名2其中类型说明字为:INTEGER:整型变量说明;Integerx,yREAL:实型变量说明;realarea,averageDOUBLEPRECISION:双精度型变量说明;doubleprecisionarea,2.2.3变量的说明,COMPLEX:复型变量说明;5+2iLOGICAL:逻辑型变量说明;CHARACTER:字符型变量说明;注意,在FORTRAN90中,还可以用如下语句来声明变量的类型:类型说明符:变量名1,变量名2REAL:SCORE=89.5该语句在变量类型进行声明的同时进行变量的初始化。REALSCORE=89.5,2.2.3变量的说明,2.隐含说明语句IMPLICIT,IMPLICIT说明语句可以将某个或某些字母开头的变量规定为所需的类型,格式为:IMPLICIT类型说明(字母表)例如:IMPLICITINTEGER(A,C,T-V)该语句的含义是将以A和C及T到V开头的变量规定为INTEGER类型(即整型)。,3.隐含约定,FORTRAN语言规定,以I,J,K,L,M,N6个字母开头的变量被当作整型变量。该规则又称为IN规则。例如:在没有前面两种说明的情况下,I1,MA,N3S等都为整型变量。,(1)IN规则在FORTRAN77中用的较多,它具有一定的副作用,如隐含说明与强制说明一同使用时,变量类型不清晰,因此FORTRAN90中一般不提倡用,通过在程序变量说明之前加入:IMPLICITNONE语句来取消IN规则。(2)在以上3类规则中,第一类优先级最高,第二类次之,隐含约定最低。也就是说,当一个变量被强制定义为某种类型时,IMPLICIT语句和隐含约定将不再起作用。(3)IMPLICIT语句和变量强制说明语句,都为非执行语句,FORTRAN77规定:应把它们放在所有可执行语句之前。,IMPLICITNONE,输入2个实数,a,b计算x,y,输出结果,PROGRAMEXAM3REALa,b,x,yREAD*,a,bX=(a*a+b*b)*5Y=(a*a-b*b)*7PRINT*,x=,x,y=,yEND,例:计算扇形面积,t为角度,r为半径,s为面积,PROGRAMSQUREIMPLICITNONEPARAMETER(PI=3.1415926)REALR,TWRITE(*,*)“请输入半径r和扇形角度t的值:READ*,R,TS=PI*R*2*T/360PRINT*,R=,R,T=,T,S=,SEND,注意!,PARAMETER(PI=3.141593)符号常量INTEGER:I=100或写成INTEGERII=100,REAL:S=10.25或写成REAL:SS=10.25,内部函数是指系统本身带有的能完成一定功能的程序单位。内部函数可供用户直接使用,只不过必须遵守其使用规则,不必重新编写程序。如数学函数中的三角函数,象正弦函数,SIN(X),其中X为任意实数,就可以得到对应数值(弧度)的正弦值。SQRT(3.521)FORTRAN常用的函数见表2.2。,SIGN函数的作用是“符号传送”。SIGN(A,B)的作用是将B的符号传送给A,常用标准函数,Sign函数的作用是”符号传递”将第二个数的符号传递给第一个数。利用sign函数可以检查两个数是否同号。若sign(a,b)=a,则a与b同号,SIN(3.1415926/4)sin(180/4)=sin45=0.707107sin45=sin(45*/180)=sin(/4)度数应转化为弧度LOG(50.0)ln50LOG10(50.0)=lg50INT(12.5)12.5=12MOD(13,5)13-13/55=3SIGN(125.45,-4.5)-125.45SIGN(125.45,4.5)125.45REAL(10)10.0MAX(12,34,78,11,54,35)78MIN(12,34,78,11,54,35)11,举例,1弧度=180/度,1度=/180弧度,FORTRAN常用的函数见表2.2,10Mod6=4,Log(x),ln(x),ex,说明:(1)FORTRAN内部函数,也称为库函数。在程序中可直接调用这些函数,在完成程序的编译后,通过连接,即将一组二进制指令代入该函数出现的地方,与编译好的目标程序一起形成可执行程序(2)一个内部函数要求一个或多个自变量。如SIN(X)自变量仅一个。MOD(M,N)自变量为两个:M、N。最大值、最小值MAX,MIN等函数,自变量就可以有多个。(3)函数的自变量是有类型的,函数的值也是有类型的,如求余函数MOD(M,N),自变量与函数值,都是整型,而SIN(X)等,自变量与函数值都是实型,否则,如果用整型自变量将产生语法错误,函数值用整型变量存储将丢失小数部分的数据,导致结果错误,内部函数使用应当注意,(1)所有函数必须遵守原有数学规则,如负数不能开方,不能对负数求对数,实数不能求余等,违反规则程序将产生错误。(2)所有函数名字的后面都必须带有括号(),否则将产生错误。如COS(X)不能写成COSX,因为后者FORTRAN语言将把它当作一个标识符,而非调用一个函数。使用函数时,参数类型和个数必须与函数定义的参数类型和个数一致,如使用MOD函数时,需要两个为整型的参数(3)三角函数参数单位是弧度,因此得特别注意,如果是普通的度数,必须先转化为弧度才能使用对应的函数。(4)要注意FORTAN语言中函数名与数学中函数名的差异,如FORTRAN语言中LOG(X),相当于数学的自然对数,即LnX。,函数运用的具体例子,PROGRAMEX1INTEGERMWRITE(*,*)请输入一个整数:READ*,MIF(MOD(M,3)=0)THENPRINT*,M能够被3整除!ELSEPRINT*,M不能够被3整除!ENDIFEND,(1)求三个数X、Y、Z中的最大值可以表示为:MAX(X,Y,Z);(2)判断一个数自然数M是否为另外一个自然数N的因数,通过MOD(N,M)是否为0可以判断,如果为0,则说明M是N的因数,否则说明N不能被M整除。,将常量、变量、函数用运算符连接起来的式子称为表达式。根据运算符的不同,表达式分为:算术表达式、字符表达式、关系表达式、逻辑表达式2.4.1运算符号与其优先级别5种算术运算:加(+),减(-),乘(*),除法(/),乘方(*),12-5*2*3/8:2*3=8,5*8=40,40/8=5,12-5=7,如果某些运算想先算,可以通过加()的方式来保证例子:(A*B)*3表示(AB)3,SIN(X*Y)表示SIN(XY),而A/B表示AB等,而SIN(X*Y)M*N等同样为数学表达式,注意,(1)表达式中的所有字符都必须写在一行,特别是带有下标的变量,不能象写数学表达式那样书写。如:Z=X1+X2不能写成Z=X1+X2(2)表达式中常量的表示、变量的命名以及函数的引用要符合FORTRAN语言的规则。(3)算术表达式中,乘号不能省略,如3*A不能写为3A,X*Y*Z不能写成XYZ。(4)两整数相除,结果为整数,不会进行四舍五入,而是把小数后面的部分切掉。因此,当分子小于分母时,结果一律为0。,PROGRAMEX1PRINT*,3*2/3与下一句数学上相同PRINT*,2/3*3但结果不同PRINT*,3*2.0/3PRINT*,2.0/3*3END,在表达式的书写中,数据类型可以不同,但计算机是按相同数据类型进行运算处理,这时,编译系统将自动地将不同类型的数据转化为同一种类型,然后进行运算。转换规律是:将低级类型转换成高级类型。对整型和实型而言是将整型转换成实型。1/2.0则系统先将1转换成1.0,然后除以2.0,结果为0.5。1.0/2和1/2.0和1.0/2.0结果都为0.5,得到实型数据值得注意的是,数据类型转换是从左到右进行的5/4*8.0结果为8.0,非10.0。要使结果为10.0,可以将5改为5.0,2.2.3算术表达式中类型转化,2.5.1赋值语句的格式赋值语句在高级语言中都是作为最基本的语句,它的一般格式为:变量名=表达式例如,PI=3.1416其含义是将3.1416的值赋给左边的变量PIX=X1+X2*X3+5将算术表达式X1+X2*X3+5的值赋给变量XI=I+1变量I在原来的基础上增加1。赋值语句的作用是:将右边表达式的值赋给左边变量,即将表达式的值存放到变量所对应的存储单元。,2.5.2执行赋值语句时的类型转换问题,赋值语句中被赋值的变量和表达式的类型可以相同,也可以不同。FORTRAN规定:(1)左右两边类型相同,运算完毕,直接赋值例如:INTEGERII=I+2I与2都为整型,因此I+2也为整型,最后I得到一个整型数据,在原来的基础上增加了2。REALX,YY=2.5*XX、2.5和2.5*X都为实型、因此Y得到一个实型数据。,(2)左右两边类型不同,右边表达式按原来规则计算,再转换为与左边变量相同的类型,然后将值赋给左边的变量。例如INTEGERNN=3.33*3先计算右边表达式3.33*3的值,为9.99,再将9.99转化为整型9,最后将9赋值给N,因此N的值是9,2.5.2执行赋值语句时的类型转换问题,INTEGERM,NREALX,YM=5/2N=5.0/2X=5/2Y=5.0/2,第一个赋值语句中,右边5/2得到一个整型值2,左右类型一致,M的值是2;第二个赋值语句中,5.0/2得到实数2.5,在赋值给整型变量N时,小数部分被切掉,N的值是2;第三个赋值语句中,5/2得到整数2,但X为一个实型变量,因此,将整数2转化为实数2.000000,再将它赋给X,因此,X的值是2.000000;Y的值是2.500000。,输入输出是计算机内存与外部设备交换数据的过程。要顺利地传递数据,一般应在输入输出语句中给计算机语提供三方面的信息:(1)通过什么设备进行输入输出;(2)采用什么样的格式进行输入输出;(3)输入、输出的内容。根据上述三个方面,FORTRAN提供多种输入输出方式,与此对应的是各种输入输出语句。本章介绍的是最简单的表控输入、输出语句,也就是系统默认的输入输出方式,输入:是指从外部设备上将数据输入到计算机内存中。向计算机输入数据叫“计算机从外部设备读入数据”FORTRAN用READ语句实现数据输入,方式有3种(1)数据按用户规定的格式输入;(2)用自由格式输入,即表控格式输入。(3)无格式输入,即以二进制形式输入,只适用从磁盘或磁带输入。,2.6.1表控输入语句,表控格式输入不必指定输入数据的格式,只需要将数据按其合法形式依次输入即可,所以又称为自由格式输入,其一般格式为:READ*,变量表变量之间用逗号隔开:READ*,X,Y,Z其中,READ后面的“*”号表示“表控输入”,语句含义是从系统隐含指定的输入设备上(一般为键盘)读入3个实型数据分别给X、Y、和Z。表控输入也可以写为:READ(*,*)变量表,其中第一个*表示“系统隐含指定的输入设备”,第二个*是指“表控输入”,当程序执行到READ语句时,向设备发出输入数据的命令,这时,通过隐含的输入设备输入相关的数据表控输入语句使用注意:(1)数据输入时:多个数据必须分隔开,a.输入一个数据,键入一个回车,b.在一行输入数据,但数据之间用分隔符隔开,允许的分隔符号有空格、逗号和斜杠。两个数据之间空格可以有多个,但逗号只能有一个,多个逗号意味着对某些变量输入空数据,即不输入数据。READ*,S1,S2,S3输入方式为:1.22.53.45或1.2,2.3,3.45再回车,还可以每输入一个数据一个回车。,(2)如果输入数据少于变量个数,则计算机将等待继续输入,如果数据多于变量个数,则多余的数据不起作用。(3)当多个输入语句并列使用时,一个READ语句对应一行。例如:READ*,M,NREAD*,X1,X2READ*,A1,A2输入:5,6,12.3,14.8回车输入:56.4,12.8回车输入:-78.6,21.4回车,2.6.1表控输入语句,该程序执行后,M为5,N为6,而X1为56.4,X2为12.8而非12.3和14.8,A1、A2为-78.6和21.4。,(4)如果在输入数据行中出现“/”号,表示READ语句的输入到此结束,未被赋值的变量将不被赋值。例如:READ*,I,J,X,Y输入数据为:2,6/14.3,12.64回车这时,I为2,J为6,而X、Y将得不到值。(5)特别注意:输入的数据类型应与变量类型尽量保持一致,整型变量不能接受实型数据,否则运行时将出错,实型变量可以接受整型数据,但最后按实型数据处理。,PROGRAMEX1integerxread(*,*)xprint*,xEND,与表控输入语句对应,表控格式输出语句简称表控输出语句,一般格式为:PRINT*,输出项表其中“*”同样代表表控格式,输出项内容可以是常量、变量、表达式或字符串,它们之间使用逗号隔开。PRINT*,XPRINT*,“Y=”,Y,“Z=”,ZPRINT*,“最大的数是:”,MAX,“最小的数是:”,MIN,2.6.2表控输出语句,注意:,(1)每一个PRINT语句在新的一行开始显示。(2)PRINT*后面字符串里的内容将原样显示,如上例中的“最大的数是:”、“最小的数是:”就是原样显示的,好处在于阅读方便,删除该字符串对程序运行不会产生任何影响。(3)单独一个PRINT*语句,后面无列表相当于一个换行语句。(4)PRINT*语句可以进行表达式的运算,例如PRINT*,X*2,Y+3,(5)表控格式还可以写成,WRITE(*,*)输出列表其中第一个*表示“在系统隐含的输出设备上输出”,隐含输出设备一般是显示器或打印机。第二个*指的是“表控格式输出”,相当于PRINT*中的*号。列表的内容与PRINT语句相同。WRITE(*,*)X,YPRINT*,X,Y两个语句作用相同。,分析下列程序的结果IMPLICITNONEINTEGERM,NREAD*,M,N,N,MM=M+NN=M+NPRINT*,M,NEND当输入78910时,输出结果为1928,例2.1,输入三个实数,输出最大值和最小值READ*,X1,X2,X3MAXNUM=MAX(X1,X2,X3)MINUM=MIN(X1,X2,X3)PRINT*,最大的数是,MAXNUMWRITE(*,*)最小的数是,MINUMEND从键盘输入2.8,9.6,4.3,例2.2,输出结果为:最大的数是9.6最小的数是2.8,2.7.1STOP语句STOP语句的作用是使程序“终止运行”,一个程序可以有多个STOP语句,为了区分,可以在STOP后面加上标识,其一般格式为:STOPNSTOP150STOPABC在程序停止运行时,输出150或ABC等信息。STOP主要是早期FORTAN语言版本,需要用它作为程序运行的结束,因为当时的END语句仅仅为程序结束的标志,真正要结束程序的运行,需要STOP来完成,对于现在的FORTRAN版本,STOP语句以无实质性的含义。,PAUSE语句是暂停语句,使程序“暂时停止运行”,这时不是“结束运行”,而只是把系统程序暂时挂起来,按回车键可以恢复运行。其使用格式如下:PAUSEN例如:PAUSE200有意识的PAUSE语句相当于在程序中设置断点,把程序分成几段,调试程序时,一段一段地检查,使用完毕再将PAUSE语句删除。,2.7.2PAUSE语句,INTEGERY,Z,MAX,MINPRINT*,请输入一个Y,Z值:READ*,Y,ZPRINT*,Y=,Y,Z=,ZPAUSE150MAX=Y+ZMIN=Y-ZPRINT*,最大的数是:,MAX,最小的数是:,MINEND,END语句是一个比较重要的语句,它的作用有二点(1)结束本程序单位的运行,每个完整的FORTRAN程序,都必须在最后加一个END,以结束程序。(2)在FORTRAN子程序中,同样用END作为该程序单位的结束,但同时兼起返回的作用:使程序返回到被调用处,即RETURN语句的功能。,2.7.3END语句,例2.3任意输入两个数,对它们进行加、减、乘、除、乘方运算分析,用变量X1、X2存储待输入的两个数,用S1、S2、S3、S4、S5分别用来存放加、减、乘、除、乘方运算结果.,REALX1,X2READ*,X1,X2S1=X1+X2S2=X1-X2S3=X1*X2S4=X1/X2S5=X1*X2PRINT*,2数之和为,S1PRINT*,2数之差为,S2PRINT*,2数之积为,S3PRINT*,2数之商为,S4PRINT*,2数之幂为,S5END,计算结果可以用PRINT语句来完成,如求X1与X2的和S1,可以写成PRINT*,“2数之和为”,X1+X2等,因此可以去掉5个存储结果的变量。,已知f(x)=x3+sin2x+ln(x4+1)分析:f(x)即函数值在程序中用y表示,自变量x从键盘输入IMPLICITNONEREALX,YREAD*,XY=X*3+SIN(X)*SIN(X)+LOG(X*4+1)PRINT*,YEND输入:12.1输出:1781.736000,例2.4输入自变量的值,求出对应的函数值,分析:用X和Y存放待交换的数据,用临时变量T保存其中一个变量如X的值,再通过X=Y和Y=T实现交换,程序如下:REALX,Y,TREAD*,X,YPRINT*,交换前X=,XPRINT*,交换前Y=,YT=XX=YY=TPRINT*,交换后X=,XPRINT*,交换后Y=,YEND,例2.5将两个变量的值互换,输入34时,输出是:交换前x=3,交换前y=4交换后x=4,交换后y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮外包经营合同范本
- 建筑委托采购合同范本
- 纱窗装修合同范本
- 踝关节骨折内固定术后护理查房
- 农机设备合同范本
- 安全机械租赁合同范本
- 仓库置物架安装合同范本
- 木板材购销合同范本
- 栏杆工人劳务合同范本
- 典当房转让合同范本
- 全面质量管理TQM体系概述与实践应用探讨
- 2025废气处理合作协议合同范本
- 2025年云南省事业单位招聘考试教师信息技术学科专业知识试卷试题
- 借款转为租金合法合同范本
- 2025年国企融媒体考试题库
- 2022年基本公共卫生服务项目宣传工作计划
- 癫痫病人的护理查房ppt课件(PPT 24页)
- DB45T2053-2019 重质碳酸钙单位产品能源消耗限额
- 红金简约风教师退休欢送会PPT通用模板
- 水准点复测记录(自动计算表)
- 有机热载体锅炉安装工程施工方案完整
评论
0/150
提交评论