Fortran 95学习笔记.doc_第1页
Fortran 95学习笔记.doc_第2页
Fortran 95学习笔记.doc_第3页
Fortran 95学习笔记.doc_第4页
Fortran 95学习笔记.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

Fortran 95 变量名称的取名策略:变量的名字中可以使用的字符集包括英文的26个字母、09这10个数字以及下划线“_”,不过前缀必须是英文字母。变量名称的长度限制随着各家编译器的不同而不同,Fortran 标准规定最少要支持到6个字符,Fortran90则最少要支持到31个字符 ImplicitFortran 标准中有一项不太好的功能,它的变量不一定要经过程序声明才能使用,编译器会根据变量的第一个字母来自东决定这个变量的类型。第一个字母为I、J、K、L、M、N的变量会被视为整数类型,其他的变量则会被当成浮点数来使用。Implicit命令的功能是用来设置“默认类型”。所谓的默认类型,是指Fortran不经过声明,由第一个字母来决定变量类型。可以经过Implicit描述来决定哪些字母开头的变量会自动使用某种类型Implicit integer (A,B,C) !A、B、C开头的都被视为整型数Implicit integer(A-F,I,K) !A到F及I、K开头的变量都视为整型数Implicit real(M-P) !M到P开头的变量都视为浮点数Implicit none !关闭默认类型功能,所有变量都要事先声明 常数的声明方法(Parameter)Program exImplicit noneReal :piParameter(pi = 3.14129)Write(*,”(F4.2)”) sin(pi/6)end 在Fortran90里,Parameter可以作为形容词,和变量的声明同时写在一起Real, parameter :pi=3.14159 !这里pi前面的冒号不能省,和上面代码不同(上面的可以省略)设置变量的初值变量内容并不一定要在程序执行时才设置,可以在声明时同时给予初值。在Fortran90偶那个,在设置变量初值时,直接把数值写在声明的变量后面就行了。使用这个方法来设置初值是,不能省略声明中间的那两个冒号(Fortran90)在fortran77中则要使用Data命令设置初值Fortran 90 Fortran 77 program ex90implicit noneinteger :a=1real :b=2.0complex :c=(1.0,2.0)character (len=20) :str=Hello Acuzio!write (*,*) a,b,c,strend program ex77implicit noneinteger areal bcomplex ccharacter (len=20) strdata a,b,c,str/1,2.0,(1.0,2.0),Hello /write (*,*) a,b,c,strend 等价声明(equivalence)把两个以上的变量,声明它们使用同一个内存地址,就是“等价声明”。使用同一个内存位置的变量,只要改变其中一个变量,就会同时改变其他变量的数值Integer a,bEquivalence(a,b) Fortran 90 的自定义数据类型使用关键字:typeType :person Character(len=30) :name Integer :age Integer :length Integer :weightEnd type person Type(person) :a !声明一个person类型的变量a%name !引用person中的name Kind的使用Kind描述如果搭配上一些Fortran90的库函数,可以增加程序代码的“跨平台”能力Fortran 90提供库函数来判断所要记录的数值值域范围所需要的kind值Selected_int_kind(n) : 返回如果想要记录n位整数时,所应声明的kind.返回-1时,表示无法提供所想要的值域范围Selected_real_kind(n,e) : 返回如果想要能够记录具有N位有效位数、指数达到e位的浮点数所需要的kind值。返回-1表示无法满足所要求的有效位数、返回-2表示无法满足所要求的指数范围、返回-3表示两者都无法满足IF基本用法If(逻辑判断式) thenEnd if If(逻辑判断式) thenElseEnd if 逻辑运算符:Fortran 90 Fortran 77 = 判断是否“相等” .eq. 判断是否“等于” /= 判断是否“不相等” .ne. 判断是否“不等于” 判断是否“大于” .gt. 判断是否“大于” = 判断是否“大于或等于” .ge. 判断是否“大于或等于” 判断是否“小于” .lt. 判断是否“小于” e)Write(*,*) “Weight”Read(*,*) guessEnd do 循环控制:Cycle和exitCycle 命令可以略过循环的程序模块中,在cycle命令后面的所有程序代码,直接跳回循环的开头来进行下一次循环Exit 功能:可以直接“跳出”一个正在运行的循环署名循环循环还可以取“名字”,这个用途是可以在编写循环是能明白地直到End do这个描述的位置是否正确,尤其是在多层循环当中。署名的循环也可以配合Cycle、exit来使用。数组(Array)数组的声明方法:Datatype name(size)赋初值:integer A(5)Data a /1,2,3,4,5/ Integer a(5)Data a /5*3/ !5个3 Integer A(5)Integer iData(A(i),i=2,4) /2,3,4/!这是一个隐含式循环,I会从2增加到4,依照顺序到后面取数字。初值设定结果为A(2)=2、A(3)=3、A(4)=4,A(1)和A(5)没有设定 Fortran 90隐含式循环的功能可以更强大Integer :a(5)=(/(I,I=1,5)/) !设置结果:a(1)=1,a(2)=2,a(3)=3,a(4)=4,a(5)=5 WhereWhere是Fortran95添加的功能,它也是用来取出部分数组内容进行设置ForallForall是fortran95添加的功能。间断地说,它也可以看出是一种使用隐含循环来使用数组的方法,不过它的功能可以做得更强大。Integer iInteger :a(5)Forall(i=1:5)A(1)=5End forall Forall详细语法为Forall(triplet1,triplet2,triplet3,mask)End forall其中mask用来做条件判断Fortran90 可以声明可变大小数组Integer,allocatable :a(:) !声明一个可变大小的一位数组Integer :studentsRead(*,*) studentsAllocate(a(students) !配置内存空间 计算机的内存是有限的,当然也就不能无限制地去要求空间来使用。所以allocate命令在内存满载是,有可能会要求不到使用空间。Allocate命令中可以加上stat的文本框得知内存配置是否成功Allocate(a(100),stat=err) !err是事先声明号的整型变量,做allocate这个动作时会经有stat这个叙述传给err一个数值,如果err等于0则表示allocate数组成功,而如果err不等于0则表示allocate数组失败Deallocate(a) 表示删除分配的内存跟allocate相关的函数还有allocated,它用来检查一个可变大小的矩阵是否已经配置内存使用,他会返回一个逻辑值 If(.not. allocated(a)thenAllocate(a(5)End if 函数子程序(subroutine)的使用子程序代码以subroutine开头,它同样要取一个名字,以end或end subroutine来结束。严格地讲,end subroutine后还可以再接上这个子程序的名字program eximplicit noneinteger :a=1integer :b=2call add(a,b)end subroutine add(first,second)implicit noneinteger :first,secondwrite(*,*) first+secondreturnend 函数的调用program eximplicit nonereal :a=5,b=4real,external :add !声明add是函数而不是变量!调用函数add,调用函数不必使用call命令write(*,*) add(a,b)end function add(a,b)implicit nonereal :a,breal :addadd =a+breturn end 全局变量Common是fortran77使用“全局变量”的方法,它用来定义一块共享的内存空间program eximplicit noneinteger :a,bcommon a,b !定义a,b是全局变量中的第1及第2个变量a=1b=2call showCommon()end subroutine showCommon()implicit noneinteger :num1,num2common num1,num2 !定义num1,num2是全局变量中的第1及第2个变量write(*,*) num1,num2return end Block data关于common还有最后要介绍的就是设置初值的方法,common变量不能直接在子程序或主程序中使用data来设置初值,要在block data程序模块中使用data命令来设置初值program eximplicit noneinteger :a,bcommon a,b !a,b放在不署名的全局变量空间中integer :c,dcommon /group1/c,d !c,d放在group1的全局变量空间中integer :e,fcommon /group2/e,f !e,f放在group2的全局变量空间中 write (*,(6I4) a,b,c,d,e,fend block dataimplicit noneinteger a,bcommon a,b !a,b放在不署名的全局变量空间中data a,b /1,2/ !设置a,b的初值integer c,dcommon /group1/c,d !c,d放在group1的全局变量空间中data c,d /3,4/ !设置c,d的初值integer e,fcommon /group2/e,f !e,f放在group2的全局变量空间中data e,f /5,6/ !设置e,f的初值end block data 变量的生命周期在声明中加入save 可以拯救这些变量、增加变量的生命周期、保留住所保存的数据。这些变量可以在程序执行中永久记忆住上一次函数调用时所被设置的数值program eximplicit nonecall sub()call sub()call sub()end subroutine sub()implicit noneinteger :count = 1save count !赋值count变量会永远活着,不会忘记它的内容write(*,*) countcount = count + 1return end 在Fortran 90 中,可以把save跟声明写作同一行Integer ,save :count=1传递函数传递参数时,除了传递数字、字符等等数据之外,还可以把一个函数名称当成参数传送出去program eximplicit nonereal,external :func !声明func是个自定义函数real,intrinsic :sin !声明sin是库函数 call ExecFunc(f

温馨提示

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

评论

0/150

提交评论