Fortran的主要版本及差别

合集下载

1.2FORTRAN语言简介

1.2FORTRAN语言简介

1.2 FORTRAN语言简介
➢ FORTRAN语言简介
1954~57年IBM公司 John Backus 第一套Fortran 编译器(FortranⅠ)高级语言时代,60年代最通 用的计算机语言
1958年,扩充和完善FORTRANⅠ, 推出FORTRAN Ⅱ
1960年,推出FORTRAN Ⅲ,但没有在计算机上 实现
1995年,微软公司在Developer Studio集成开发平 台上推出FORTRAN PowerStation 4.0。引入可视 化编程技术
1.2 FORTRAN语言简介
➢ FORTRAN语言简介
1997年,推出FORTRAN 95,现代语言,增并行 处理功能
1997年,微软和数据设备公司合作推出Digital Visual FORTRAN 5.0,功能强大
1962年,推出了FORTRAN Ⅳ。没有充分考虑兼 容性
1.2 FORTRAN语言简介
➢ FORTRAN语言简介
1966年,推出FORTRAN 66,美国标准,后被 ISO采用
1978年,推出FORTRAN 77,兼容性好,结构化 特征
1991年,推出FORTRAN 90,现代语言,可视化 编程
1.2 FORTRAN语言简介
➢ FORTRAN程序的组成
一个主程序(必须)段和若干个子程序段及 模块组成。
➢ FORTRAN程序书写格式
(1)固定格式 扩展名为.f或.for,每一行至多写一个语句。
(2)自由格式 扩展名为.f90,每一行可写多个语句,每个 语句用“;”隔开。
1.2 FORTRAN语言简介
1.2 FORTRAN语言简介
FORTRAN是英文“Formula Translator”的缩写,译 为“公式翻译器”,它是世界上最早出现的计算机高 级程序设计语言,广泛应用于科学和工程计算领域。

几种Fortran 编译器简介

几种Fortran 编译器简介

几种Fortran 编译器---------------------------------------------------------------------------------------1.CVFCompaq Visual Fortran (CVF), 当今PC平台上功能相当强大与完整的Fortran程序开发工具,还用于Abaqus的开发。

1997年,微软将Fortran PowerStation卖给DEC之后,微软就不再出版Fortran编译器了。

后来DEC并入了Compaq,再后来Compaq又和HP合并了。

现在最新的版本是HP出的Fortran for Windows v6.6,现在HP/Compaq已经不再开发Fortran了,CVF 6.6是最终的版本了,Compaq的Fortran开发小组已经投入Intel旗下,目前Intel已经有Intel Visual Fortran 11.0。

Compaq Visual Fortran 6.6官方的单价也相当昂贵。

Compaq Visual Fortran 6.6 下载:/SoftDown.asp?ID=11937Compaq Visual Fortran 6.6 绿色版下载:/down/10915.htmlCompaq Visual Fortran 6.5 下载:/soft/fortran6.5.rarftp://2006:2006@/36/-002124.rar---------------------------------------------------------------------------------------2. IVFIntel Visual Fortran (IVF)将Compaq Visual Fortran* (CVF) 语言的丰富功能与英特尔代码生成及优化技术结合在一起。

目前Intel已经有Intel Visual Fortran 11.0。

Fortran 百科

Fortran 百科

FORTRAN,亦译为福传,是英文“FORmula TRANslator”的缩写,译为“公式翻译器”,它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。

FORTRAN 语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。

目录FORTRAN开发历史Fortran的版本Fortran的特性Fortran语言的Hello World程序Fortran编译器Fortran程序包Fortran的将来FORTRAN开发历史早在1951年,美国IBM公司约翰·贝克斯(John Backus)针对汇编语言的缺点着手研究开发FORTRAN语言,并于1954年在纽约正式对外发布。

称约翰·贝克斯提出的FORTRAN语言为FORTRANⅠ,FORTRANⅠ虽然功能简单,但它的开创性工作,在社会上引起了极大的反响。

到1957年第一个FORTRAN编译器在IBM704计算机上实现,并首次成功运行了FORTRAN程序。

在1958年,对FORTRANⅠ进行了扩充和完善,引进了子函数等概念,推出了商业化的FORTRANⅡ版本。

之后,FORTRAN语言发展迅速,多种版本相继在其它计算机上实现。

在1962年,推出了FORTRAN Ⅳ。

FORTRAN Ⅳ没有充分考虑兼容性,导致FORTRANⅡ程序不能在FORTRAN Ⅳ系统中运行,使其应用受到了很大限制,这时语言不兼容性问题和影响被突出表现出来。

此前也出现过FORTRAN Ⅲ,但由于存在严重缺陷,没有在计算机上实现。

随着FORTRAN语言版本的不断更新和变化,语言不兼容性问题日益突出,语言标准化工作被提上了日程。

1962年5月,美国标准化协会(简称ANSI)成立相关机构着手进行FORTRAN语言标准化的研究工作,并于1966年正式公布了两个标准文本:美国国家标准FORTRAN(ANSI X3.9-1966)和美国国家标准基本FORTRAN(ANSIX3.10-1966),前者相当于FORTRAN Ⅳ,后者相当于FORTRANⅡ。

fortran用法总结

fortran用法总结

我的Fortran基本用法小结周日, 10/14/2007 - 21:00 — gator一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。

只读到第九章,主要是3~9章,都是最基本的用法(原书共16章)。

这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。

希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。

要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九应该很快的,花一两天就行了。

觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。

外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没得及仔细想,只是按着作者的意思去理解。

所以这份笔记还处于纸上谈兵的层次。

如果有不妥的方,希望大家指正。

谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述1、名词解释Fortran=For mula Tran slator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

ortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

ortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。

以下是77和90的一些格式上的区别。

Fortran基本用法小结

Fortran基本用法小结

【以下文字转载自D_Atmosphere 讨论区】【原文由superjyq 所发表】我的Fortran基本用法小结高级语言和算法组heavensky目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。

只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。

这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。

希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。

要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。

觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。

另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。

所以这份笔记还处于纸上谈兵的层次。

如果有不妥的地方,希望大家指正。

谢谢!文中蓝色的部分是程序代码,!后面的内容为注释。

二、概述1、名词解释Fortran=Formula Translator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

Fortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。

FORTRAN90第一章FORTRAN90概述

FORTRAN90第一章FORTRAN90概述

用类型说明语句定义变量的类型 ,可以改变隐含说 明语句和“I--N”规则的约定,有六种类型语句: INTEGER(整型说明语) REAL (实型说明语句) DOUBLE PRECISION(双精度型) COMPLEX (复型说明语句) LOGICAL(逻辑型说明语句) CHARACTER(字符型说明语句) 例:INTEGER A,K3,MAXW,CL REAL AREA,KEY,MAXL 类型说明语句优先级高于隐含说明语句 ,又高于隐 含规则 说明语句是非执行语句,应出现在所有执行语句前, 隐含说明语句还必须出现在类型说明语句前。
每条READ语句都从新的输入行开始读数。
输入数据类型要正确。 数据的之间用空格或逗号或回车符来分隔。 输入数据只有在按下回车键之后才有效。在上 机操作时,一定要记得在输入数据后按回车。 当输入数据中有 /符号时 ,/后面的输入数据没有 作用;如果/前面输入的数据不够用,其余要输入 的数据已经有值的保持不变,否则,数值(算术)型 与字符型数据取零值 ; 逻辑型数据取真值 ; 输入 多余的数据是没有作用的。 输入的数据,算术型数据必须是与对应的变量有 相同类型的常量 ; 字符型数据 , 当长度不够时以 空格填充 , 当长度超过时截掉多余部分 ; 逻辑型 可用以T或F或.T或.F打头的任意字符串输入。
例:求三个数(5,10,23)的平均值。 PROGRAM TEST ! 计算三个数的平均值 A=5;B=10;C=23 ave=(A+B+C)/3 write(*,*) 'AVE=',ave END PROGRA&
&M TEST !注意续行方法
§1.4 FORTRAN 90字符集 FORTRAN90字符集包括: 1) 大写与小写英文字母

[转载]Fortran程序基本特点及不同版本之间的区别

[转载]Fortran程序基本特点及不同版本之间的区别

[转载]Fortran程序基本特点及不同版本之间的区别原⽂地址:Fortran程序基本特点及不同版本之间的区别作者:caodanping_7141、F77和F90的区别名称:F77固定格式(fixed format),程序代码扩展名:.f或.for,F90⾃由格式(free format),扩展名:.f90格式:F77每⾏前六个字符不写程序代码,可以空着或者1-5字符使⽤数字来标注⾏代码(⽤作格式化输⼊出等),7-72为程序代码编写区,73⾏后被忽略,超过的话可以续⾏,F90每⾏可132字符注释:F77以C,c或*开头的⾏被当成注释;F90以"!"引导注释,也可放在⾏尾续⾏:F77所续⾏的第六个字符是"0"以外的字符,通过⽤+表⽰,F90以&续⾏,放在该⾏末或下⾏初均可变量名:F77⽀持6个字符长,F90⽀持31个字符长常数:F90中PARAMETER可以做形容词,和变量声明同时写在⼀起Real, parameter :: pi=3.1415926关系运算符:F90: == /= > >= < <= (更接近标准的数学符号)F77: .EQ. .NE. .GT. .GE. .LT. .LE.逻辑运算符:.AND. .OR. .NOT. .EQV. .NEQV.变量声明赋值:(1)integer: kind=1,2,4(长整型)F90: integer(kind=2) aInteger(kind=4)::a=15(加上两个冒号可以在定义时就直接赋值)F77: integer*2 b or integer(2) c⽤DATA命令单独赋值(属于声明),data b,c /1, 2.0/Fortran规定变量名以字母IJKLMN六个字母开头的即认为是整型变量(I-N规则),其他字母开头的为实型变量(2)real:kind=4,8(双精度)/real* 8=double precision(1.23E3/1.23D3)F90:real(kind=4) a, F77:real*4 a or real(4) a(3)complex kind=4,8(双精度)F90: complex(kind=4) a a=(3.1,2.5)(4)character len为最⼤长度(26个字母,数字0-9,专⽤字符13个:空格'$()+-*/,=.:)F90: character(len=10) c c=”Hello”, F77: c=’Hello’(5)logical kind=4,2(最少只需要1即可)F90: logical(kind=4) a a=.true.(6)⾃定义类型type:类似于C中的structF90: type::person ……引⽤时变量和元素直接以%区隔,visual fortran可以⽤.来表⽰全局变量全局变量:F77采⽤command来声明全局变量,编译器只提供内存共享⽽不去检查数据类型,使⽤时需要注意定义的是否⼀主程序和主程序中致,⽽F90则提供了module(不是函数,⽤于封装程序模块),可以把全局变量都声明在module中,这样主程序和主程序中就不需要编写重复的程序代码来声明全局变量就不需要编写重复的程序代码来声明全局变量了,函数在需要使⽤时只需要⽤use来调⽤该module_name即可:module module_name...end module还可以把功能上相关的函数放在同⼀个module模块中,程序想要调⽤时use该module才能调⽤,这样⽐较符合模块化的概念,在该module中⽤contains引导函数即可。

Fortran学习总结 - 我不是企鹅的日志 - 网易博客

Fortran学习总结 - 我不是企鹅的日志 - 网易博客

Fortran学习总结- 我不是企鹅的日志- 网易博客Fortran学习总结目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是读彭国伦《Fortran 95 程序设计》的笔记。

二、概述1、名词解释Fortran=Formula Translator/Translation一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。

的确,从一开始,IBM设计的时候就是为了方便数值计算和科学数据处理。

设计强大的数组操作就是为了实现这一目标。

fortran奠定了高级语言发展的基础。

现在Fortran在科研和机械方面应用很广。

2、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

ortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。

以下是77和90的一些格式上的区别。

Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for(1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。

Fortran 90:自由格式(free format),扩展名:.f90(1)以"!"引导注释;(2)每行可132字符,行代码放在每行最前面;(3)以&amp;续行,放在该行末或下行初。

以下都是讨论Fortran 90。

3、Fortran的一些特点,和C的一些不同其实很多,在下面涉及具体方面时可以看到。

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

、Fortran的主要版本及差别按其发展历史,Fortran编译器的版本其实很多。

现在在广泛使用的是Fortran 77和Fortran90。

Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。

鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。

以下是77和90的一些格式上的区别。

Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for (1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入输出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。

Fortran 90:自由格式(free format),扩展名:.f90(1)以"!"引导注释;(2)每行可132字符,行代码放在每行最前面;(3)以&续行,放在该行末或下行初。

以下都是讨论Fortran 90。

3、Fortran的一些特点,和C的一些不同其实很多,在下面涉及具体方面时可以看到。

这里只是大致提一些。

(1)不分大小写(2)每句末尾不必要写分号(3)程序代码命令间的空格没有意义(4)不像C,Fortran不使用{ }(5)数据类型多出了复数和逻辑判断类型。

比如复数类型complex :: a !声明复数的方法。

复数显然方便了科学计算,满足了工程方面的需求a=(1.0,2.0) ! a=1+i(6)多出了乘幂运算(**)。

乘幂除了整数还可以是实数形式。

如开方,开立方a=4.0**0.5,a=8.0**(1.0/3.0)。

(7)数组有一些整体操作的功能;可以方便的对部分元素进行操作(8)有些情况下可以声明大小待定的数组,很实用的功能4、Fortran的基本程序结构先看一看所谓的"Hello Fortran"程序。

program main !程序开始,main是program的名字,完全自定义write(*,*) "Hello" !主程序stop !终止程序end [program[main]] !end用于封装代码,表示代码编写完毕。

[ ]中的内容可省略,下同。

再看一段实用一些的程序,好有点感性认识。

程序用于计算圆柱的表面积,要求输入底面半径和高。

其中展示了Fortran的一些特色用法。

程序摘自维基。

其实是一个叫的网上引用的维基的网页。

推荐去看看!能查到不少有意思的东西。

program cylinder !给主函数起个名字! Calculate the area of a cylinder.!! Declare variables and constants.! constants=pi! variables=radius squared and heightimplicit none ! Require all variables to be explicitly declared !这个一般都是要写上的。

下面会进一步说明。

integer :: ierrcharacter :: ynreal :: radius, height, areareal, parameter :: pi = 3.1415926536 !这是常量的声明方法interactive_loop: do !do循环,Fortran中的循环可以加标签,如do前!面的 interactive_loop就是标签! Prompt the user for radius and height! and read them.write (*,*) 'Enter radius and height.' !屏幕输出read (*,*,iostat=ierr) radius,height !键盘输入。

isotat的值用于判断!输入成功否。

! If radius and height could not be read from input,! then cycle through the loop.if (ierr /= 0) thenwrite(*,*) 'Error, invalid input.'cycle interactive_loop !cycle 相当于C里的continue end if! Compute area. The ** means "raise to a power."area = 2 * pi * (radius**2 + radius*height) ! 指数运算比C方便! Write the input variables (radius, height)! and output (area) to the screen.write (*,'(1x,a7,f6.2,5x,a7,f6.2,5x,a5,f6.2)') & !"&"表示续行。

这里!还显示了格式化输出'radius=',radius,'height=',height,'area=',areayn = ' 'yn_loop: do !内嵌的另一个do循环write(*,*) 'Perform another calculation? y[n]'read(*,'(a1)') ynif (yn=='y' .or. yn=='Y') exit yn_loopif (yn=='n' .or. yn=='N' .or. yn==' ') exit interactive_loop end do yn_loop !结束内嵌do循环end do interactive_loopend program cylinderFortran程序的主要结构就是这样了。

一般还会有些module的部分在主函数前,函数在主函数后。

三、数据类型及基本输入输出1、数据类型,声明及赋初值(1)integer:短整型kind=2, 长整型kind=4integer([kind=]2) :: a=3如果声明成integer:: a,则默认为长整型。

!"::" 在声明并同时赋初值时必须要写上;类型名后面有形容词时也必须有;其他情况可略去!所谓形容词,可以看一下这个。

比如声明常数real,parameter :: pi=3.1415926 。

parameter就是形容词。

(2)real:单精度kind=4(默认),双精度kind=8real([kind=]8) :: a=3.0还有指数的形式,如1E10为单精度,1D10为双精度(3)complex 单精度和双精度complex([kind=]4) b(4)charactercharacter([len=]10) c !len为最大长度(5)logicallogical*2 :: d=.ture. (等价于logical(2)::d=.ture.)(6)自定义类型type:类似于C中的structFortran 77中给变量赋初值常用DATA命令,可同时给多个变量赋初值data a,b,string /1, 2.0, 'fortran'/与C不同的是,Fortran中变量不声明也能使用,即有默认类型(跟implicit命令有关)。

按照默认的规定,以i,j,k,l,m,n开头的变量被定义为integer,其余为real。

取消该设置需在程序声明部分之前加implicit none。

彭国伦建议一般都使用该语句。

另一点关于声明的不同是Fortran有"等价声明":integer a,bequivalence(a,b)使得a,b使用同一块内存。

这样可以节省内存;有时可精简代码。

如:equivalence(很长名字的变量比如三维数组的某个元素,a),之后使用a来编写程序就简洁多了。

2、基本输入输出输入:read(*,*) a !从键盘读入输出:write(*,*) "text" !在屏幕上输出。

Fortran 77用' text'。

Fortran 90!一般" "和' '都可print *,"text" !只能屏幕输出(*,*)完整写为(unit=*,fmt=*)。

其中unit为输入/输出位置,如屏幕,文件等;fmt为格式。

如果这两项都写成*,则按默认的方式进行,即上面描述的。

print后面的*表示按默认格式输出。

四、流程控制1、运算符(1)逻辑运算符== /= > >= < <= !Fortran 90用法.EQ. .NE. .GT. .GE. .LT. .LE. !Fortran 77用法(2)涉及相互关系的集合运算符.AND. .OR. .NOT. .EQV. .NEQV.! 仅.NOT.连接一个表达式,其余左右两边都要有表达式(可以是logical类型的变量)!.EQV.:当两边逻辑运算值相同时为真, .NEQV.:当两边逻辑运算值不同时为真2、IF(1) 基本:if(逻辑判断式) then……end if如果then后面只有一句,可写为if(逻辑判断式) …… !then和end if可省略(2) 多重判断:if(逻辑判断式) then……else if……else if……else……end if(3) 嵌套:if(逻辑判断式) thenif(逻辑判断式) thenif(逻辑判断式) thenelse if(逻辑判断式) then……else……end if !没必要跟C语句多时用{}了,因为有end ifend ifend if(4) 算术判断:program exampleimplicit nonereal cwrite (*,*) "input a number"read (*,*) cif(c) 10,20,30 !10,20和30为行代码,根据c小于/等于/大于0,执行10/20/30行的程序10 write (*,*) "A"goto 40 !goto可实现跳到任意前面或后面的行代码处,但用多了破坏程序结构20 write (*,*) "B"goto 4030 write (*,*) "C"goto 4040 stopend3、SELECT CASE类似于C的switch语句select case(变量)case(数值1) ! 比如case(1:5)代表1<=变量<=5会执行该模块…… !case(1,3,5)代表变量等于1或3或5会执行该模块case(数值2) !括号中数值只能是integer,character或logical型常量,不能是real型……case default……end case4、PAUSE, CONTINUEpause暂停程序执行,按enter可继续执行continue貌似没什么用处,可用作封装程序的标志五、循环1、DOdo counter=初值, 终值, 增/减量 !counter的值从初值到终值按增/减量变化,…… !counter每取一个值对应着一次循环。

相关文档
最新文档