FORTRAN语言程序设计初步课件_第1页
FORTRAN语言程序设计初步课件_第2页
FORTRAN语言程序设计初步课件_第3页
FORTRAN语言程序设计初步课件_第4页
FORTRAN语言程序设计初步课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

*1

FORTRAN语言程序设计初步*2FORTRAN语言发展概况(,是(于IFFORTRAN语言于1954年提出,1956年正式使用,是世界上最早被推广使用的高级语言,主要应用于数值计算领域。FORTRANFORmulaTRANslation的缩写。FORTRAN771980年被接受为国际标准,该标准分为全集和子集。在此之前FORTRAN语言先后推出了不同的版本:如FORTRANII1958),FORTRANIV1962)等。由于FORTRAN77中包含一些结构化的语句(块,DO等),因而能用于编写结构化程序。此外,FORTRAN77还扩充了字符处理功能,使其也能应用于非数值计算领域。1991年,ANSI(美国国家标准化协会)X3.198-1991问世其国际标准文件号为ISO/IEC1539:1991,我国国家标准是GB/T3057-1996,人们俗称FORTRAN90。除保持了FORTRAN77的全部优点,还加进了许多具有现代特性的功能,为FORTRAN语言注入了新的活力。Back*3简单的FORTRAN77程序分析1引例:求三个数的平均数CCalculatetheaverageofthreenumbers

X=90.5

Y=87.0

Z=68.5

AVER=(X+Y+Z)/3.0

WRITE(*,*)’TheThreeNumbersare:’,X,Y,ZWRITE(*,*)’AVERAGE=’,AVER

END程序中第1行是注释行,用于说明本程序的作用;第2~4行是赋值语句,将三个数值分别赋予三个变量;第5行是计算赋值语句,求出平均值并赋予变量AVER,第6~7行是输出语句,分别打印三个数及其平均值,最后一行是END语句。*4引例2:分别求R=1,3,12,5时的圆周长CMain

ProgramCProgramEX2

WRITE(*,*)‘R=’,1.0,‘C=’,C(1.0)

WRITE(*,*)‘R=’,3.0,‘C=’,C(3.0)

WRITE(*,*)‘R=’,12.0,‘C=’,C(12.0)

WRITE(*,*)‘R=’,5.0,‘C=’,C(5.0)

ENDCSub

Program

FUNCTIONC(R)

PI=3.1415926

C=2.*PI*R

RETURN

END*5子程序中第1行是注释行,说明本程序是子程序,第2行是FUNCTION语句,表明这是一个函数子程序,函数名为C,并有一个自变量R,此函数子程序在主程序中被调4次,分别求出不同半径时的圆周长;第3行是赋值语句,第4行是利用公式rcp2=计算与自变量R对应的圆周长并赋于变量C,第5行是RETURN语句,返回调用程序,最后一行是END语句。主程序中第1行是注释行,说明本程序是主程序,第2行是PROGRAM语句,为主程序起名为EX2,以便识别,第3~6行为输出语句,其中C(1.0)、C(3.0)、C(12.0),C(5.0)分别调用函数子程序,求出与半径1.0、3.0、12.0、5.0相对应的圆周长;最后一行是END语句。Back*6

函数由以上引例可以看到:一个FORTRAN程序由一个主程序或一个主程序与若干个子程序组成。主程序与各子程序都是独立的程序单位,称为程序模块。子程序是实现程序模块化的一个有效途径。FORTRAN子程序有以下几种:①函数子程序,第一个语句是FUNCTION名②子例行程序,第一个语句是SUBROUTINE子程序名③数据块子程序,第一个语句是BLOCKDATA子程序名简单的FORTRAN77程序分析*73、PROGRAM,FUNCTION,SUBROUTINE,BLOCKDATAIMPLICIT语句PARAMETER语句其它说明语句语句函数语句FORMAT和ENTRYDATA语句可执行语句注释行END语句FORTRAN77对每一个程序单位的结构规定如下:(说明语句,格式语句等)(赋值语句,输出语句等)1、每一个程序单位必须有一个、也只能有一个END语句,且出现在程序单位的最后。2、每一个程序单位包含若干行,分为两类:(注释行)非语句行语句行行非执行语句可执行语句使计算机运行时产生操作为编译系统提供信息‘*’,加入的文字说明。为便于阅读,或第一行为‘C’FORTRAN语句的标号视需要而定,为可选。其作用是标志一个语句以便其它语句调用,标号的大小与执行顺序无关,同一程序单4、程序单位中各类语句和注释行的顺序位中的语句标号不能相同。5、FORTRAN源程序必须按一定的格式书写。*8FORTRAN源程序的书写格式一个程序单位由若干行所组成,一个FORTRAN程序行共分为4个区:1.第1~5列为标号区。可以写1至5位整数。也可以没有标号。标号区中的空格不起作用。标号应是无符号整数,标号大小顺序没有任何要求。(标号区内不得出现标号以外的内容,但注释行例外)2.第6列为“续行标志区”,如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。3.第7~72列为语句区。语句可以从第7列以后任何位置开始书写。但一行只能写一个语句。语句区内的空格(除引号内的字符串内空格)在编译时被忽略。4.第73~80列,注释区。共八列,一般用前3位为页数,后5位表示行数。返回*9FORTRAN源程序键盘、输入运行编辑程序编译程序连接程序运行程序Go*10编辑程序编辑

用户可以从键盘输入自己的源程序,这时需要使用系统提供的“文本编辑程序”。操作步骤*11常量⑴整型常量(Integer)⑵实型常量(Real)⑶双精度常量(Double)

常量是指其值始终不变的一些量,在Fortran77中允许6种常量类型:⑷复型常量(Complex)⑸逻辑常量(Logical)⑹字符常量(Character)

其中⑴~⑷中属于算术常量,又称常数。后两种称为非数值型常量。*12整型常量整型常量或称整型常数或整数,它是一个正的或负的或零的数:1.整数不应包括小数点,正号可有可无(如:+10与10等价);2.整数程序中的常数的各数字之间的空格不起作用(123与

123等价);3.整数中不允许加入逗号,如123456不能写成123,456;4.由于计算机用有限的单元存储一个数,所以在存储整数的范围是有限的(P55)。返回*13实型常量实型常量也称实数,实数在FORTRAN中有两种表示形式:

1.小数形式它由一个或多个数字和一个小数点(只有一个)组成,小数点前或小数点后可以不出现数字,但不能小数点前后都不出现数字,如.

2.指数形式指数表示形式也称科学计数法,一个指数形式表示的实数有两部分组成:数字部分(含实数符号)和指数部分(Exponent),如:12.3E8,0.91E-30,用0.91*E-30是错误的。

数字部分表示的是该常数的有效数字,指数部分表示小数点的实际位置,它的作用是使数字部分的小数点左右移动。数字部分可以是不带小数点的整数形式,也可以是带小数点的实数,但指数不能为小数。一个实数可以写成小数或指数形式,用指数形式可以用不同的指数表示。*14

在计算机内存中,一般用4个字节来存储一个实数,实数在内存中一律以指数形式存放,它由三部分组成:⑴数符;⑵指数包括符号;⑶数字部分。数字部分最前面有一个隐含的小数点(见图3.8)

一个实数的范围也是有限的,这主要是由于存储的实数的指数部分的位长是有限的,如果一个数的绝对值的位长超过规定的范围,就会出现“溢出”,比绝对值大的称为“上溢”,小的称为“下溢”

对不同的计算机系统实数的输出常用标准化形式有两种:

1、在小数点前的数字必须为“0”小数点后的第一个数字必须为一个非零的数字;

2、小数点前数字部分的值大于或等于1。Back*15变量、、6,,,,、变量是指在程序运行期间其值可以变化的量。系统为程序中的每一个变量开辟一个存储单元,用于存放变量的值,变量的值在每一个瞬时应该是确定的。一、变量名变量名是变量的标识符。一个变量需用一个变量名来标识,因此在同一个程序单位中不能用同一个变量名代表两个不同的变量。命名规则:变量名中最多允许个字符,字符只能是字母与数字,且第一个字符必须为字母。如AX1CHINAAVERG861等都是合法的变量名。注意事项:①变量名中字母的大小写等价;TOTALToTaLtotal等价②变量名中字符间空格无效;AVERA_V_ER等价*16③

FORTRAN77无保留字,即可用内部函数名和语句定义符作变量名,如SIN,MOD分别是FORTRAN内部函数名和语句定义符,若有以下语句:SIN=3.5READ(*,*)MODWRITE(*,*)SIN,MOD则SIN,MOD被视为变量名,而不代表正弦函数和

求余函数操作。但在同一个程序单位中,变量名和函数名或语句定义符不得同名。如以下是错误的:SIN=3.5PRINT=SIN*SIN(2.0)WRITE(*,*)PRINT建议不要使用FORTRAN中已有特定含义的字作变量名。④

变量名应做到“见名知意”,使得程序便于阅读和理解。*17二、变量类型变量是用来存放常量的。不同类型的常量应放在不同的变量中,因此与常量相对应,变量也相应区分为整型变量、实型变量、双精度变量、复型变量、逻辑型变量、字符型变量

6

种。FORTRAN规定,在程序中用到的各种变量首先要说明它们的类型,并有以下

3

种说明类型的方法:1、隐含规则(I—N规则)FORTRAN规定,在程序中的变量名,在无专门的类型说明时,凡是以字母I,J,K,L,M,N六个字母开头的则认为是整型变量,其它字母开头的为实型变量。2、用类型说明语句说明变量类型若想改变“I~N规则”对变量类型的约束,可用类型说明语句指定变量类型,与变量类型相对应,类型说明语句有

6

个:*18INTEGER语句(整型变量说明语句)REAL语句(实型变量说明语句)DOUBLEPRECISION

语句(双精度实型变量说明语句)COMPLEX语句(复型变量说明语句)LOGICAL语句(逻辑型变量说明语句)CHARACTER语句(字符型变量说明语句)说明格式:类型说明语句<变量表>各变量间用逗号分隔3、用隐含说明语句IMPLICIT说明变量类型可以用IMPLICIT语句将某一字母开头的全部变量指定为所需类型。一个IMPLICIT语句可以指定几种类型。如:*19IMPLICITREAL(I,K),INTEGER(T-W)指定以I,K开头的所有变量为实型变量,T到W(T,U,V,W)开头的所有变量为整型变量。对于变量类型的说明应当注意:⒈

类型说明只在本程序单位中有效;⒉

类型说明语句和IMPLICIT语句都是非执行语句,其作用只在通知编译系统按规定的类型给变量分配内存单元和确定数据的存放方式。⒊

在确定变量类型的3种方法中,类型说明语句优先级最高,IMPLICIT语句次之,I—N规则优先级最低。⒋

类型说明语句和IMPLICIT语句应出现在本程序单位中所有执行语句之前,当两者同时存在时,其顺序为:先IMPLICIT语句,后类型说明语句。Back*20FORTAN函数FORTRAN提供了一些系统函数供某些专门运算,如求三角函数的值,sinx,cosx,指数函数ex,对数lnx,logx等,程序设计者只需按规定的格式写出函数名及一个或若干个自变量,即可得到相应的值。如:SIN(1.0)==0.8414709LOG(3.0)=log3=1.098612REAL(8)=8.0INT(8.6)=8SIGN(4.5,-0.5)=-4.5MAX(8,6,7,-11)=8SIGN(-0.5,4.5)=0.5等。*21几点说明:⒈

一个内部函数要求一个或多个自变量。当自变量个数规定为2时,自变量的顺序不同,其值不同。MOD(8,3)=2,MOD(3,8)=3;当自变量个数为2个以上时,则函数值与自变量的顺序无关。MAX(3.,6.,-4.)=MAX(-4.,3.,6.)=6.⒉

内部函数的自变量和函数值均有类型;有的函数值的类型与自变量的类型有关,如ABS,MOD等;有的函数值的类型与自变量的类型无关,如INT,REAL等;此外函数名分为“专用名”和“通用名”两种,见附录V。⒊

三角函数中角度的单位是弧度

(

rad),而不是度。⒋

自变量可以是类型符合要求的常量、变量或表达式。

例如SQRT(4.0),SQRT(A),SQRT(2.+2.)均合法,而SQRT(I)为非法,因为I为整型变量,SQRT函数的自变量类型为实型量。*22一、算术运算符及优先级5个算术运算符号:+算术加(或正号)-算术减(或负号)*乘法运算/除法运算**乘方运算3个优先级及次序:**乘方运算优先级最高*,/乘、除运算次之+,-加、减运算最低FORTAN算术表达式*23注意事项:①

两个运算符不能紧邻,A乘-B不能写成A*-B,而应写为A*(-B)或-B*A②

同一优先级遵循“先左后右”的原则,连续乘方按“先

右后左”的原则,如:23)4(2**3**4≠=4096,而应是)3(242**3**4==262144二、算术表达式的含义及表示方法表达式是一个或多个运算的组合。FORTRAN表达式是由FORTRAN运算符和括号将各运算元素(常量、变量、函数等)连接起来的一个有值的式子。FORTRAN中允许使用4种表达式:算术表达式、关系表达式、逻辑表达式和字符表达式。不同的表达式有不同的运算符,其值的类型也不同。*24算术表达式是由一个或多个算术运算组合而成。如:数学表达式edcba+++31的FORTARN表达式可写为:(1+3*A)/(B+C/(D+E)),算术表达式求值的优先次序为:括号→函数→**→*,/→+,-三、表达式运算中的类型问题FORTRAN允许不同类型的算术量(整型、实型、双精度型、复型)之间进行算术运算,并遵循以下原则:⒈

相同类型的算术量之间运算的结果仍保持原类型;2*3的值为整型数6;2.5*2.0的值为实型数5.0;2**3的值为整型数8;5/2的值为整型数2;1/2的值为整型数0。⒉

若参与运算的两个算术量类型不同时,则编译系统会自动将它们转换成同一类型,然后进行运算。转换的规律是:将低级类型转换成高级类型。整型(低)→实型(高)⒊

类型的转换是从左而右进行的,在遇到不同类型的算术量时才进行转换。如1/4*20.0=0.0先计算1/4得整型数0,遇实数20.0,将0转换为0.0与20.0相乘,结果为0.0,若将表达式写成1*20.0/4则得表达式的值为5.0。*25四、运算的误差问题一个整数(计算机规定的范围内)用二进制能够准确无误地表示出来,整型量的运算是准确的。而某些实数由于受存储方式的影响,有效位数受到限制,只能得到近似表示。因此实数的运算应遵循以下规则:⒈

尽量使每次运算结果都在有效位数范围之内,否则就会出现误差,在运算中应尽量避免两个相差很大的数进行加、减运算,以防止“大数吃掉小数”。如:0.001+1246825.0-1246820.0的值是5.0,而不是5.001;若将运算次序调换为1246825.0-1246820.0+0.001,则能够得到正确值5.001。⒉

实数的“相等”和“不等”的比较应慎重。如:(1./3.)*3.≠1.0,这是因为1./3.的值为0.3333333,在乘以3.得到的值为0.9999999。实数A与B的“相等”和“不等”的比较最好改为判断“e≤-BA”(e为一个很小的数,如10-6),若不等式成立,则认为A=B,否则二者不等。总之,在实数运算中应充分考虑到可能出现的误差,并设法避免。BACK*26一、赋值语句的性质和作用赋值语句的作用是将一个确定的值赋给一个变量。一般格式为:V=eV代表一个变量(Varible的第一个字母),e代表一个表达式(Expession的第一个字母),“=”应理解为赋值号,而不是等号,如N=N+1在数学上是不成立的,其作用是将N的原值加1再送回到变量N中,若N的原值3,执行上述赋值语句后N的值变为4。几点说明:①FORTRAN77的赋值语句有三类:算术赋值语句、逻辑赋值语句、字符赋值语句。算术赋值语句的作用是将一个算术量(算术表达式的值)赋予一个算术型(数值型)变量。②

算术赋值语句兼有计算和赋值双重功能。FORTRAN中的求值计算主要通过赋值语句来实现。赋值语句*27③

赋值号左边只能是变量名(或数组元素名),而不能是表达式,赋值号右边可以是常量、变量或表达式。二、执行赋值语句时的类型转换问题算术赋值语句中被赋值变量(V)和表达式(e)的类型可以相同,也可以不同。①

若V与e的类型相同,则直接赋值。如

I=3,A=5.7*T②

若V与e的类型不同,则遵循“先求后化再赋”的原则。即:求表达式的值→转化为被赋值变量的类型→执行赋值。如:I=3.5*2.1,表达式的值为7.35,由于I是整型变量,系统先将7.35转化为整数7,再赋给变量I,I的值为7。Back*28

在输入**语句中的第一个/…*对数据进行输入输出(I/O)时,需要告知计算机系统以下信息:①(输出)哪些数据;②从哪个设备输入或输出到哪个设备;③以何种格式进行输入输出。FORTRAN的输入输出格式有以下三类:①按用户指定的格式输入和输出;②按系统隐含的标准格式输入和输出;③无格式输入和输出。即以二进制形式进行输入和输出。一、表控输出语句表控输出即按系统隐含的标准输出格式。机型不同,格式可能不同。表控输出语句的格式为:WRITE(,)输出项,输出项,(输出表项)WRITE表示在系统隐含指定的设备上输出(屏幕),第二个“*”号指的是“用表空格式输出”简单的输出输入语句*29

二、表控输入语句表控输入语句的格式为:READ(*,*)输入项,输入项,…(输入表列)在READ语句中的第一个“*”表示“系统隐含指定的输入设备”第二个“*”表示表控输入表控输入的几点说明:①输入数据的个数、类型应与READ语句中变量的个数、类型一致。输入数据不够,系统等待继续输入;输入多余数据,多余部分无效;输入数据的类型不一致,一般按出错处理,但有的系统可为实型变量输入整型数,系统自动转换。*30②

每一个READ语句总是从新的输入行开始读数。例如,下列是两个连续的输入语句:READ(*,*)I,JREAD(*,*)X,Y如果在键盘上输入:4,18,3.5,-7.6↙则只将前两个整型数输入给第一个READ语句的整型变量I和J,而后两个实型数为多余数据,不起作用。因为第二个READ语句要求从一个新行开始输入数据。输入数据的正确格式为:4,18↙3.5,-7.6↙③

输入数据行中若出现“/”(斜杠符

温馨提示

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

最新文档

评论

0/150

提交评论