Fortran 95学习笔记
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)意义。
Fortran学习笔记.ppt

Free Format(自由格式)
Fortran 90 開始使用,附加檔名為 *.F90 不再規定第幾字元有何特定用途 驚嘆號「!」後都是註解 每行可以寫作 132 字元 如有行號放在每行最前面 程式連接符號改為「&」,放在每行程式碼最前或最後,表連結
前一行或是下一行
例如: 1:! free format 2: program free 3: read (*,10) a,b 4:10 format (f5.1,f5.1) 5: sum=a+b 6: write (*,20) & 7: sum 8:20 format (1x,f6.1) 9: end
2. 簡化的用法2:
不同格式控制指令,(1x,f5.2)可以移去逗號簡化成format (1xf5.2) 重複相同格式(a3,a3)不可以簡化成(a3a3),改用format (2a3) 若有不同格式時,如(1xf5.2 , 1xf5.2 , 1xf5.2)則改用format (3(1xf5.2))
書面格式
Fixed Format是舊式的寫法,有較多的限制, Fixed Format副檔名用 *.F 或 *.FOR 。
Free Format則是Fortran 90以後新增的作法,以副檔名 做為區隔,Free Format使用 *.F90。
Fixed Format(固定格式)
字元位置意義: 第 1 字元:如果是字母 C 或 c 或是星號 *,本行視為註解 第 1-5 字元:空白,或是一組數字為本行程式的代號 第 6 字元:放上 0 以外的字元,表示為接續上一行程式碼 第 7-72 字元:程式碼寫作區域 第 73 字元以後:不使用,編輯器會忽略,有些則發出錯誤訊息
3. 字串可以直接寫入格式內: write (*,"(a4,I1)") "1+2=",1+2 write (*,"('1+2=',I1)") 1+2 輸出均為 1+2=3 。上例中單雙引號混用,但F77只用使用單引號: write (*,'(''1+2='',I1)') 1+2
FORTRAN 95 语法速查

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资源管理器的一个文件夹。
FORTRAN_95_语法速查

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资源管理器的一个文件夹。
FORTRAN95第一章

三、流程图 上述算法可以用文字表达,也可以用流程 图来表示。有时用流程图表示算法更有利于 编写程序,可以减少编程过程中的错误。 最简单的流程图也称“框图” 最简单的流程图也称“框图”,即用一个 一 个特定的“ 个特定的“框”代表某些动作,框内写出各 个步 骤,然后用带箭头的线把它们连结起来,以 表示其执行的先后顺序。例如计算平均值的 流程图如图1 流程图如图1-2所示。
1.2.3 FORTRAN程序的组成 FORTRAN程序的组成 一、FORTRAN程序结构 一、FORTRAN程序结构 FORTRAN程序是一种段式结构( FORTRAN程序是一种段式结构(或称 为块结构)。每个FORTRAN程序由一个主程 为块结构)。每个FORTRAN程序由一个主程 序段和若干个子程序段及模块组成。 主程序 段有且仅有一个, 子程序段和模块根据需要 可用零个或多个。每个程序段可以独立编写, 可用零个或多个。每个程序段可以独立编写, 实现不同的功能,程序运行总是从主程序段 开始。每个程序段都有自己的段头语句,但 主程序段的段头语句可以省略。
用高级语言编写程序: 用高级语言编写程序: 高级语言是接近人们使用的自然语言和数 学语言的编程语言,通常说的“程序设计语 学语言的编程语言,通常说的“ 言” 所指的就是这类语言。 用高级语言编写的程序通常称为源程序 用高级语言编写的程序通常称为源程序。 源程序。 计算机不能直接识别和执行源程序,必须把 它们先翻译成机器指令程序,称“ 它们先翻译成机器指令程序,称“目标程 序”, 然后再由计算机执行目标程序。这个“翻译” 然后再由计算机执行目标程序。这个“翻译” 工 作是由一个称为“编译程序”的软件完成的, 作是由一个称为“编译程序”的软件完成的,
1.2.2FORTRAN字符集 1.2.2FORTRAN字符集 “字符集”是指编写程序时所能使用的全部 字符集” 字符 和符号。FORTRAN语言的字符集包括的字符 和符号。FORTRAN语言的字符集包括的字符 及符号有: 26个英文字母:A~Z及a~z(在FORTRAN程 26个英文字母 A~Z及a~z(在FORTRAN程 个英文字母: 序中英文字母不分大小写) 序中英文字母不分大小写) 数字: 数字:0~9 22个特殊符号: : = + - * / ( ) , . ‘ “ ! 22个特殊符号 个特殊符号: % & ; < > ? ¥ _ └┘ 其中的特殊符号除了做为数学运算符号外, 其中的特殊符号除了做为数学运算符号外,还 有其他用法
最新《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。
fortran 95 基础注意

1.除字符型常量外,源程序中不区分字母的大小写,如语句ReaL a和real A是等价的。
2.Fortran 95字符集以外的可打印字符,只能出现在注释、字符常量、字符串编辑符和输入输出记录中。
3.Fortran 95规定标识符只能由字母、数字、下划线“”和$组成,且起始字符必须是英文字母。
(标识符即名称,用来在程序中标识有关实体,如变量、符号常量、函数、程序单元、公用块数组、模块和形参等)4.用“!”作注释标志符,“!”可以在一行的任一位置,注释延伸至程序行的结束。
5.数据类型——integer(整数类型)、real(实数类型)、complex(实数类型,如(1.2,3.5)表示1.2+3.5i)。
6.非数值型数据——character(字符类型,在程序中表示形式用…‟或“”,如…a‟,“hello!”)、logical(逻辑类型,表示判断的结果,只有两种值true、false)。
7.二至三十六进制表示,形式为:±r#数字如输出3994575的程序Print﹡,2﹟1111001111001111001111Print﹡,7﹟45644664Print﹡,8﹟17171717Print﹡,3994575Print﹡,﹟3cf3cf !16进制可以略去16Print﹡,36﹟2dm8fend8.非打印字符的表示形式9. 变量表示与赋值integer x,y ,z !定义x 、y 和z 是整型变量character *6 name !定义name 是字符变量,字符长度为6real a,b !定义a 和b 是实型变量complex ::s=(1.5,8.9) !定义s 是单精度复型变量,并对其赋值(1.5,8.9)integer (2)::c=1,d !定义c 和d 是短整型变量,并对a 赋值1real * 8 e !定义e 是双精度型变量注意:符号“::”在变量定义语句中可有可无,若有可对变量赋初值,否则不能赋初值。
Fortran学习总结 我不是企鹅的日志 网易博客

Fortran学习总结我不是企鹅的日志网易博客fortran学习总结-我不是企鹅的日志-网易博客FORTRAN学习总结-我不是企鹅日志-网易博客fortran学习总结目录:一、说明二、概述三、数据类型和基本输入输出4。
过程控制5。
第六周期。
阵列7。
功能8。
文件1。
描述本文多数内容是读彭国伦《fortran95程序设计》的笔记。
二、概述1、名词解释fortran=公式翻译/翻译一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。
的确,从一开始,ibm设计的时候就是为了方便数值计算和科学数据处理。
设计强大的数组操作就是为了实现这一目标。
fortran奠定了高级语言发展的基础。
现在FORTRAN广泛应用于科学研究和机械领域。
2.FORTRAN的主要版本和差异按其发展历史,fortran编译器的版本其实很多。
现在在广泛使用的是fortran77和fortran90。
ortran90在fortran77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。
鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看77程序。
以下是77和90的一些格式上的区别。
fortran77:固定格式(fixedformat),程序代码扩展名:.f或.for(1)若某行以c,c 或*开头,则该行被当成注释;(2)每行前六个字符不能写程序代码,可空着,或者1~5字符以数字表明行代码(用作格式化输入出等);7~72为程序代码编写区;73往后被忽略;(3)如果太长,你可以继续排队。
续行的第六个字符必须是除\以外的任何字符。
fortran90:自由格式(freeformat),扩展名:.f90(1)以\引导注释;(2)每行可包含132个字符,行号放在每行的前面;(3)用&继续这一行,并把它放在这一行的末尾或开头。
下面是对Fortran 90的讨论。
3、fortran的一些特点,和c的一些不同事实上,有很多,当提到下面的具体方面时可以看到。
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字符位以后不能有内容。
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)以&续行,放在该行末或下行初。
以下都是讨论Fortran 90。
3、Fortran的一些特点,和C的一些不同其实很多,在下面涉及具体方面时可以看到。
FORTRAN 基础学习笔记

书目1 : Fortran90程序设计实验指导与测验(超星图书)------------------------------- 基本过程----------基本过程, 先新建一个工作环境, workspace(工作区), 再建一个project(项目), 然后建一个源文件..f90是源程序文件项目里面可以新建txt和doc, 源程序写完之后可以编译为.exe具体步骤如下 :.opt和.dsw及.dsp注意一个问题, 在建新的project的时候, 我使用的版本(Compaq visual fortran)会出现以下对话框:问你是那一种console app., 按照这本书上说的, 需要自己手动建立主程序.f90的说法, 应该是建了一个empty project, 因为另外两种project建立后, 会自动有一个.f90的文件生成.源文件创建步骤如下 :其他的辅助文件也可以在项目中创建输入源程序结束之后, 要进行编译 (编译之后生成.obj文件):编译和构建exe的快捷键分别为: compile: ctrl+F7; build : F7运行: ctrl+F5Debug文件夹可以删除.-----------------------------------下面开始具体命令及注意事项-----------------排比啊...==定义变量必须在程序的开头就全部定义完, 一旦开始有执行的语句, 就不能再定义了(我猜是这个规则).Kind参数的概念意思就是, 默认的情况下占4字节(单精度), 后面写(1)就是占1字节, 写(8)就是占8字节, 也就是双精度的.下面这句里面_8 是啥意思?复数..后面很多习题解答, 这个书是一本辅导书, 感觉内容太零散了.书目2: FORTRAN 90/95高级程序设计(超星图书)第1章背景FORTRAN编译器的发展VF(DVF即Digital Visual Fortran)环境介绍: MS visual studio第2章: 基础执行部分和非执行部分要分开. 关于续行:标识符:五种数据类型, INTEGER, REAL, COMPLEX, CHARACTER, LOGICAL. INTEGER:整型常量的kind参数则是用下划线来说明:REAL:REAL(2)是错误命令. 只能是4或8COMPLEX:LOGICAL:CHARECTAR:强制规定类型: IMPLICIT NONE变量声明及初始化(::):第3章例程和模块第4章控制结构第5章数组几个数组声明如下:一般形式:书目3: Fortran90程序设计教程/张晓霞田秀平(超星图书)(个人觉得这本书比前两本都给力)第七章数组(讲的不错, 要看)没搞清write(*,*)到底怎么用?跟print的区别?第八章函数与子程序第一节语句函数:就是一句可以说明白的语句, 不必写成子函数的形式(yy的), 说明如下:例子一枚:第二节例行子函数subroutine语句wiki对于subroutine的解释:下面这段介绍了subroutine, 很清晰: (主程序是以program开头的)一个包含subroutine的程序的结构:return命令的说明:书目4: FORTRAN常用算法程序集徐士良以上为高斯法另外一个算法:(AX=B, 注意X=A-1B; 求出A的逆也可以得到X.): 如下:!/************************************************************* ! 程序:Gauss_Jordan消去法! 过程:Gauss_Jordan(aa,b,n,sgn)! 作用:aa为方阵,b为aa的逆,n为aa的阶! sgn为标识符,1表示求逆成功,0表示求逆失败! 调用格式为:call Gauss_Jordan(aa,b,n,sgn)!*************************************************************/ subroutine Gauss_Jordan(aa,b,n,sgn)implicit noneinteger(4):: n,sgnreal(8):: aa(n,n),b(n,n)integer(4):: i,j,kreal(8),allocatable:: a(:,:)real(8):: tallocate(a(n,n))a=aa ! a代替aa进行运算sgn=1! 初始化b为单位阵do i=1,ndo j=1,nif(i==j) thenb(i,j)=1elseb(i,j)=0end ifend doend do! Gauss_Jordan消去法过程do k=1,nif(a(k,k)==0) thensgn=0;EXITend if! 化第k行使得a(k,k)为1t=1.0d0/a(k,k)do j=k,na(k,j)=a(k,j)*tend dodo j=1,nb(k,j)=b(k,j)*tend do! 完成第k列的计算do i=1,nif(i/=k)thent=a(i,k)do j=k,na(i,j)=a(i,j)-a(k,j)*tend dodo j=1,nb(i,j)=b(i,j)-b(k,j)*tend doend ifend doend doend subroutine Gauss_Jordan。
FORTRAN入门初学必看

fortran90/95/20031.把Fortran90/95/2003当成一门新的语言学习(虽然和Fortran77有关系!);2.直接学习Fortran90或Fortran95或Fortran2003,不要只学Fortran773.初学者最好先看《Fortran 95程序设计【彭国伦】》,不要因为FORTRAN95很难而转向Fortran77,即使我们自己是初学者;4.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;5.会用Fortran 77,能解决很多问题;会用Fortran90,能更加简单的解决更多问题;6.学习如何编写和使用module,type,allocate并不难,point,函数重载,binding(c)也是如此——难的是长期坚持实践和不遗余力的博览群书;7.学Fotran90是为了解决实际的数学、物理等问题的,不是用来编漂亮的界面的8.看Fortran77的书,是学不会Fortran90语言的;9.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?10.浮躁的人容易问:我到底该学什么;——别问,学就对了;11.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;12.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!13.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;14.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;15.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;16.Fortran90也是支持面向对象的程序设计语言;17.学习编程最好的方法之一就是阅读源代码;18.在任何时刻都不要认为自己手中的书已经足够了;19. 请深入理解IEEE浮点数,至少读读《What Every Computer Scientist Should Know About Floating- Point Arithmetic》或是《IEEE Standard 754 Floating Point Numbers》20.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;21.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍、第N遍;22. Fortran90也可以设计windows程序,也可以链接数据库,但请牢牢记住,Fortran 被设计的目的是用最简单的语言(与数学语言最接近的语言)来做科学计算的23. 请看《Fortran 90-95 Explained》,《Object-Oriented Programming Via F95》和《Numerical Recipes In Fortran 77 & 90》,以及《Introduction to FORTRAN90》和《Fortran90 Course Notes》;24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;25.和别人一起讨论有意义的Frotran90知识点,而不是争吵XX行不行或者YY与ZZ哪个好;26.请看《程序设计实践》,并严格的按照其要求去做;27. 请经常上Fortran的论坛了解Fortran的最新进展和讨论Fortran的有关问题,国内可以上/club/bbs.asp?bbsid=16,国外可以上http: ///Top/Computers/Programming/Languages/Fortran/;http: ///ISN/Community/en-US/forums/1005 /ShowForum.aspx ,最好的老师是网络,不会的问题问请记住以下名言:在外边有问题找google解决,在家里有问题找老婆(老公)解决。
30分钟快速学习Fortran_95

Fortran 95: 函数和子程序
• Function add(a,b) implicit none real, intent(in) :: a, b real :: add add = a + b end function 主程序调用: b = 2.0 x = add(23.1,b)
Note: 1. 所有输入的变量都用 intent(in)或intent(inout)显式 或 显式 限定, 限定,说明改动不改动 2. 返回变量只能是单一变量, 也要说明类型,但不用制定 intent 3. 保持function的独立性是非 常重要的 4. 主程序中用一般函数方法调 用
read(unit=1,fmt=*) a, b, c write(unit=2,fmt=“(f3.1,i5,a5)”) x,I,name
2. 3.
Fortran的格式字符串很灵 活,请参加其它资料 请不要用Fortran77中的 请不要用 中的 format语句!严重降低程 语句! 语句 序可读性
Fortran 95: I/O
Fortran 95: I/O
简单的I/O • Read *, a, b • Print *, a, b, “hello” 复杂的格式化I/O • Read “(f5.1, f8.2)”, x1, x2 • Print “(f5.1, f8.2)”, x1, x2
Note: 1. 若配合文件读写,则需要 制定“设备”,则要用
• 运行:
Fortran 95: 格式
• • • • • • 自由格式 大小写不分 &为换行连写 !为注释语句 ! 程序中任何地方用stop可推出程序 建议每个域(program、module、function、 subrouting)第一行都写implicit none
第2章 Fortran95程序设计基础

字符类型 (character)
计算机除了存储数值型数据之外,也可以在内存中存放 一段文本。 字符型数据的表示形式: 用一对单引号或双引号括起来。
如: ‘a‟
“hello!”
只有一个字母或符号时称为“字符”, 有一连串(多个)的字符时,就称为“字符串”。
字符类型 (character)
存储1个字符需要1个字节的存储空间 存储n个字符长度的字符串则需要n个字节的存储
掌握五种内部数据类型常量的合法表示方式 掌握变量的表示形式和变量的三种定义方法。
掌握算术运算符和算术表达式的运算顺序
了解标准函数,并掌握部分常用的标准函数。
Fortran95的字符集
字符集就是编写源程序时能够使用的全部字符及 符号的集合。包括: (1)英文字母a-z及A-Z (2)阿拉伯数字0-9 (3)22个特殊字符 = + - * / ( ) , . : „ “ ! ;
固定格式
每行80个字符,分成四个区:
第1~5列为标号区。第1列为C或*,说明此行为注释行。
第6列为续行标志区。续行标志是除空格和零以外的任何
FORTRAN 字符。 第7~72列为语句区。语句可以从第7列以后任何位置开 始书写。但一行只能写一个语句。 第73~80列为注释区。
备注:Fixed Format(固定格式)是传统的书写方式,对于 书写内容应在那一行的那一列上都有严格规定,过于刻板。
字节数 1 2 4 8
超出此范围,则会发生溢出错误。
实数类型(real)
实数又称为浮点数(floating-point number)。 实行数据有两种类型: 单精度型 双精度型。 数值都是近似值,而且有误差累计。
fortran学习笔记

Fortran学习笔记——吴登将2014.10.15小技巧:!写出到excelexcel的默认格式,估计是大家所期望的输出格式。
方法很简单,只要知道xls文件的分列符号是tab键就行了,于是在同行的各数据间加上" "字符(按一下tab键,在fortran 输出时两边加上英文引号)就搞定了。
1.新建项目:步骤2. 面向过程的方法--就是程序的组成单位是函数(过程),也就是说,一个程序是由若干个函数组成的。
“结构化程序设计方法”应该与“面向过程的程序设计方法”是同义词。
面向对象的方法--就是程序的组成单位是类class ,程序是由若干个类组成的。
当然类里面有成员函数,所以这2种方法并不是相互排斥的。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。
例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。
把上面每个步骤用分别的函数来实现,问题就解决了。
而面向对象的设计则是从另外的思路来解决问题。
整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。
第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的i变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。
可以明显地看出,面向对象是以功能来划分问题,而不是步骤。
同样是绘制棋局,这样的行为在面向过程的设计中分散在了总多步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。
Fortran经典编程语言笔记(你值得拥有)(2021年整理精品文档)

(完整)Fortran经典编程语言笔记(你值得拥有)编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)Fortran经典编程语言笔记(你值得拥有))的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)Fortran经典编程语言笔记(你值得拥有)的全部内容。
FORTRAN笔记2014。
10。
07目录第七讲_FORTRAN的基本知识。
ppt (3)FORTRAN语言程序设计初步 (3)FORTRAN源程序的书写格式(以77为例) (3)变量 (4)变量类型 (4)算术运算符和运算优先级 (5)赋值语句 (6)参数语句(PARAMETER语句) (6)END语句 (6)PAUSE语句 (6)逻辑运算和选择结构 (7)关系表达式 (7)FORTRAN中数组的定义及使用 (8)其他 (10)1. fortran语言定义CHARACTER*6 TTL(14,3),CNAM(400)是什么意思? (10)2. fortran里character*10 是什么意思 (10)3. Fortran中kind是什么函数? (10)第七讲_FORTRAN的基本知识.pptFORTRAN语言程序设计初步FORTRAN是Formula Translation的缩写,意为“公式翻译",它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。
常用的是FORTRAN77和FORTRAN90两种标准.1、一个程序由若干个程序单位组成.主程序和每一个子程序分别是一个独立的程序单位。
2、每一个程序单位都是以“END”结束的。
(完整)《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复习

Chap.2 Fortran 95 基础知识基本知识,如:字符集、名称、关键字、程序单元 、书写格式、数据类型。
名称:①名称只能由英文字母、数字、下划线符“_”和美元符号“$”组成。
②名称第一个字符必须是英文字母。
③名称不能超过31个字符。
书写格式:自由格式,固定格式3个通用标志符:注释标志符“!”、语句分隔标志符“;”和续行标志符“&”。
chap.3 内部数据类型与顺序结构程序设计常量和变量:语法描述;精度和取值范围(整型,实型,逻辑型,字符型,复数)如常量的写法;变量的申明,什么时候取消IN 规则数据类型表达式 (级别)算术表达式:算术运算符的优先级和结合规则;操作数的类型转换 字符表达式 关系表达式逻辑表达式 关系表达式和逻辑表达式联合结算结果chap.4 数据有格式输入输出I 编辑符F 编辑符E 编辑符A 编辑符 FORMAT 语句,READ 语句,WRITE 语句chap.5 选择结构程序设计chap.6 循环结构程序设计EXIT语句的功能是:在循环体执行过程中强制性终止整个循环语句的执行,转循环语句后的第一条语句执行。
只能在DO和DO WHILE循环语句内使用EXIT语句。
CYCLE语句的功能是:在循环体执行过程中强制性终止本次循环体的执行,转循环语句后的开始语句(DO语句)执行。
只能在DO和DO WHILE循环语句内使用CYCLE语句。
循环嵌套是指在一个循环结构或循环语句的循环体中又含有循环结构或循环语句。
chap.7 数组1 数组声明用类型声明语句进行数组声明INTEGER N(4),M(5,8)用DIMENSION语句进行数组声明DIMENSION num(3),day(12)用类型声明和DIMENSION属性进行数组声明INTEGER,DIMENSION(3):: num,total 维数及元素计算2 数组元素引用3 数组的逻辑结构和存储结构4 数组的输入输出1) 使用DO循环语句输入输出数组DO i=1,MREAD *,A(i)ENDDO2) 使用隐含DO循环子句输入输出数组READ *,(score(i),i=1,N)3) 使用数组名或数组片段输入输出数组READ *,score5 给数组赋初值1) 通过数组构造器给数组赋初值num1=(/2,4,6,8,10/) num1=(/(i,I=2,10,2)/)num1=(/2,4,(i,I=6,10,2)/)RESHAPEINTEGER B(2,3), C(8)B= RESHAPE((/1, 2, 3, 4, 5, 6/),(/2,3/))2) 通过DATA语句给数组赋初值6 动态数组INTEGER,DIMENSION(:),ALLOCATABLE :: numREAL,DIMENSION(:,:),ALLOCATABLE :: arrn=4;m=5ALLOCATE(num(5),arr(n,m))查找(折半查找)和排序chap.8 函数与子程序函数和子例行程序的区别1.语句函数的定义和使用F(x1,x2,x3)=3.14159*(x1+x2/60.0+x3/3600.0)/180.0●一个语句函数只能用一个语句定义完。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
署名循环
循环还可以取“名字”,这个用途是可以在编写循环是能明白地直到End do这个描述的位置是否正确,尤其是在多层循环当中。署名的循环也可以配合Cycle、exit来使用。
数组(Array)
数组的声明方法:Datatype name(size)
赋初值:
real ::a,b
real ::add
add =a+b
return
end
全局变量
Common是fortran77使用“全局变量”的方法,它用来定义一块共享的内存空间
program ex
implicit none
integer ::a,b
common a,b !定义a,b是全局变量中的第1及第2个变量
Character(len=30) ::name
Integer ::age
Integer ::length
Integer ::weight
End type person
Type(person) ::a !声明一个person类型的变量
a%name !引用person中的name
Kind的使用
Kind描述如果搭配上一些Fortran90的库函数,可以增加程序代码的“跨平台”能力
Implicit real(M-P) !M到P开头的变量都视为浮点数
Implicit none !关闭默认类型功能,所有变量都要事先声明
常数的声明方法(Parameter)
Program ex
Implicit none
Real ::pi
Parameter(pi = 3.14129)
Write(*,”(F4.2)”) sin(pi/6)
.eqv.两边表达式的逻辑运算结果相同时,整个表达式就成立
.neqv.两边表达式的逻辑运算结果不同时,整个表达式就成立
多重判断
If(条件1) then
……
Else if(条件2) then
Else
……
End if
浮点数及字符的逻辑运算
使用浮点数来做逻辑运算时,要避免使用“等于”的判断。因为使用浮点数做计算时,有效位数是有限的,难免会出现计算上的误差,理想中的等号不一定会成立。要使用浮点数来做“等于”的逻辑判断时,最好用其他方法来取代(ABS这个函数是取绝对值。使用误差小于某一个值来进行判断)
>=判断是否“大于或等于”.ge.判断是否“大于或等于”
<判断是否“小于”.lt.判断是否“小于”
<=判断是否“小于或等于”.le.判断是否“小于或等于”
逻辑判断式
.and.交集,如果两边的表达式都成立,整个表达式就成立
.or.并集,两边的表达式只要有一பைடு நூலகம்成立,整个表达式就成立
.not.逻辑反向,如果后面的表达式不成立,整个表达式就成立
a=1
b=2
call showCommon()
end
subroutine showCommon()
implicit none
integer ::num1,num2
common num1,num2 !定义num1,num2是全局变量中的第1及第2个变量
write(*,*) num1,num2
return
在fortran77中则要使用Data命令设置初值
Fortran 90 Fortran 77
program ex90
implicit none
integer ::a=1
real ::b=2.0
complex ::c=(1.0,2.0)
character (len=20) ::str="Hello Acuzio!"
IF基本用法
If(逻辑判断式) then
……
End if If(逻辑判断式) then
……
Else
……
End if
逻辑运算符:
Fortran 90 Fortran 77
==判断是否“相等”.eq.判断是否“等于”
/=判断是否“不相等”.ne.判断是否“不等于”
>判断是否“大于”.gt.判断是否“大于”
If(.not. allocated(a))then
Allocate(a(5))
End if
函数
子程序(subroutine)的使用
子程序代码以subroutine开头,它同样要取一个名字,以end或end subroutine来结束。严格地讲,end subroutine后还可以再接上这个子程序的名字
DO循环
Integer, parameter ::index = 1
Integer, parameter ::counts = 100
Do index,counts,1
……
End do Real,parameter ::weight =45.0 !答案
Real,parameter ::e=0.001 !误差
integer A(5)
Data a /1,2,3,4,5/ Integer a(5)
Data a /5*3/ !5个3 Integer A(5)
Integer i
Data(A(i),i=2,4) /2,3,4/
!这是一个隐含式循环,I会从2增加到4,依照顺序到后面取数字。初值设定结果为A(2)=2、A(3)=3、A(4)=4,A(1)和A(5)没有设定
l每个case中所使用的数值必须是固定的常量,不能使用变量
Pause, continue, stop
Pause的功能就跟它的字母意义相同,程序执行到pause时,会暂停执行,直到用户按下enter键才会继续执行。
Continue无实际用途
Stop结束程序执行
Fortran 90的库中,IAND用来做二进制的AND计算,IOR用来做二进制的OR计算
Integer,allocatable ::a(:) !声明一个可变大小的一位数组
Integer ::students
Read(*,*) students
Allocate(a(students)) !配置内存空间
计算机的内存是有限的,当然也就不能无限制地去要求空间来使用。所以allocate命令在内存满载是,有可能会要求不到使用空间。Allocate命令中可以加上stat的文本框得知内存配置是否成功
write (*,*) a,b,c,str
end program ex77
implicit none
integer a
real b
complex c
character (len=20) str
data a,b,c,str/1,2.0,(1.0,2.0),’Hello ‘/
write (*,*) a,b,c,str
Real ::guess
Do while(abs(guess-weight)>e)
Write(*,*) “Weight”
Read(*,*) guess
End do
循环控制:
Cycle和exit
Cycle命令可以略过循环的程序模块中,在cycle命令后面的所有程序代码,直接跳回循环的开头来进行下一次循环
Fortran 90提供库函数来判断所要记录的数值值域范围所需要的kind值
Selected_int_kind(n) :返回如果想要记录n位整数时,所应声明的kind.返回-1时,表示无法提供所想要的值域范围
Selected_real_kind(n,e) :返回如果想要能够记录具有N位有效位数、指数达到e位的浮点数所需要的kind值。返回-1表示无法满足所要求的有效位数、返回-2表示无法满足所要求的指数范围、返回-3表示两者都无法满足
Fortran 90隐含式循环的功能可以更强大
Integer ::a(5)=(/(I,I=1,5)/) !设置结果:a(1)=1,a(2)=2,a(3)=3,a(4)=4,a(5)=5
Where
Where是Fortran95添加的功能,它也是用来取出部分数组内容进行设置
Forall
Forall是fortran95添加的功能。间断地说,它也可以看出是一种使用隐含循环来使用数组的方法,不过它的功能可以做得更强大。
Allocate(a(100),stat=err) !err是事先声明号的整型变量,做allocate这个动作时会经有stat这个叙述传给err一个数值,如果err等于0则表示allocate数组成功,而如果err不等于0
则表示allocate数组失败
Deallocate(a)表示删除分配的内存
跟allocate相关的函数还有allocated,它用来检查一个可变大小的矩阵是否已经配置内存使用,他会返回一个逻辑值
Integer i
Integer ::a(5)
Forall(i=1:5)
A(1)=5
End forall
Forall详细语法为
Forall(triplet1[,triplet2[,triplet3……]],mask)
……
End forall
其中mask用来做条件判断
Fortran90可以声明可变大小数组
program ex
implicit none
integer ::a=1
integer ::b=2
call add(a,b)
end
subroutine add(first,second)
implicit none
integer ::first,second
write(*,*) first+second
end
在Fortran90里,Parameter可以作为形容词,和变量的声明同时写在一起