fortran90-知识点整理.docx_第1页
fortran90-知识点整理.docx_第2页
fortran90-知识点整理.docx_第3页
fortran90-知识点整理.docx_第4页
fortran90-知识点整理.docx_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

Fortran90关于变量说明的新功能:1.在变量说明的同时,可以给变量赋初值。 INTEGER:I=5,J=126 REAL:X=7.2,Z,W=774.22.在说明变量的同时也可说明其种别 REAL(KIND=4):X,Y 或 REAL(4):X,Y3.在说明变量的同时,还可说明变量的属性INTEGER,PARAMETER:I=5,J=123 Ps :PARAMETER 属性(1)功能:用一个符号代表一个常量,称为符号常量(常数)(2)写法:Real,Parameter :G=9.8 &说明类型时赋值(3)位置:位于可执行语句之前 REAL,DIMENSION(1:10):A2.3.6 派生数据类型 根据需要而由基本数据类型定义新的数据类型。在一个派生类型中可包含多个基本类型。如:TYPE STUDENT (定义开始) CHARACTER(LEN=20):DEPARTMENT CHARACTER(LEN=10):CLASS CHARACTER(LEN=15):NAME INTEGER:NUMBER (成员定义) END TYPE STUDENT (定义结束)派生类型变量的定义: TYPE(STUDENT):PERSON变量的赋值: PERSON=(”COMPUTER”,”92_2”,”LI LIN”,21)成员的表示: PERSON%CLASS=“92_2” PERSON%NAME=“LI LIN”主程序其他限制主程序的可执行部分不能包含有RETURN语句或者ENTRY语句。程序名对可执行程序是全局的,而且不得于该可执行程序中的任何其它程序单元名、外部过程名或公用块名相同,也不得于主程序内的任何局部名相同。 在主程序的作用范围内的说明不得包含OPTIONAL语句、INTENT语句、PUBLIC语句或它们的等价属性,在主程序内SAVE语句不起作用。主程序内的任何内部过程的定义必须跟在CONTAINS语句之后。2.3.2 子程序 子程序是可以完成某一独立算法或功能的程序单元,但它功能的具体体现要通过主程序(或子程序)的调用来实现。 按子程序与主程序的位置关系分为内部过程和外部过程。2.4.3 模块 模块也是一种在程序单元之外独立编写的程序单元。它有独特的形式,即模块程序单元内没有可执行语句,除了说明语句外,最多包含内部过程。模块的主要作用是供其它程序单元引用。 程序单元引用模块,实际是将模块内的全部语句复制到本程序单元。因此模块起共享及复制的作用。模块的引用采用语句: USE 模块1,模块2,基本语句概述程序的最基本的语句主要有四种:类型说明语句、赋值语句、输入语句、输出语句。运用这些基本的语句,就可以编写一些简单的程序。内在函数FORTRAN 90配置的函数称为内在函数。内在函数分为三种:基本函数 : SIGN符号函数值:|A1|(若A20) -|A1|(若A20)SIGN(A1,A2)Eg : SIGN(-3.0,2.0)=3.0 SIGN(3.0,-2.0)=-3.0 某些函数参数只能为实型 如:log(2.0) (loG(2)错)转换函数函数名含义FORTRAN举例INT(X)实型转换整型、复型的实部转换整型INT(2.3)=2INT(1.2,3.5)=1REAL(X)整型转换实型、复型的实部转换实型REAL(8)=8.0REAL(1.2,3.5)=1.2COMPLEX(X,Y)将X,Y合成为复型COMPLEX(2.3,1.5)=(2.3,1.5)INT(X,KIND):将X值转换为整型,以KIND的值作为种别参数REAL(X,KIND):将X值转换为实型,以KIND的值作为种别参数COMPLEX(X,Y,KIND):将X,Y转换为复型,以KIND的值作为种别参数查询函数KIND()SELECTED_INT_KIND()SELECTED_REAL_KINDPRECISION()RANGE()不轻易使用整型量除整型量 1.0/2 2.0*(-1)运算对象类型相同时,运算结果的类型为同一类型注意:5/2=2 1/2=0 !运算对象类型不同时,系统一般先转换成相同类型后再运算转换规则是:较低级的类型转换为较高级的类型数据类型隐含的高低次序为(由低到高): 整型实型 双精度 复型例: 8/5+2.0*5/2=6.0(逐步转化)赋值语句1、类型要求逻辑型、字符型的赋值语句要求“=”两边类型相同数值型赋值,不区别整型、实型和复型2、种别方面 字符型要求种别相同其余类型的e、V种别允许不同输入输出语句1、 I/O的对象 列在中 I/O是相对于内存而言的,键盘属于输入设备,显示器属于输出设备,优盘、硬盘既是输入设备,又是输出设备。2、I/O的方向及语句READ (U,f) U:设备(部件) f:格式WRITE其中: 输入 READ语句 输出 PRINT语句,只输出到显示器 WRITE语句,适合任何输出设备U(部件) * : 系统约定设备某个值: 指定通道号(设备逻辑号、文件号) 表控格式I/O(*): 系统约定的格式。f(格式) 基本格式(自定格式)I/O:按用户要求的格式组织I/0。 带控制信息表的I/O:I:碰到回车(ENTER)为一个记录。O:一行为一个记录。程序执行过程中按表控格式输入数据各数据间有分隔符: ,或空格类型匹配:整型:带小数点只取整数部分; 复数:(实部,虚部); 字符:一串字符:赋值时长度转化或一串字符 即可省略。 逻辑:以T或F作为第一个字母的字符串(点号1个、空格多个在前忽略)3.输入的数据必须是常数,不能是变量和表达式如输入2+1,则出错。4.输入数据个数: 1)不得少于变量的个数; 2)可分行输入; 3)多余的数据不起作用5.空格可以多个,/表示输入数据结束,后面的数据被取消,没有输入数据的变量值为原值;Read*,A,B,C 输入: 2,1/3 结果: A=2 B=1 C=06、如果几个连续变量需要赋同一个值,可以使用重复因子r,即r*c: r为重复数 4*0.5,2*3,2*AB,3*(1.0,-1.0)输入输出的三种不同的格式:1表控格式的输入输出2有格式的输入输出3带控制信息表的输入输出整型编辑符:Iw.m1I 编辑符控制输出:功能:用于整型数据的输入输出格式: Iw Iw.mrIww输入输出数据字段总宽度m至少m位数字r为重复系数 例1设 J=10, K=-12,L=12 WRITE (*,”(I3,I5,I7)”)J,K,L 10-12123注意: 1数字在指定的区域内右端对齐,不足w则左边补空格。 2负数的符号也包含在字段宽度内 3如果应输出的列数超过了规定的字段宽度,则不输出有效数据,以w个*填充。 4、BN, BZ :Blank interpretation Specifies interpretation of blanks in numeric fields (空格是否当0处理)仅用于输入格式语句,如 read “(BN,2I3)”,I,J 例2如果将格式串改为:“(I3,I5.4,I7.5)” 则输出: 10-001200123 例3如果L=123456 10-0012123456 !Iw.m :m=n+d+2 当实型数值大于或等于0.0时,则w=n+d+1 用此来确定w的宽度注意:1 w包括数符和小数点两位2 若数据小于w位,则左边补空格3 输出值时舍入,而不是截断4. 如果是科学计数法则转换小数形式字符型编辑AA用来编辑字符型变量,它不关心该字符串的长短如何。例: CHARATER*5 A,B,C READ(*,(A,A,A))A,B,CWRITE(*,(A,2X,A,2X,A))A,B,CEND输入:ABCDBASICFORMAT结果:ABCDBASICFORMA ! 2X表示X编辑描述符功能1:在输出时产生空格,它的一般形式为:nX关系表达式与逻辑表达式关系运算符: 、 =、 、 =、 =(等于)、 /=(不等于) (常用).GT.、.GE.、.LT.、.LE.、.EQ.、.NE.注意1、每个关系表达式中的关系运算符只准出现1次,运算符两侧都是表达式; 错例:2Xb)c2、运算对象: 关系运算符两边的运算对象类型应相容: 错例:A= =.TRUE. 2,=,0) PRINT*,X 执行过程: 1、计算条件表达式的值 2、真 右边语句 IF的下一个语句 3、假 IF的下一个语句 注意: 1.右边通常为一条且只一条可执行语句。 错例:IF (AB) T=A;A=B;B=T 2.不能为以下语句: END、另一个逻辑IF、 块IF、ELSIF、ENDIF、DO 错例:IF(X=I) PTINR*,IEND DO II隐含DO循环隐含DO循环实际上是带控制变量的DO结构。但简化成只有DO结构的第一句,且把DO关键字隐去。隐含DO循环的形式为:(list,v=u1,u2,u3)说明:1、左括号相当于DO,右括号相当于ENDDO;2、List可以是一个或多个常量、变量、数组元素等,甚至可以是另外的隐含DO循环(隐含DO循环嵌套)不能独立存在,主要用于输入输出语句,常用于数组的输入输出。如:READ *,(A(I),I=1,5) READ *,A(1),A(2),A(3),A(4),A(5)隐DO、显DO执行过程的区别1、输入、输出格式的区别:PRINT *,(I,I=1,3) PRINT*,1,2,3输出一行DO I=1,3 PRINT*,1PRINT*,I PRINT*,2ENDDO PRINT*,3 输出三 行几种常见的隐含DO循环的形式1.按指定步长读写。例如 PRINT *,(J,J=1,7,2)2.隐含DO循环与普通变量混合使用。例如 PRINT *,A,B,(X(I) ,I=1,3),C3.用于输出一些特殊符号。例如 PRINT *,(-,I=1,80)4.隐含DO循环可以并列出现。例如 print *,(I,I=1,2),(J,J=1,2)程序单元和过程子程序单元不能独立存在,只能被主程序单元或被其它子程序单元调用,甚至可以递归调用(调用本身)子程序(又称过程)的分类1、 函数子程序分为:内部函数子程序,外部函数子程序2、 子例行子程序分为:内部子例行子程序,外部子例行子程序外部函数子程序Visual Fortran90的函数:1、内在函数(系统函数、标准函数)如:sin、cos、sqrt、abs、kind2、Function语句编写的函数(自定义) 分为内部函数、外部函数函数子程序的编写方法RECURSIVEFUNCTION 函数名(虚元表)RESULT(结果名)说明部分程序体:具体计算END FUNCTION 函数名如:FUNCTION FACT(N) RESULT(FACT_RESULT) IMPLICIT NONE INTEGER:N,I,FACT_RESULT FACT_RESULT=1 DO I=1,N FACT_RESULT=FACT_RESULT*I ENDDO END FUNCTION FACTPROGRAM MAININTEGER:FACT,SUM=0,IDO I=1,5SUM=SUM+FACT(I)ENDDOPRINT*,SUMEND说明:子程序END语句写法:END FUNCTION 函数名子程序END语句功能:1、函数单位的结束标志 2、将控制返回到主调程序。子程序开始语句的写法RECURSIVEFUNCTION 函数名(虚元表)RESULT(结果名)1、作为函数子程序的第一行(注释行除外)。2、如果函数是递归的,则应以RECURSIVE开头。3、函数名与普通变量名的取法相同,且为全局名,即作用域为整个程序,不得与已有的全局名同名。4、主调程序与被调程序两个单位之间的数据传递:RESULT (结果名):子程序的一个输出结果一般写法:函数名_RESULT,用于保存一个计算结果,称为函数值。且结果名有类型,必须在子程序说明部分说明类型。虚元表:子程序的所有输入,及除函数值之外的其他计算结果的输出。虚元之间用逗号分隔,都要在说明语句中说明类型。如果没有虚元,函数名后是一对空括号。5、虚元的含义:编写子程序时没有具体值(调用时或调用结束后才获得数值),因此只是一个符号,表示输入、输出,名字可随便用户取。6、虚元可以是变量名、数组名、过程名、指针等。7、虚元的可选属性INTENT:INTENT(IN):表示函数开始时,虚元从实元中获得值,作为子程序的输入(不得再改变其值)INTENT(OUT):表示函数结束时,把虚元的值传送给实元,作为子程序的输出(对应的实元不能是表达式)INTENT(INOUT):表示虚元既要从实元中获得值,又要向实元传送值,作为子程序的输入输出。例:REAL,INTENT(IN):X,Y子程序程序体的写法分为说明部分和执行部分。1、说明部分应对程序体内一切变量、数组等实体(包括虚元)作出说明,同时还要说明函数结果变量名,但不可说明函数名。2、执行部分中必须对函数结果名至少赋值一次。外部子例行子程序外部子例行子程序:过程的另一种形式。用户定义,用于完成复杂计算任务,返回一个或多个值,或用于其它数据处理。外部子例行子程序的结构RecursiveSubroutine 子程序名(虚元表)说明部分程序体End Subroutine 子程序名与函数子程序的区别1.没有RESULT关键字。2、虚元:负责子程序的全部输入和全部输出3、无虚元时:SUBROUTINT 子程序名 或 SUBROUTINT 子程序名()4、函数子程序的调用是表达式形式。而子例子程序必须通过CALL语句来调用。 CALL 子程序名(实元表)如:SUBROUTINE FACT(N,FACT_VALUE)IMPLICIT NONEINTEGER,INTENT(IN):NINTEGER,INTENT(OUT):FACT_VALUEINTEGER:IFACT_VALUE=1DO I=1,NFACT_VALUE=FACT_VALUE*IENDDOEND SUBROUTINE FACTPROGRAM MAININTEGER:SUM=0,I,VALUEDO I=1,5CALL FACT(I,VALUE)SUM=SUM+VALUEENDDOPRINT*,SUMEND待留字符型数据基础字符型常量与变量说明 (1)字符常量区分字母大小写 (2)空格为有效字符 (3)字符不受fortran90字符集的限制 (4)单撇号为有效字符时,改写为两个单撇号或双撇号 (5)种别参数用前缀法表示 (6)长度=0字符型常量长度的计算 长度为字符的个数: 起止界不算 两个单撇号或双撇号算一个 空格为有效字符算一个字符型变量的类型说明:1、一般形式:Character (len=n1,kind=n2 ),属性列表: 变量名=初值2、只有长度说明而无种别参数说明时,可采用以下说明: Character(len=7):A Character(7):A Character*7:A3、如若个别说明,可在变量后指明其具体长度:例: character (8): strg, strh, stri*12 4、不说明长度,长度默认为1 5、长度可为整型表达式,但要加括号例: character(2):a,b*(2+3)6、有时可把长度值写成一个星号,表示此处暂不指明其长度,也可理解为长度任意,但要加括号。例: Character(LEN=*):CH,PARA Character(*):CH,PARA Character*(*):CH,PARA Character(2): CH,PARA*(*)使用范围:(1)具有PARAMETER属性的字符常量 Character(*),parameter:para=FORTRAN_90 字符串长度取对应的字符常量的长度。(2)用字符变量作为虚元时,虚元的长度取对应实元的长度 虚元可以和任意长度的实元相结合,有利于提高子程序的通用性。字符子串子串的一般形式为:字符变量名(e1:e2)其中,e1和e2为整型表达式,表示起始和终止位置。 1=e1=e2w,输入的字符不能满足,在右边补足L-w个空格 若LL,在字符变量左边补足w-L个空格输出(右对齐),如上例中B; 若wL,从左边截取w个字符输出,若上例中C。 字符型数组如果具有Dimension属性,就成为字符数组。例: character(3),dimension(4):aA的每个元素的长度均为3A(1)(1:1)表A(1)中的第1个字符用于字符处理的内在函数1.求字符串长度函数 LEN:字符串的长度 例:LEN(ASD) 值5 LEN_TRIM:去掉尾部空格后的长度。 例:LEN _TRIM(ASD ) 值3注意:若参数是数组名,则结果为数组中元素的长度。例:CHARACTER(LEN=5),DIMENSION(1:20):A则 LEN(A)的值是5。2.除去字符串尾部空格函数(TRIM) 例:TRIM(ASD ) 值ASD数组数组不得重复说明 例:INTEGER,DIME

温馨提示

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

评论

0/150

提交评论