《FORTRAN 95程序设计》学习笔记

上传人:206****923 文档编号:91270886 上传时间:2019-06-27 格式:DOC 页数:16 大小:84.52KB
返回 下载 相关 举报
《FORTRAN 95程序设计》学习笔记_第1页
第1页 / 共16页
《FORTRAN 95程序设计》学习笔记_第2页
第2页 / 共16页
《FORTRAN 95程序设计》学习笔记_第3页
第3页 / 共16页
《FORTRAN 95程序设计》学习笔记_第4页
第4页 / 共16页
《FORTRAN 95程序设计》学习笔记_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《《FORTRAN 95程序设计》学习笔记》由会员分享,可在线阅读,更多相关《《FORTRAN 95程序设计》学习笔记(16页珍藏版)》请在金锄头文库上搜索。

1、Fortran95 程序设计学习笔记by 柳柳FORTRAN 95程序设计学习笔记66RPG gg 目录 FORTRAN 95程序设计学习笔记1基础知识(基础、字符串、FORMAT、隐式、TYPE)1流程与控制(if、select、do)4数组(声明、隐式循环、整体操作、可变数组)5函数与子程序(子程序、函数、全局变量)6MODULE与面向对象(重载操作符、虚函数)9文件相关(OPEN、WRITE、READ)10指针(指向变量、数组、函数)11Visual Fortran 编译器(DLL,VB调用)12数值算法与IMSL(数值算法插件)14常用库函数(数学、数组、零碎、子程序)15基础知识(基

2、础、字符串、FORMAT、隐式、TYPE) 【小玩意】二进制观察器:装在M. Visual StudioDF98bin,有一个Bitviewer,可以观察变量储存方式 【语法】续行:行结尾或行开头使用 & 符号;注释:使用 ! 符号 【语法】数学表达式:+ ;- ;* ;/ ;( ;) ;*乘幂 【语法】程序结束:STOP (Ruby的exit) 【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)n 建议:少用print,尽量用write 【语法】声明n 整型:integer(kind=4) a ;其中kind是使用的bytes数,4 or 2u 其他写法:i

3、nteger*4 a; integer(4) an 浮点:real(kind=4) a ;有效数位6位(12345678存为1.234567E7),如果是kind8则为15位有效数字u 此外:1E10:单精1010,1D10:双精1010n 复数:complex : a=(2,3)u 实部:real(a) ;虚部:imag(a)n 布尔型:Logical,.true. 和 .false. 【语法与函数】字符串:character(20) stringn 注意理解,fortran的弱智字符串就是一个长度不能变的一维的东西,极其猥琐,和Java、Ruby不能相提并论的n string(13:13)

4、 = “a” :对第13个字节的读、存n string(2:3) = “go”n string(6) = “我的妈呀”:从第6个位置开始设置为“我的妈呀”n a = string_a / string_b:用“/”连接两个字符串n 【常用函数】char(num),ichar(char):ASCII码的转换相关功能n 【常用函数】len(string),len_trim(string):长度,去掉尾部空格后的长度n 【常用函数】index(string,key):找key在string首出现的位置n 【常用函数】trim(string):返回去掉尾部空格的字符串(用途不大)n 【函数】repea

5、t(char,int):返回一个重复int次的char串n character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度 【规范格式】FORMAT格式化n e.g.u write (*,100) Au 100 format(I4) 这里是100号标识调用的格式n 参数控制符(前面加数字为重复次数,如4I6或I6。(其中a为一个int)u A5 :输入/出 5个字符 常用功能u I5.4 :输5位整数,最少4位 常用功能u BN,BZ :定义空格为无东西或为0u F5.4,D5.4 :5位浮点数,小数占4位 其中前面一个常用u

6、E5.1E2 :5位浮点,小数占1位,指数占2位u 4X :4个空格 常用功能u / 与 :/为中止本行,为强制不换行 强制不换行常用u Tn,TLn,TRn :移动到第n列 / 左移n列 / 右移n列n Write(*,”(2X,I5)”) a ;一般使用这种方法进行格式化即可,推荐。u 注意,complex要用两个浮点数来输出 IMPLICIT命令(隐式表达) n 默认:I、J、K、L、M、N为整数,其余浮点(不好)n 隐式声明:u implicit integer(A,B,C) : A、B、C开头的自动为整型,无需单独声明u implicit integer(A-F,I,K) :AF、I

7、、K开头的自动为整型u implicit real(M-P) : MP开头自动视为浮点数u implicit none : 无隐式声明,最常用,但个人认为在自己有把握的情况下还是可以自定义一些隐式来方便程序书写 【语法】常数parameter的声明n 方法1:real,parameter : pi=3.14n 方法2:u real piu parameter(pi = 3.14) 【常用功能】类型转换 (real integer)n real (int_a) :返回int_a的浮点数n int(real_a) :返回real_a的整型 【语法】设初值:integer : a=1 【语法】等价声

8、明:equivalence(array(1,1,5) , A)n 两者使用同一块内存,如上,调用A就是调用array(1,1,5),但是调用A比较快 【语法】type,自定义数据类型,可组合integer,real,char等,类似一个只有公开变量的类u type : personu character(20) : nameu integer:ageu end type personn 声明:type(person) : an 使用:a%name,a.name (Ruby:一个全是attr_accessor的class) 【用途不大的函数】kind的使用:select_ind_kind(n):

9、返回记录n位整数所需的kind;select_real_kind(n,e)n位有效,指数e位所需的kind流程与控制(if、select、do) 【语法】if条件分歧:第 16 页 共 16 页u if(逻辑) then 注意,避免浮点数相等,浮点用abs(a-b) .GT. ;= .GE. ; .LT. ;= .LE. ;.and. ;.or. ;.not. 【语法】select case功能u select case (某) 这个某可以是整数和字符,Logicalu case (70:90) 这个case只能用常数u 内容u case(60:69)u 内容u case defaultu 内

10、容u end select 【语法】两个小东西:pause:暂停;stop:退出 【语法】二进制的逻辑运算 iand 和 iorn 举例:a = 2(二进制10);b=4(二进制100);c=iand(a,b) 则c=6 【语法】循环结构u do I=1,5,1 分别是开始,结束,step,亦可do while(条件)u 执行内容u enddo 【流程控制语法】n cycle:执行下次循环 (Ruby:next)n exit:循环中断 (Ruby:break) 【署名的循环】u outdo: do I=1,3u inner: do J=2,4u 内容 署名后可以使用诸如if (.) exit

11、outdo;if(.) cycle inner这种u end do inneru end do outdo 【语法】臭名昭著的:goto 行数数组(声明、隐式循环、整体操作、可变数组) 【语法】数组的声明:Datatype name(size) 其中Datatype是类型也可是自定义的typen 比如:integer a(10) 或 integer , dimension(10) : an 类似声明多维数组:integer a(3,3) 亦可a(0:3 , -3:3)这样自定义某维范围 【诡异东东】隐式循环与赋初值:Data A /1,2,3,4,5/ ;Data A /5*3/ 5个3,不是

12、计算n Data(A(I),I=2,4,2) /2,4/ I=2,4,2隐式循环,起、末、STEP,类似do循环n Integer : a(5) = (/1, (2, I=2,4), 5/) 连续3次2,如果(I, I=2,4)则是2,3,4n Write隐式循环:write(*,”(I3,I3,/I3,I3)”)(m(r,c),c=1,2),r=1,2) 连续输出m(1,1), m(2,1), m(1,2), m(2,2)n 初始化统一赋值:ingeter : a(5) = 5 ;相当于a(1)=a(2)=.=a(5) = 5 【语法】数组整体操作:n a = 5 ;将左右值设置为5n a

13、= (/1,2,3/);重设数值,大小要相同n a = b;同位置的这是为相等数值。注意,不是地址连接,是赋值!n a = b + c;a = b c;a = b * c ;a = b / c;a = sin(b) :也是对位置整体的操作 【技巧】其他数组操作:n a(3:5) = 5 ; a(3: ) = 5 ;a(1:3) = b(4:6);a(:,:)=b(:,:,1) 如a(1-5,1-5)=b(1-5,1-5,1)n a(1:10) = a(10:1:-1) 类隐式循环翻转a。注意这里的操作过程,先寄存右式,再赋值左边 【语法】WHEREu where (a3) 对所有a5)这样的东

14、西u b = 2u end where 【语法】FORALL:使用方法forall(范围1,范围2条件)u forall (I=1:5,J=1:5,a(I,J)/=0) a(I,J) = 1/a(I,J)u 相当于:do I=1,5 ;do j=1,5; if a(I,J) /=0 【内存细节】数组保存:假设一个A(3,3),则内存排列:n A(1,1) = A(2,1) = A(3,1) = A(1,2) = A(2,2) = A(3,2) = A(1,3) = A(2,3) = A(3,3)。注意,为了使用告诉cache,应尽量使用编号相近的内容,选用内存相近的内容。所以integer:a(2,2)=(/1,2,3,4/)就是a(1,1)=1;a(2,1)=2;a(1,2)=3;a(2,2)=4,按内存分配4个东西。 【语法】可变数组n 声明: integer,allocatable : a( : ) allocatable表示可变数组;a( : )表示可变一维数组;多维的可以a(4

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号