1 / 19

Fortran

Fortran. 5110379083 龚立航. 目录. 历史 特性 一些语句简介 和 C 语言的比较. 历史. 1957 年, IBM 公司开发出第一套 FORTRAN 语言 , 在 IBM704 计算机上 运作 。 1966 年,美国标准化协会制定了 Fortran66 和 Fortran66 标准 。这时 Fortran 语言还不是结构化的程序设计语言 。

Download Presentation

Fortran

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Fortran 5110379083 龚立航

  2. 目录 • 历史 • 特性 • 一些语句简介 • 和C语言的比较

  3. 历史 • 1957年,IBM公司开发出第一套FORTRAN语言,在IBM704计算机上运作。 • 1966年,美国标准化协会制定了Fortran66和Fortran66标准。这时Fortran语言还不是结构化的程序设计语言。 • 1976年,美国标准化协会重新对Fortran66进行了评估,公布了新的Fortran标准,也就是Fortran 77。Fortran 77是具有结构化特性的编程语言。Fortran77在短时间内取得了巨大的成功,广泛地应用于科学和工程计算,几乎统治了数值计算领域。 • 1991年发布的Fortran 90大幅改进了旧版Fortran的型式,加入了对象导向的观念与提供指针,并同时加强数组的功能。 • 后来又陆续推出Fortran 95、Fortran 2003等更新版本。

  4. 约翰·贝克斯 • FORTRAN的发明小组组长 • BNF • 用于表示上下文无关文法的语言,上下文无关文法描述了一类形式语言。

  5. 特性 • Fortran语言的最大特性是接近数学公式的自然描述,在计算机里具有很高的执行效率。 • 易学,语法严谨。 • 可以直接对矩阵和复数进行运算,这点MATLAB有继承。 • 自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。 • 很多专用的大型数值运算计算机针对Fortran做了优化。 • 广泛地应用于并行计算和高性能计算领域。 • Fortran 90,Fortran 95,Fortran 2003的相继推出使Fortran语言具备了现代高级编程语言的一些特性。 • 其矩阵元素在记忆空间储存顺序是采用列优先(Column first),MATLAB也承袭这点,目前最多使用的C语言则采用行优先(Row first)。

  6. 行优先顺序 • 将数组元素按行向量排列,第i+1个行向量紧接在第i个行向量后面。 • 例: 二维数组Amn的按行优先存储的线性序列为:a11,a12,…,a1n,a21,a22,…,a2n,……,am1,am2,…,amn • 列优先顺序 • 将数组元素按列向量排列,第i+1个列向量紧接在第i个列向量后面。 • 例: 二维数组Amn的按列优先存储的线性序列为:a11,a21,…,am1,a12,a22,…,am2,……,a1n,a2n,…,amn

  7. 输出语句 一般格式: print ﹡,〈输出表列〉 write (﹡,﹡)〈输出表列〉 例1: print ﹡,56.8,125 或 write (﹡,﹡) 56.8,125 例2: print ﹡,a, b, c 或 write (﹡,﹡) a, b, c

  8. 输出语句 • 每个整数占12列,数据打印在右端,左补空格。 例:print *,123,-1128 输出结果: ︺︺︺︺︺︺︺︺123︺︺︺︺︺︺︺-1128 • 每个实数占16列,数据打印在右端,左补空格。 例:print *,15.4,-321.45 输出结果: ︺︺︺︺︺︺15.400000︺︺︺︺︺-321.450000

  9. C语言和Fortran语言的差异 • 复数运算的速度 • 程序参数与字串 • 内存的动态管理 • 多维阵列的处理 • 函数调用与参数传递

  10. 复数运算的速度 • 复数是 Fortran 的基本数据类型之一 • C 可以由 struct的定义,达到复数四则运算的目的,但却很可能牺牲了程序效能,或者是程序写起来相当繁杂降低可读性

  11. 程序参数与字串 C 程序可以有参数串列 int main(intargc, char **argv) { int a, b, c; a = atoi(argv[1]); b = atoi(argv[2]); c = atoi(argv[3]); } 而程序执行时,参数就是这样传入: a.out 12 15 18

  12. 程序参数与字串 Fortran 要传入任何参数,只能透过对话的方式: integer a, b, c c ------------------------------------ write(*,*) ''please input integer a:'' read(*,*) a write(*,*) ''please input integer b:'' read(*,*) b write(*,*) ''please input integer c:'' read(*,*) c c ------------------------------------ end

  13. 内存的动态管理 C 可以动态分配存储空间给任何数据类型,而Fortran 却不行 float *c_function(intcnt) { float *a; a = malloc(sizeof(float) * cnt); return a; }

  14. 多维阵列的处理 • C语言是行优先 • Fortran是列优先

  15. 函数调用与参数传递 C 的函数调用就只有一种方式,函数可以传入参数,也可以返回值,例如: void c_function1(int a, float *b) { ........ } int c_function2(int a, float *b) { int r; ........ return r; }

  16. 函数调用与参数传递 函数有两种,一为 subroutine,一为 function。subroutine不会有传回值,但 function 有传回值。 subroutine f_function1(a, b) integer a real b ........ end integer function f_function2(a, b) integer a real b ........ f_function2 = .... end

  17. 函数调用与参数传递  Fortran 的 function 还要更特殊一点,当程序要使用 f_function2 时,必须先申明:integer f_function2 program fout integer a, r, f_function2 real b c ----------------------------------- call f_function(a, b) r = f_function2(a, b)

  18. 谢谢观看

More Related