FORTRAN 95 语法速查
fortran95的使用方法5
第14章固有过程固然,我们已经能够做到运用FORTRAN 95来描述任何的计算任务,因为FORTRAN 95所提供的数据类型,固有运算,派生类型,自定义运算,以及构造函数与子例行程序的方法,都足以使得我们应付任何的计算问题。
不过FORTRAN 95标准还提供了大量的科学计算的常规计算与函数,都可以作为固有过程直接使用,而不需要我们自己来编写源码。
这就好像对于一个汽车装配师,除了给他提供螺栓,轴承之类的标准零件,还给他提供更高层次的标准配件,例如各种型号的发动机,电机之类。
因此熟练掌握固有过程,将给我们带来如虎添翼的感觉。
FORTRAN 95把固有过程作为标准来提出,就意味着任何的FORTRAN 95的编译器实现版本,都必须能够提供它们:115个固有过程,其中包括109个固有函数和6个固有子例行程序。
当然不排除很多的编译器还提供额外的固有过程。
正是由于固有过程是属于FORTRAN 95的标准内容,因此和固有运算,例如+,一样,总是“随叫随到”,无论在哪个程序单位内部,只要使用某个固有过程的名称,就等于调用了该固有过程。
不过,如果它的名称被用户定义的函数或子例行程序所“侵占”,那么在下面的情况下,被调用的将是用户自定义的函数或子例行程序而不是固有过程:●该自定义函数或子例行程序的界面是显式的;●该自定义函数或子例行程序出现在EXTERNAL语句当中;●该自定义函数属于语句函数。
当然上述的名称被侵权的有效范围只是该自定义函数或子例行程序的作用域。
相应的,固有过程也就只能在下面的情形下夺回被侵占的名称:●不存在使用该名称的语句函数;●它的名称出现在INTRINSIC语句当中;●相应的用户定义的过程的界面是隐式的。
例如在一个模块或一个内部过程里面,由于它的界面是显式的,那么固有过程的名称就能够被侵占,除非固有过程的名称出现在一个有效的INTRINSIC语句当中。
下面我们主要讨论固有过程的按照功能的分类,以及每个种类的固有过程所能够完成的计算任务。
fortran95的使用方法4
第13章过程及其通讯如果说一个语句可以看成是一条指令,那么在FORTRAN 95语言里,一个具有一定结构的计算任务可以对应的最小程序单位,就是一个过程。
从专致于科学计算的初衷出发,FORTRAN在语言的结构层面上,可以认为是面向过程的一种语言,尽管在编程语言流行面向对象的今天,面向过程显得有点落伍,但却有效地适用于描述计算任务,当然随着现代技术对于计算的要求越来越复杂与庞大,FORTRAN也不是一味地守旧,可以预计FORTRAN的下一个版本,就会具有适应大型软件工程的要求的面向对象的语言特性。
FORTRAN 95语言作为一种语言的主要特点,可以说就体现在它的过程这个主要的程序结构上。
而从我们程序编写者的角度来看,能否把一个完整的算法转写成一个完整的程序,关键也就在于能否构造出一些恰当的过程来作为程序的基本单位。
特别是对于大型的FORTRAN 95程序,需要把它分解为好几百个过程是很常见的,这时如何恰当地使用过程来构建整个程序,可以说是编写程序最主要的工作。
因此如何构建过程,如何根据需求运用过程,然后在不同的过程之间建立必要的通讯,是值得我们非常仔细地加以讨论的。
本章的主要任务即在于此。
13.1 过程的分类与性质由于过程具有多方面的功能与属性,因此对于过程的分类可以有多种方式。
下面我们首先讨论过程的各种分类方式及其相应的分类意义,然后我们讨论有关过程引用的要点与相应概念。
13.1.1 过程的分类过程可以有几个不同的分类方式,每种分类方式反映了过程的某个方面的特性。
下面分别予以讨论。
从形式上根据调用的方式的不同,FORTRAN的过程分为两类:●函数;函数返回一个可以供表达式使用的值。
因此函数的调用总是作为一个表达式的算元,函数的值也就是相应表达式算元的取值。
函数调用时直接使用函数的名称和它的变量,或者作为一个自定义运算,它返回值之后,它的功能就算完成,不对程序产生后效,当然,FORTRAN 标准也不绝对禁止使用产生一定后效的函数。
第1章 Fortran95概述
√
四、Fortran95编译环境与上机步骤
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
三、Fortran语言特点、程序设计引例(看书)
【例1-1】输入三个数据,计算它们的算数平均值 和几何平均值。
分析:假设用a,b,c分别表示三个数,在数学 上,要计算这三个数的算数平均值和几何平均值, 采用以下公式:
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
一、程序设计、程序设计语言
【例1-1】输入三个数据,计算它们的算数平均值 和几何平均值。
分析:假设用a,b,c分别表示三个数,在数学 上,要计算这三个数的算数平均值和几何平均值, 采用以下公式:
算术平均值 = a + b + c 3
几何平均值 = 3 a × b × c
算法设计是程序设计的主要步骤。算法是指为 解决给定问题而需要计算机去一步一步执行的有穷 操作过程的描述。
一个算法必须具有以下特征: (1)有穷性 (2)确定性 (3)可执行性 (4)数据输入 (5)数据输出
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
一、程序设计、程序设计语言
从根本上讲,程序就是用计算机语言描述的算
力和对基础知识的良好掌握。
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
一、程序设计、程序设计语言
程序的处理对象是数据,每个数据都有一定的 特性和关联,因此为了更好的处理和操作,要研究 数据,对数据进行有规律的组织和构造。在算法设 计中,数据的组织和构造都有其基本方式和规律, 这种组织和构造方式称为数据结构。
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
一、程序设计、程序设计语言
Fortran95简介-全文版
Fortran95简介-全文版Fortran95簡介-全文版By陳鯨太FORTRAN的演進FORTRAN的起源,要追溯到1954年IBM公司的一項計畫。
由JOHN BACKUS 領導的一個小組,嘗試著在IBM 704電腦上面發展一套程式,它可以把使用接近數學語言的文字,翻譯成機械語言。
這個計畫在剛開始並不被大家看好,但他們在1957年交出了成果,也就是第一套FORTRAN編譯器,FORTRAN語言也就因此誕生了。
FORTRAN語言的執行效率普遍的令各界滿意,它證明了這項計畫的可行性,也成為第一個被廣泛使用的高階語言。
FORTRAN的名字來自於英文的FORMULA TRANSLATOR這兩個字,而這兩個字恰是數學公式翻譯器的意思。
舊版的FORTRAN77是在1978年由美國國家標準局(ANSI)所正式公布的,之後改版有1992年提出的FORTRAN90以及1997年的FORTRAN95,本文是為了FORTRAN 95所撰寫。
編譯器簡介1、VISUAL FORTRANVISUAL FORTRAN一開始是起源於MICROSOFT的FORTRAN POWERSTATION 4.0,這套工具後來賣給DIGITAL公司來繼續發展,下一個版本稱為DIGITAL VISUAL FORTRAN 5.0,DIGITAL後來被COMPAQ合併,所以接下來的6.0及6.5版就稱為COMPAQ VISUAL FORTRAN。
而COMPAQ目前又跟HP合併,也許下一個版本會稱為HP VISUAL FORTRAN。
VISUAL FORTRAN被整合在一個叫作MICROSOFT VISUAL STUDIO的圖形介面開發環境中,VISUAL STUDIO提供一個統一的使用介面,這個介面包括文書編輯功能,PROJECT的管理、除錯工具等等,所以在使用上其實跟上學期的VISUAL C++滿類似的,同學們上課用過VISUAL C++,對VISUAL 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的一些格式上的区别。
最新《FORTRAN95程序设计》学习笔记资料
《FORTRAN 95 程序设计》学习笔记66RPG gg★ 目录★《FORTRAN 95 程序设计》学习笔记 (1)基础知识(基础、字符串、FORMAT 、隐式、TYPE) (1)流程与控制(if 、select、do) (4)数组(声明、隐式循环、整体操作、可变数组) (5)函数与子程序(子程序、函数、全局变量) (6)MODULE 与面向对象(重载操作符、虚函数) (9)文件相关(OPEN 、WRITE 、READ) (10)指针(指向变量、数组、函数) (11)Visual Fortran 编译器(DLL ,VB 调用) (12)数值算法与IMSL (数值算法插件) (14)常用库函数(数学、数组、零碎、子程序) (15)基础知识(基础、字符串、FORMAT 、隐式、TYPE)★ 【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin ,有一个Bitviewer ,可以观察变量储存方式★ 【语法】续行:行结尾或行开头使用& 符号;注释:使用! 符号★ 【语法】数学表达式:+ ;- ;* ;/ ;(;);** 乘幂★ 【语法】程序结束:STOP (Ruby 的exit)★ 【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)建议:少用print ,尽量用write★ 【语法】声明整型:integer(kind=4) a ;其中kind 是使用的bytes 数, 4 or 2其他写法:integer*4 a; integer(4) a浮点:real(kind=4) a ;有效数位 6 位(12345678 存为 1.234567E7 ),如果是kind8 则为15 位有效数字此外:1E10:单精10X0, 1D10:双精10X0复数:complex :: a=(2,3)实部:real(a) ;虚部:imag(a)布尔型:Logical , .true. 和.false.★ 【语法与函数】字符串:character(20) string注意理解, fortran 的弱智字符串就是一个长度不能变的一维的东西, 极其猥琐, 和Java、Ruby 不能相提并论的string(13:13) = a” :对第13个字节的读、存string(2:3) = “go”string(6) = “我的妈呀”:从第6 个位置开始设置为“我的妈呀”a = string_a II string_b :用"〃”连接两个字符串【常用函数】char(num) , ichar(char):ASCII 码的转换相关功能【常用函数】len(string) , len_trim(string) :长度,去掉尾部空格后的长度【常用函数】index(string,key) :找key 在string 首出现的位置【常用函数】trim(string) :返回去掉尾部空格的字符串(用途不大)【函数】repeat(char,int):返回一个重复int次的char串character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度★ 【规范格式】FORMA T 格式化e.g.write (*,100) A100 format(I4) 这里是100 号标识调用的格式参数控制符(前面加数字为重复次数,如416或<a>l6。
FORTRAN95程序设计实验
FORTRAN95程序设计实验FORTRAN95的基本语法包括变量定义、注释、循环和条件判断等。
在FORTRAN95中,变量可以通过关键字"INTEGER"、"REAL"和"CHARACTER"等进行定义。
例如,以下语句定义了一个整型变量A和一个浮点型变量B:INTEGER::AREAL::B注释可以通过用一个感叹号(!)开头进行标识。
例如:!这是一个注释循环可以使用关键字"DO"和"ENDDO"来实现。
例如,以下代码展示了一个简单的循环,计算了1到10的和:INTEGER::I,SUMSUM=0DOI=1,10SUM=SUM+IENDDO条件判断可以使用关键字"IF"、"THEN"、"ELSE"和"ENDIF"来实现。
例如,以下代码展示了一个简单的条件判断,判断一个数是否为正数:INTEGER::NUMREAD(*,*)NUMIF(NUM>0)THENPRINT*,"该数为正数"ELSEPRINT*,"该数为非正数"ENDIF在FORTRAN95中,还有其他的语法和特点,如数组、函数、子程序等。
下面的实例将展示如何使用FORTRAN95编写一个计算圆面积和周长的程序。
PROGRAM CircleREAL :: PI, R, Area, CircumferencePRINT*,"请输入半径:"READ(*,*)RArea = PI * R**2Circumference = 2 * PI * RPRINT *, "圆的面积为:", AreaPRINT *, "圆的周长为:", CircumferenceEND PROGRAM Circle以上程序首先定义了一个实数变量PI、半径R、面积Area和周长Circumference。
FORTRAN95第09章-字符串
常用字符函数使用 例9.1 输出一个由英文字母构成的字符串,把字符串中所有小写字母转换 为大写字母并输出。 program ex901 implicit none character*80 strl,str2 integer k,l,i read(*,'(a)')strl str2=strl k=len(str2) l=ichar("a")-ichar(“A") do i=1,k if(str2(i:i)>="a".and.str2(i:i)<=“z")then str2(i:i)=char(ichar(str2(i:i))-l) end if end do write(*,'(4a10)')"strl=",strl,"str2=",str2 end 程序执行示例: ABcdEfG↙则显示: strl= AbcdEfG str2=ABCDEFG
2015-6-11 14
! 判断不是回文的相应字符是空格还是字符的函数 function char_blank(ch) result(ch_result) character(len=4)::ch_result character(len=1),intent(in)::ch if(ch==' ')then ch_result="空格" else ch_result=ch end if end function char_blank 程序执行示例: 输入一个字符串: ASDSA ASDSA是回文串 输入一个字符串: 2fghhgf2 2fghhgf2是回文串 输入一个字符串: DFGA FD DFGA FD不是回文串 字符串左第 3个字符是G 字符串右第 3个字符是空格 2015-6-11
FORTRAN95第十章 排序、查找算法
给定值与处于顺序表“中间位置”上的元素的关键字进行比较键字则在表的后半部分继续进行二 分查找。否则在表的前半部分继续进行二分查找, 如此进行下去直 至找到满足条件的元素,或当前查找区为空。
10.1.4 直接插入排序 直接插入排序的方法是将待排记录分成两部分,初始第
一部分只含1个记录,在排序进程中把第二部分的全部记 录逐步插入到第一部分,并使该部分每次插入记录后是有 序的。直接插入排序算法步骤:
(1)将n个待排的记录数据存一维数组A中,默认A(1)为第 一部分的记录,2=>I;
(2)若I<=n, 则第二部分的一个记录A(I)与第一部分记 录进行比较, 找出在第一部分插入这个记录的位置,然后 将该位置上原来的记录及其后面所有的记录顺序后移一 个位置,在空出的位置上插入这个记录;若I>n (表示把 第二部分的记录全部插入到第一部分) ,则结束排序;
10.1.2 冒泡排序 冒泡排序是通过相邻两个排序记录的关键字的比
较,按一定次序互换逐步实现有序排序。 冒泡排序的实现过程是:第一次冒泡排序,首先将第
一个记录的关键字和第二个记录的关键字进行比较, 若不满足顺序的要求,则将两个记录进行交换,然
后比较第二个记录和第三个记录的关键字并做同样
处理,依次类推,直至对第n-1个记录和第n个记录 进行比较并处理完, 使得关键字值最大的记录被交换 到了最后一个记录的位置上。第二次冒泡排序只需
integer::low,high,key,ix,mid integer,dimension(low:high):: a do while(low<=high)
Fortran95基本语法
Fortran95基本语法字符:Fortran不区分大小写Fortran 格式:自由格式和固定格式。
Fortran程序代码扩展名为:*.For 或*.F的文件就是指固定格式;以*.F90为扩展名的文件,就是自由格式。
à固定格式:规定了程序代码每一行中每个字段的意义。
第7~72个字符,是可以用来编写程序的字段。
每一行的前5个字符只能是空格或数字,数字用来作为“行代码”。
每一行的第6个字符只能是空格或“0”以外的字符。
à自由格式:叹号(!)后面的文本都是注释。
每行可以编写13 2个字符。
行号放在每行程序的最前面。
一行程序代码的最后如果是符号&,代表下一行程序会和这一行连接;如果一行程序代码的开头是符号&,代表它会和上一行程序连接。
Fortran的数据类型à整型(Integer)à浮点数(Real) à复数(Complex) à字符(Character)à逻辑判断(Logical)—True or FalseRemark: Visual Fortran安装好后,默认的安装目录C:\Program Files\Microsoft Visual Studio\DV98\bin下有一个Bitviewer程序可以用来表看各种数据格式实际在内存中的二进制数据。
Fortran的数学表达式()(括号)、**(乘幂)、*(乘法)or /(除法)、+(加法)or –(减法)à优先级(高à低).输入(Write)输出(Print)命令Fortran程序通常以Program描述来开头,Program后面还要接一个自定义的程序名称(这个名称可以完全自定义,不需要和文件名有任何关系)。
Fortran程序最后还要有End描述,表示程序代码写到这一行结束。
Write(*,*)命令:括号中的两个星号都有各自的意义,第一个星号代表输出的位置使用默认值,也就是屏幕,第二个星号则代表不特别设置输出格式。
fortran95的使用方法9
附录C FORTRAN95语法在本附录我们给出FORTRAN95的语法规则(ISO/IEC 1559-1:1997(E))。
所谓语法规则,就是描述一切FORTRAN95的词汇,语句,结构等语言成分的形式规则,凡是遵循了这个描述的,就是合法的FORTRAN95语言;否则,就是不合法的。
因此语法规则本身必须是精确的,绝对不能产生歧义。
在这种要求下,FORTRAN95的语法采用了形式语言的方式给出语法规则,即属于所谓Backus-Naur形式(BNF)的一种变体。
由于这种描述形式本身采用了语言的形式,因此有几点说明如下:●在描述语法时,对于属于FORTRAN字符集的字符按照字面形式来理解,除非有特别的说明。
●对于每一个语法成分的描述,都有一个唯一的编号,这个编号的采用了如下的一般形式:Rxyy其中的R表示规则,而x表示FORTRAN标准的节号,yy表示对于该语法成分的描述在该节的唯一编号,因此对于每一个语法成分的描述,这个Rxyy可以看成是它的唯一编号,全书的正文当中,每当第一次引入一个语法成分,我们总是给出了它的这个编号。
在下面的规则表里面,这个编号简写为纯数字,省略了字母R。
●下面的描述当中,为了简洁起见,采用了如下的缩写:argument……argattribute……..attrdeclaration…..decldefinition……defdescriptor……descexpression…..exprinteger………intoperator……..opspecifier…….specstatement……stmt●同样为了简洁的缘故,这里给出的形式描述不可能是绝对完备和精确的,在能够理解的前提下,本附录采用了一定的简化形式,并且在FORTRAN标准的基础上作了一定的节略。
●除了文字之外,还使用了来自FORTRAN字符集的如下特殊符号;另外还使用了|表示或者的意思。
Fortran语法
Fortran语法(转载)2010-08-02 09:45目录:一、说明二、概述三、数据类型及基本输入输出四、流程控制五、循环六、数组七、函数八、文件一、说明本文多数内容是我读彭国伦《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程序。
以下是77和90的一些格式上的区别。
Fortran 77:固定格式(fixed format),程序代码扩展名:.f或.for(1)若某行以C,c或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入输出等);7~72为程序代码编写区;73往后被忽略;(3)太长的话可以续行,所续行的第六个字符必须是"0"以外的任何字符。
Fortran95 简介-全文版
Fortran95简介-全文版By陈鲸太FORTRAN的演进FORTRAN的起源,要追溯到1954年IBM公司的一项计划。
由JOHN BACKUS 领导的一个小组,尝试着在IBM 704计算机上面发展一套程序,它可以把使用接近数学语言的文字,翻译成机械语言。
这个计划在刚开始并不被大家看好,但他们在1957年交出了成果,也就是第一套FORTRAN编译器,FORTRAN语言也就因此诞生了。
FORTRAN语言的执行效率普遍的令各界满意,它证明了这项计划的可行性,也成为第一个被广泛使用的高级语言。
FORTRAN的名字来自于英文的FORMULA TRANSLATOR这两个字,而这两个字恰是数学公式翻译器的意思。
旧版的FORTRAN77是在1978年由美国国家标准局(ANSI)所正式公布的,之后改版有1992年提出的FORTRAN90以及1997年的FORTRAN95,本文是为了FORTRAN 95所撰写。
编译器简介1、VISUAL FORTRANVISUAL FORTRAN一开始是起源于MICROSOFT的FORTRANPOWERSTATION 4.0,这套工具后来卖给DIGITAL公司来继续发展,下一个版本称为DIGITAL VISUAL FORTRAN 5.0,DIGITAL后来被COMPAQ合并,所以接下来的6.0及6.5版就称为COMPAQ VISUAL FORTRAN。
而COMPAQ目前又跟HP合并,也许下一个版本会称为HP VISUALFORTRAN。
VISUAL FORTRAN被整合在一个叫作MICROSOFT VISUAL STUDIO的图形接口开发环境中,VISUAL STUDIO提供一个统一的使用接口,这个接口包括文书编辑功能,PROJECT的管理、除错工具等等,所以在使用上其实跟上学期的VISUAL C++满类似的,同学们上课用过VISUAL C++,对VISUAL FORTRAN应该不会陌生。
(完整)《FORTRAN 95程序设计》学习笔记
《FORTRAN 95程序设计》学习笔记66RPG gg★目录★《FORTRAN 95程序设计》学习笔记 (1)基础知识(基础、字符串、FORMAT、隐式、TYPE) (1)流程与控制(if、select、do) (4)数组(声明、隐式循环、整体操作、可变数组) (5)函数与子程序(子程序、函数、全局变量) (6)MODULE与面向对象(重载操作符、虚函数) (9)文件相关(OPEN、WRITE、READ) (10)指针(指向变量、数组、函数) (11)Visual Fortran 编译器(DLL,VB调用) (12)数值算法与IMSL(数值算法插件) (14)常用库函数(数学、数组、零碎、子程序) (15)基础知识(基础、字符串、FORMAT、隐式、TYPE)★【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin,有一个Bitviewer,可以观察变量储存方式★【语法】续行:行结尾或行开头使用& 符号;注释:使用! 符号★【语法】数学表达式:+ ;- ;* ;/ ;( ;) ;**乘幂★【语法】程序结束:STOP (Ruby的exit)★【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)⏹建议:少用print,尽量用write★【语法】声明⏹整型:integer(kind=4) a ;其中kind是使用的bytes数,4 or 2◆其他写法:integer*4 a; integer(4) a⏹浮点:real(kind=4) a ;有效数位6位(12345678存为1.234567E7),如果是kind8则为15位有效数字◆此外:1E10:单精10^10,1D10:双精10^10⏹复数:complex :: a=(2,3)◆实部:real(a) ;虚部:imag(a)⏹布尔型:Logical,.true. 和.false.★【语法与函数】字符串:character(20) string⏹注意理解,fortran的弱智字符串就是一个长度不能变的一维的东西,极其猥琐,和Java、Ruby不能相提并论的⏹string(13:13) = “a” :对第13个字节的读、存⏹string(2:3) = “go”⏹string(6) = “我的妈呀”:从第6个位置开始设置为“我的妈呀”⏹ a = string_a // string_b:用“//”连接两个字符串⏹【常用函数】char(num),ichar(char):ASCII码的转换相关功能⏹【常用函数】len(string),len_trim(string):长度,去掉尾部空格后的长度⏹【常用函数】index(string,key):找key在string首出现的位置⏹【常用函数】trim(string):返回去掉尾部空格的字符串(用途不大)⏹【函数】repeat(char,int):返回一个重复int次的char串⏹character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度★【规范格式】FORMAT格式化⏹ e.g.◆write (*,100) A◆100 format(I4) ←这里是100号标识调用的格式⏹参数控制符(前面加数字为重复次数,如4I6或<a>I6。
fortran语法手册
1 FORTRAN77四则运算符+ - * / ** (其中**表示乘方)在表达式中按优先级次序由低到高为: +或-→*或/→**→函数→()2 FORTRAN77变量类型2.1 隐含约定:I-N规则凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。
2.2 用类型说明语句确定变量类型:可以改变I-N规则2.3 用IMPLICIT语句将某一字母开头的全部变量指定为所需类型如 IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。
2.4 数组的说明与使用使用I-N规则时用DIMENSION说明数组,也可在定义变量类型同时说明数组,说明格式为:数组名(下标下界,下标上界),也可省略下标下界,此时默认为1,例:DIMENSION IA(0:9),ND(80:99),W(3,2),NUM(-1:0),A(0:2,0:1,0:3)REAL IA(10),ND(80:99)使用隐含DO循环进行数组输入输出操作:例如WRITE(*,10) ('I=',I,'A=',A(I),I=1,10,2)10FORMAT(1X,5(A2,I2,1X,A2,I4))2.5 使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/-1.0,-1.0,-1.0/DATA A/-1.0/,B/-1.0/,C/-1.0/DATA A,B,C/3*-1.0/CHARACTER*6 CHN(10)DATA CHN/10*' '/INTEGER NUM(1000)DATA (NUM(I),I=1,500)/500*0/,(NUM(I),I=501,1000)/500*1/3 FORTRAN77程序书写规则程序中的变量名,不分大小写;变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;一行只能写一个语句;程序的第一个语句固定为PROGRAM 程序名称字符串某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;某行的第73至80字符位为注释区,80字符位以后不能有内容。
Fortran95第8章 构造表达式
第8章构造表达式完成了数据描述的任务之后,一个程序就进入了数据处理的阶段。
也就是一系列的以数据为对象的操作语句,访问经过声明的数据对象,施加计算处理之后,获得新的数据结果。
FORTRAN语言里面访问数据对象然后返回值的一个基本指令形式是表达式,而通过表达式所得到的计算结果被用来赋值给某个变量,完成这个操作的是赋值语句。
本章与下一章我们将讨论表达式与赋值语句这两个相续的改变机器的数据状态的基本操作。
一个科学计算程序的基本任务就是进行计算,而计算的最基本的单位就是表达式。
FORTRAN作为一门最早的高级语言,其初衷就是公式翻译(FORMULA TRANSLATION),即希望运用这个语言,能够把数学公式最好是原封不动地搬到FORTRAN语言的环境里,而计算机能够忠实地理解公式的含义,并进行公式所要求的运算。
当然,要求把能够把数学公式原封不动地搬到FORTRAN语言的环境里,就能够被FORTRAN理解是不可能的,因为首先是公式的输入受到键盘的限制,然后作为一种程序语言,我们在第4章已经讨论过,它所使用的字符集必定是有限的,而数学符号的集合则基本上是开放性的。
而从计算的实质上来考虑,我们知道计算机在物理层面所能够做到的计算其实是非常简单的加减法而已,因此我们希望运用计算机来完成任意的计算任务,所面临的挑战,正是如何把我们的实际计算任务分解为等价的简单计算过程的组合,FORTRAN作为一种语言,显然只能在很初步的层次上完成这个任务,即直接在语言里使用数学基本运算,例如:加法,减法,乘法,幂运算等,然后在此基础上,再定义一些基本的数学函数作为语言的固有函数,可以供人直接引用,对它的解释则完全交给FORTRAN编译器。
FORTRAN所能够做到的基本上也就到此为止了。
更进一步的计算的分解任务,则必须由程序来完成。
因此FORTRAN 能够做到的就是尽量以符合数学的书写习惯的方式来规范表达式的格式。
一般说来,我们把表达式理解为语句(甚至是程序)的语法结构的单位。
Fortran95常用关键字
Fortran95常用关键字Fortran 95常用关键字1、数据类型:整型,实型(浮点型),复数型,逻辑型,字符型自定义数据类型(TYPE)2、逻辑运算==,/=,>,<,>=,<=.AND., .OR., .NOT., .EQV., .NEQV.3、输入输出格式A, F, E, I, X, /4、常用命令关键字SELECT, PROGRAM, PRINT, STOP, END, WRITE, INTEGER, REAL, COMPLEX, CHARACTER, LOGICAL, READ, FORMAT, IMPLICIT, PARAMETER, DATA, EQUIVALENCE, TYPE, PAUSE, CONTINUE, CYCLE, EXIT, IF, SELECT, DO, ALLOCATE, DEALLOCATE, WHERE, FORALL, SUBROUTINE, CALL, RETURN, FUNCTION, COMMON, BLOCK DATA, SAVE, INTERFACE, CONTAINS, MODULE, USE, PUBLIC, PRIVATE, ENTRY, OPEN, INQUIRE, CLOSE, NAMELIST, POINTER, NULLFY, REWIND, BACKSPACE, ENDFILE5、常用属性关键字PARAMETER(见命令), ALLOCATABLE, EXTERNAL, SAVE(见命令), INTENT(IN), INTENT(OUT), INTENT(INOUT), INTRINSIC, OPTIONAL, RECURSIVE, TARGET, POINTER(见命令), PUBLIC (见命令), PRIVATE(见命令)6、函数CHAR( ), ICHAR( ), LEN( ), LEN_TRIM( ), INDEX( ), TRIM( ), SELECTED_INT_KIND( ), SELECTED_REAL_KIND( ), ALLOCATED(), RANDOM_SEED( ), RANDOM_NUMBER( ), ASSOCIATED( ), PRESENT( ), NULL(), REAL(), INT()7、参数KIND, LEN, RESULT, UNIT, FILE, EXIST, STATUS, IOSTAT, NML, FMT, ACCESS, RECL8、特殊格式字符串定界符,逻辑值定界符字符串名(a:b) 字符串取子串操作字符串a//字符串b 字符串连接操作9、控制结构分支 IF(条件表达式) THEN……ELSE……END IF多重判断语句IF(条件表达式) THEN…ELSE IF(条件表达式) THEN…ELSE IF(条件表达式) THEN ……ELSE…END IF嵌套IF结构SELECT CASE语句CASE()中只能用整型、字符型、逻辑型常量CASE(A), CASE(A, B), CASE(A:B)意义。
Fortran95程序模块filesBatch使用CMD快速检索出文件名列表
Fortran95程序模块filesBatch使⽤CMD快速检索出⽂件名列表module filesBatchimplicit nonecontainssubroutine list2file(filePath,outFilename)use dflibimplicit nonecharacter(*), intent(in) :: filePath, outFilenamecharacter(len=255) :: cmdlogical :: res! use "dir /? " in command window! to learn what's the mean of the following cmdcmd='dir /a-d/b/s '//trim(filePath)//'>'//trim(outFilename) res = systemqq(cmd)end subroutine list2file!BLsubroutine getFileLines(filename,totalLines)implicit nonecharacter(len=*), intent(in) :: filenameinteger, intent(out) :: totalLines! input filename's open-statusinteger :: inStat! read-file statusinteger :: readStattotalLines = 0open(7,file=Filename,iostat=inStat,status='old',action='read') in_ok: if(inStat/=0)thenwrite(*,*) 'Input file OPEN failed: iostat=', inStatwrite(*,*) 'Shutting Down ... ... 'else! Just read nothing to count lines in the filedoread(7,*,iostat=readStat)totalLines = totalLines + 1read_ok: if(readStat < 0) then!write(*,*)'End of file, iostat=',readStat!write(*,*)'<'//trim(filename)//'>',' file has total lines:',totalLines-1totalLines = totalLines-1close(7)returnelseif(readStat > 0)then! read bad formating data !write(*,*)'Intel Fortran run-time library (forRTL) error number:',readStat !write(*,*)'>>>Check maybe bad record in file:', inFilenameelse! read successfully!write(*,*)startDate, startTime, &! stationID, pointID, diInster, fInster, pd, &! dBaseline, hBaseline, zBaseline, fBaseline endif read_okenddoendif in_okclose(7)end subroutine getFileLinesend module filesBatch。
《FORTRAN95程序设计》学习笔记
《FORTRAN 95程序设计》学习笔记66RPG gg★目录★《FORTRAN 95程序设计》学习笔记 (1)基础知识(基础、字符串、FORMAT、隐式、TYPE) (1)流程与控制(if、select、do) (4)数组(声明、隐式循环、整体操作、可变数组) (5)函数与子程序(子程序、函数、全局变量) (7)MODULE与面向对象(重载操作符、虚函数) (9)文件相关(OPEN、WRITE、READ) (10)指针(指向变量、数组、函数) (12)Visual Fortran 编译器(DLL,VB调用) (13)数值算法与IMSL(数值算法插件) (15)常用库函数(数学、数组、零碎、子程序) (16)基础知识(基础、字符串、FORMAT、隐式、TYPE)★【小玩意】二进制观察器:装在M.. Visual Studio\DF98\bin,有一个Bitviewer,可以观察变量储存方式★【语法】续行:行结尾或行开头使用 & 符号;注释:使用 ! 符号★【语法】数学表达式:+ ;- ;* ;/ ;( ;) ;**乘幂★【语法】程序结束:STOP (Ruby的exit)★【语法】输出:write(*,*),完整写法:write(unit=*,fmt=*)⏹建议:少用print,尽量用write★【语法】声明⏹整型:integer(kind=4) a ;其中kind是使用的bytes数,4 or 2◆其他写法:integer*4 a; integer(4) a⏹浮点:real(kind=4) a ;有效数位6位(12345678存为1.234567E7),如果是kind8则为15位有效数字◆此外:1E10:单精10^10,1D10:双精10^10⏹复数:complex :: a=(2,3)◆实部:real(a) ;虚部:imag(a)⏹布尔型:Logical,.true. 和 .false.★【语法与函数】字符串:character(20) string⏹注意理解,fortran的弱智字符串就是一个长度不能变的一维的东西,极其猥琐,和Java、Ruby不能相提并论的⏹string(13:13) = “a”:对第13个字节的读、存⏹string(2:3) = “go”⏹string(6) = “我的妈呀”:从第6个位置开始设置为“我的妈呀”⏹ a = string_a // string_b:用“//”连接两个字符串⏹【常用函数】char(num),ichar(char):ASCII码的转换相关功能⏹【常用函数】len(string),len_trim(string):长度,去掉尾部空格后的长度⏹【常用函数】index(string,key):找key在string首出现的位置⏹【常用函数】trim(string):返回去掉尾部空格的字符串(用途不大)⏹【函数】repeat(char,int):返回一个重复int次的char串⏹character(len=20) string 普通声明;character(len=*) string 接收的时候可自动长度★【规范格式】FORMAT格式化⏹ e.g.◆write (*,100) A◆100 format(I4) ←这里是100号标识调用的格式⏹参数控制符(前面加数字为重复次数,如4I6或<a>I6。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
FORTRAN 95 语法速查----------白云、李学哲、陈国新、贾波编著《FORTRAN95程序设计》读书笔记目录:一、应用程序的创建与运行/FORTRAN 95所用的字符/ 变量类型及其声明,常量声明/表达式与运算符二、输入与输出:表控、有格式三、选择语句与结构:IF语句、CASE结构四、DO循环结构五、数组:数组的声明,数组的引用,数组的算术运算,数组的输入、输出,给数组赋初值,动态数组,WHERE、FORALL语句六、子程序:语句函数,内部子程序,调用子程序时的虚实结合:形参为数组、非定界数组、子程序名、星号,递归子程序,外部子程序,纯子程序,逐元子程序七、派生数据类型与结构体八、指针与动态链表九、文件:存取方式,基本操作语句,各类文件的读写操作十、接口、模块十一、公用区、存储关联、数据块子程序十二、绘图:坐标系、设置图形颜色、创建图形程序/ 常用过程:设置线型、绘一像素点、设置当前位置、绘直线、绘弧线、绘矩形、绘多边形、绘制扇形(圆、椭圆)/ 文字信息的显示附/录:标准函数与标准子例行程序一、基础部份1-1 FORTRAN 95 应用程序的创建与运行创建或运行FORTRAN 95程序必须在Microsoft Developer Studio平台上进行。
尽管程序文本及相关文件的编辑可以在任一文本编辑器上进行,然后再拷到Studio的文档窗口中。
但最好还是一开始就进入Studio环境。
创建FORTRAN 95 程序的步骤大致如下:1)启动Microsoft Developer Studio可以通过不同方式运行dfdev.exe程序以启动Microsoft Developer Studio[开始] \ Compaq Visual Fortran 6 \ Developer Studio \ dfdev.exe:或……\CVF66 \\MSDEV98\dfdev.exeMicrosoft Developer Studio的界面如下图所示:文档窗口工作空间窗口输出窗口2)建立工作空间(WorkSpace)工作空间(WorkSpace)对应着windows资源管理器的一个文件夹。
从菜单栏“File”\“New”\ 在弹出的“New”窗口选“WorkSpace”卡,在“Location”栏指定保存工作空间的位置(即工作空间的上一层文件夹);在“WorkSpace Name”栏指定工作空间名称。
建立完工作空间即生成工作空间文件*.dsw3)建立项目(Project)项目是工作空间的下一层文件夹,一个项目只能保存一个主程序及其可执行文件(.exe文件)以及相应的若干辅助文件,如外部子程序、数据文件、说明文件等。
从菜单栏“File”\“New”\ 在弹出的“New”窗口选“Project”卡,在列表中选“Fortran Console Application(Fortran 应用程序)”;填写Project Name(项目名称,即文件夹名) 与“Location”(默认为工作空间);选取单选钮“Add to current WorkSpace”(将该项目添加到当前工作空间)建立完项目即生成项目文件*.dsp4)编辑程序文本无论是程序的源文件还是如数据文件或说明文件等相关的文本虽然可以在任一文本编辑器中进行编辑,但最好是在这个Studio平台上编辑。
从菜单栏“File”\“New”\ 在弹出的“New”窗口选“Files”卡。
在列表中选“fortran Free Format Source File(Fortran 自由格式源文件)”。
钩选“Add to project”;在“File”栏填入文件名;在“Location”栏默认是项目地址。
Fortran 95的源文件扩展名为.f90。
◆若是编辑数据文件或说明文件则可在“New”窗口的“Files”卡的列表中选“Text File”,或者在“New”窗口选“Other Documents”卡建立其他类型的文档。
5)编译、连接生成可执行文件(.exe文件)源程序文件编辑完成后要进行编译,此时系统将对源程序进行语法检查,若有错误将在输出栏显示相关信息,此时可按功能键F4还可提供更详细的信息。
编译通过后即生成后缀为.obj的目标文件。
当本项目所有的程序都通过编译后即可进行连接生成可执行文件(.exe)。
进行编译、连接、执行的指令可通过下表所列方法发出:编译连接执行通过菜单Build--- Compile Build Execute击工具栏按钮(Compile)(Build)(Execute Program)使用功能键Ctrl+F7 F7 Ctrl+F51-2 FORTRAN 95所用的字符:FORTRAN 95中使用的英文字母除字符串外,均不区分大小写。
所有名称均须用英文字母起头,后面可跟着总数不超过31个字符的英文字母、数字、下划线。
关键字也可以作为变量、数组、函数、程序等实体的名称。
一个命令行允许编写132个字符,可以书写多条语句,各语句间以分号‘;’分隔。
长语句可以分行,以‘&’为续行符。
前导行的末尾必须有‘&’号,后续行行首可以有‘&’号也可以没有。
‘!’为注释符,可以出现在一行的任意位置。
注释符后的所有字符都是注释文本,注释文本可以包括汉字在内的任何字符。
◆符号说明<……> 必须填入尖括号中指定的相应内容[……] 可以填入也可以不填入在方括号中指定的内容选项1 | 选项2 | 选项3 |…可以有选择地填入某一选项{……} 可重复地按花括号中指定格式填入相应内容1-3 变量类型及其声明变量未经声明即认为遵从I-N规则,即:以变量名以字母I、J、K、L、M、N开头的均默认为4字节整型变量,其他的为4字节实型变量。
下面的隐式声明语句将取消I-N规则:IMPLICIT NONE1)隐式声明语句:IMPLICIT <隐式声明表><隐式声明表>=<类型名称>(<字母>{[,|-]<字母>}){,<类型名称>(<字母>{[,|-]<字母>})<类型名称>=Integer|Real|Logical|Complex|Character◆圆括号‘(’、‘)’本身为语法成分,方括号对‘[……]’为可选项,花括号对’{……}’为可重复的可选项。
例:implicit real(a,s,i-k),integer(p,q,r),character(c) 定义了以a,s,i,j,k为首字母的变量为单精实型;以p,q,r为首字母的变量为4字节整型;以c为首字母的变量为字符型。
◆隐式声明语句应放在所有声明语句及可执行语句之前。
2)显式声明语句<变量类型> <变量名>[{,变量名} ]例: real name1,name2; real*8 res1声明name1、name2 为单精(4字节)实型变量,res1为双精(8字节)实型变量。
◆显式声明语句的优先级高于隐式声明。
3)整型变量Integer [(n)|(kind=n)| *n] [::] <变量名表> n—kind值<变量名表> = <变量>[=<变量值>][{,<变量>[=<变量值>]}]Kind取值:1,2,4,8,缺省值为4。
◆有双冒号‘::’的声明语句可同时进行赋值,否则不能进行赋值。
例: integer*4::c1, c2, b1=89, b2=754)实型变量REAL [(n)|(kind=n)| *n] [::] <变量名表> n—kind值<变量名表> = <变量>[=<变量值>][{,<变量>[=<变量值>]}]Kind取值:4,8,缺省值为4。
Kind=4为单精度;kind=8为双精度。
5)复数虚、实部要用一对圆括号括起来。
表示为:(<实部>,<虚部>)。
声明复型变量的语法为:COMPLEX [(n)|(kind=n) [::] <变量名表> n—kind值<变量名表> = <变量>[=<变量值>][{,<变量>[=<变量值>]}]Kind取值:4,8,缺省值为4。
Kind=4为单精度,单精复数占用8字节;kind=8为双精度,双精复数占用16字节。
例:complex*4::cox=(38.8745, -8563.98) , ca6)字符型变量CHARACTER [(k)|(len=k)| *k] [::] <变量名表> k—字符串长度,默认为1<变量名表>=<变量名>[*k][= 字符串]例:character*4 a,b,c*6 定义了a,b两个字符变量的长度为4,C的长度为6character*4::a,b=’hd7g’,c*6 对变量b进行了赋值。
7)逻辑型变量LOGICAL [(n)|(kind=n)] [::] <变量名表> n—kind值,可取1,2,4,8,默认为4。
逻辑型变量的取值范围只有.TRUE. 与.FALSE. 两个值。
.TRUE. 等价于-1;.FALSE.等价于0。
已定义的逻辑变量其默认值为.FALSE.。
1-4 常量的声明: 常量有整型、实型、复型、字符型、逻辑型。
常量的类型像变量一样,可以隐式声明或显式声明。
1-4-1 显式声明<类型>,PARAMETER::<名称>=<表达式> [,<名称> = <表达式>]例:integer,parameter:: a=2, b=3logical,parameter:: L1=.True., L2=.false.1-4-2 隐式声明PARAMETER <名称>=<表达式>[{,<名称>=<表达式>}]例:parameter pi = 3.1415926, num=861-5 表达式与运算符返回目录1-5-1 算术表达式与运算符的。
其结果也是高级类型及相应的高KIND值的。
在赋值时,若左侧变量与右侧表达式的类型不同,则先将表达式值转换为左侧变量的类型,再赋值给左侧的变量。
实型数截去小数转换为整型数。
1-5-2 字符表达式与运算符求子串操作符:(I:j)——截取从第I 个字符到第j个字符的子串。
i,j为整型表达式。
连接操作符://1-5-4 逻辑表达式与运算符.not.(非,单目) .and.(与).or.(或).xor.(异或).eqv. (相等).neqv.(不等)返回目录二、输出与输入语句返回目录2-1 表控输入输出语句表控输入:READ* [, <输入项列表>]输入项列表中各项以逗号分隔。