FORTRAN学习中的一些小心得

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FORTRAN 心得

第一部分:一些小心得

1Fortran不区分大小写

2 Fortran有5种基本数据类型,integer,real, character, logical, complex

3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用::

4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用real*8或real(8)

5 FORTRAN中FREE与FIXED两种格式do循环的区别:

Fortran 95使用end do来结束循环。

Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。

Fortran 77中,经常会使用CONTINUE这个命令来结束循环。因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。

6 循环的流程控制:

循环中的cycle命令相当于c++里的continue命令,用于结束一次循环

循环中的exit命令好比c里面的break,用于结束循环

7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO语句

7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。

8 fortran77中只能用单引号。(还有疑问,因为fixed format能用双引号)

9 逻辑运算符

== /= > >= < <= !Fortran90用法

.EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法

9 PAUSE,CONTINUE,STOP

pause 暂停程序执行,按enter可继续执行

continue 貌似没什么用处,可用作封装程序的标志

STOP 命令用来结束程序,要谨慎使用

10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran 的数组元素之间不能用空格。

11 数组的声明:

Fortran 77中数组的声明,必须使用DIMENSION命令

Integer a; !先声明a是整型

Dimension a(10) !再声明a是大小为10的数组

Fortran 95中可以用简单的方法:

Integer a(10) !最简单的方法

Integer,dimension(10):: a !另一种方法

12 数组的赋值:

Fortran 77中数组的声明,可以使用DATA命令或隐含式循环来赋初值;

Fortran 95中可以直接设置初值;如:integer ::a(5)=(/1,2,3,4,5/);此时,括号和除号之间不能有空格;

13 与C不同,Fortran数组索引值默认从1开始,而且可以在声明时改变该规则,如

integer a(-3:1) !索引值为-3,-2,-1 ,0,1

13 数组在内存中的存放顺序也与C不同(正好相反),如a(2,2)在内存中的存放顺序为a(1,1),a(2,1),a(1,2),a(2,2);

原则是放低维的元素,再放高维的元素,此规则称为column major

矩阵输出时也是按列输出。。

14 Fortran的特色:隐含式循环

15 a,b都为数组,则可以这样用a=sin(b),(内部函数都可以这样用)

16 数组专用:

where命令形式上类似于if,但只用于设置数组where.....elsewhere...elsewhere...endwhere (没有then)

FORALL是Fortran95添加的功能,只能用于数组操作

forall可以嵌套使用,还可以在forall中使用where,但where中不能使用forall 15 Fortran中传递参数的原理与c++不同,Fortran中是传址调用,就是传递时用参数和子程序接受时用的参数使用一个地址,尽管命名可以不同。

16 调用自定义函数前需要做声明,调用子程序则不需要。

17 Module中有函数时必须在contains命令之后

18 全局变量(有的书上叫无名公用区、有名公用区)

全局变量用来定义一块共享的内存空间;

全局变量不能声明成常量

全局变量不能直接使用data命令赋初值,要在block data模块中使用data来设置初值。

COMMON语句是说明语句,因此它应该出现在相应程序单元中的所有可执行语句之前。

取用全局变量时,是根据它们的相对位置关系来作对应,而不是根据变量名称来对应。

19 传递参数与使用全局变量都可以在不同程序之间共享数据,那什么时候该使用参数,还有什么时候该使用全局变量呢?

简单地说,当需要共享的变量不多,而且只有少数几个程序需要使用这些数据时,那就使用参数,

需要共享大笔数据,或是有很多不同程序都需要使用这些数据时,就使用全局变量。20 INCLUDE命令

1 INCLUDE命令可以写在任何地方,它只是单纯地用来插入一个文件的内容。

2 有时候也会应用在声明全局变量,先把声明全局变量的程序代码编写在某个文件中,需

要使用全局变量的函数再去INCLUDE这个文件,这样可以减少程序代码。

第二部分:格式化输入输出

1 表控输入输出(即表控格式输入输出)

1 注意点:不同计算机系统对表控格式输出的规定不同,例如对一个整型数,有的系

统规定输出占13列,有的系统规定输出占10列,也有的系统不规定固定的列数而按照数据的实际长度输出,再用一个空格作分隔符。

2 如果在输入数据行中出现”/”号,表示对READ语句的输入到此结束,未被赋值的变

相关文档
最新文档