Fortran语言基础教程(第12-13章)
fortran 语言编程
fortran 语言编程Fortran 语言编程Fortran(Formula Translation)是一种面向科学计算和工程计算的高级编程语言。
它于1957年诞生于IBM,是最早被广泛采用的科学计算语言之一,目前已经发展到第四个版本(Fortran 2018)。
Fortran是一种编译型语言,它通过编写源代码并使用编译器将其转换成机器语言来执行。
本文将详细介绍Fortran语言的基础知识、语法规则和常用的编程技巧,以帮助读者了解和掌握这门强大的科学计算语言。
第一步:安装Fortran编译器要开始编写和运行Fortran程序,首先需要安装Fortran编译器。
有多种Fortran编译器可供选择,其中最常用的是GNU Fortran(gfortran)和Intel Fortran Compiler(ifort)。
可以从官方网站或其他可信的来源获得这些编译器的安装程序,并按照提示进行安装。
第二步:编写并编译Fortran程序在开始编写Fortran程序之前,需要了解Fortran的基本语法规则。
Fortran使用固定格式或自由格式,固定格式的源代码按照列格式排列,每行的前6列被保留用于行号和注释,从第7列开始是可执行代码。
自由格式没有列格式的限制,更加灵活,但在编译阶段需要指定自由格式。
下面是一个简单的Fortran程序示例,用于计算并输出两个数的和:fortranprogram additionimplicit noneinteger :: a, b, sumprint *, "Enter two numbers:"read *, a, bsum = a + bprint *, "The sum is:", sumend program addition将以上代码保存为一个以.f90为后缀名的文件(例如addition.f90),然后使用编译器将其编译成可执行程序。
FORTRAN语言自学基础
《FORTRAN语言》自学提纲第一章1 FORTRAN基础1. 一个FORTRAN程序由一个主程序或一个主程序与若干个子程序组成。
但一个完整的FORTRAN程序只能有一个主程序,主程序的第一个语句是PROGRAM语句,用以说明主程序的名称。
这个语句也可以省略,省略时默认为主程序的名称为MAIN。
2.FORTRAN的子程序主要有三种:⑴函数子程序,其第一个语句为FUNCTION;⑵子例行子程序,其第一个语句为SUBROUTINE;⑶数据块子程序,其第一个语句为BLOCK DA TA。
主程序与各个子程序可以独立编译,最后再链接成一个可执行程序。
在编写并输入一个FORTRAN程序时,既可以将主程序与各个子程序存放在一个文件中,也可以将它们分别存放在不同的文件中。
但必须注意,主程序与各个子程序都是独立的程序单位,每个程序单位的最后一行必须用END语句作为结束。
在主程序中,虽然END语句还具有使程序停止运行的作用,但由于一个程序单位只能在最后一行有END语句,因此,在程序的其它位置处需要停止运行时,只能用STOP语句,不能用END语句。
同样的道理,在子程序中,虽然END语句还具有使程序流程返回到调用程序的作用,但在子程序的其它位置(不是最后一行)需要返回到调用程序时,只能用RETURN语句,不能用END语句。
3.FOPTRAN源程序的书写格式有严格的规定。
⑴一行中第一列为“C”或“*”时,该行被认为是注释行。
注释行可以写在四个区中的一个区,且注释行可以出现在程序单位的任何位置。
但注释行不能有续行,需要时可以将连续若干行都定义为注释行。
⑵FORTRAN语句部分不能占用标号区及续行标志区,只能从第七列开始。
当语句太长时,可以使用续行。
在继续行的标号区内必须为空白(即继续行不允许有标号),标号只能出现在起始行上。
⑶起始行与继续行或各继续行之间的空格不起作用,因此,对于一般的语句,可以不必到72列才转为继续行,继续行也不必一定要从第7列接着写,但是,包括在引号内的字符串中的空格是有效的,因此,对于字符串要使用继续行时应特别注意,最好写到一行的72列时再转为继续行,且要从继续行的第7列接着写。
Fortran 程序基础
2021/7/1
26
数组操作
PROGRAM TEST IMPLICIT NONE ! 变量定义 REAL :: A1, A2,A3,A4,A5,B(5,5) READ(*, *)A1,A2,A3,A4,A5 ! 数组片断的引用 B(1,1:5) = A1 B(2,1:5) = A2 B(3,1:5) = A3 B(4,1:5) = A4 B(5,1:5) = A5
数组可用DIMENSION语句定义 DIMENSION runoff(365) Real runoff ※使用数组必须先定义
2021/7/1
25
数组操作
数组引用
(1)引用数组元素 数组名(下标),如 runoff(15),rain(3,5)
(2)引用全部数组 数组名,如: real B(10),A(10) B=A
2021/7/1
8
数据类型及I/0格式
变量的定义及类型说明:
(1)类型说明语句
integer year, month, day
real runoff
character*10 station
(2)隐含约定
I~N 规则
2021/7/1
9
数据类型及I/0格式
输入、输出语句
READ(设备号, 格式说明或格式说明语句标号) [变量列表] WRITE (设备号, 格式说明或格式说明语句标号) [变量列表]
其他程序控制语句 End Pause stop
2021/7/1
22
Fortran程序流程控制
实例分析
(1)1~100求和 (2)输入5个数,按大小排序
2021/7/1
23
数组操作
Fortran语言基本语法
Fortran语⾔基本语法a、Fortran 之基本规定:在Fortran的规定中,程序的开始需先宣告变量形式,接着才能⽤这些变量来写程序内容,再整个程序中的第⼀⾏必须空⽩,除⾮键⼊英⽂字母c或*⽤以表⽰那⼀列为说明项⽽⾮实际之计算式⼦。
第⼆⾏⾄第五⾏为地址⾏,可⽤数字标⽰其地址,⽤以执⾏程序时控制之⽤。
第六⾏⽤以填⼊⼀个⾮零的数字或字母表⽰连结上⼀列的式⼦。
第7⾏⾄72⾏则为程序主体之所在,若不⼩⼼在72⾏之后键⼊程序Fortran将不于理会。
再程序的最后⼀列⽤ end命令告知程序终了。
b、变量(Variable)Fortran语法中的变量相当于函数上变量,但其种类则更多,举凡复数(complex)、整数(integer)、实数(real)、逻辑(logical)和字符串(character)等等。
对于变量的规定是变量的第⼀个字母为英⽂字母,其长度最长为6个字,除刚刚说的第⼀个字之外,其余的可为数字或字母,以下为⼏个简单范例: Integer count,pg1real time,po2pc、运算符号与内定函数:Fortran 基本的运算符号如下:+加法;-减法;*乘法;/ 除法**平⽅;**(n) n次⽅除了上列之基本运算符号之外,数值计算上常⽤之函数如三⾓等等亦以写成内定含式,常⽤的以下⼏项:log 对数函数;exp 指数函数;sin、cos、tan、cot、sec和csc等三⾓函数;abs 绝对值;asin、acos、atan、acot、asec和acsc等反三⾓函数。
D、控制结构:结构化Fortran有⼀些控制的结构,关系控制即是其中之⼀种,⽤以⽐较两变量之间关系,包含有:.lt. 表⽰⼩于.gt. 表⽰⼤于.eq. 表⽰等于.le. 表⽰⼩于或等于.ge. 表⽰⼤于或等于.ne. 表⽰不等于另⼀种重要的控制为逻辑控制,包含有:.not. .not. p => 若p为⾮真则为真.and. p .and. q => p和q为真则为真.or. p .or. q => p或q其⼀为真则为真.eqv. p .eqv. q => p和q同为真或同为⾮真则为真.neqv. p .neqv. q => p或q之中⼀为真⼀为⾮真则为真e、输⼊与输出结构:> Fortran 经常会有⼀些数值需要输⼊或计算的值需要输出,这时 Fortran 便提供了⼀些格式码好让使⽤者将欲输⼊或输出的数值针对其变量的特性作较佳的安排设计,兹举例如下,其中输出之资料格式完全相同:a、write(*,10) i,j,k10 format (1x,2I5,I3)b、assign 10 to ifmt10 format (1x,2I5,I3)write (*,ifmt) i,j,kc、write (*,'(1x,2I5,I3)') i,j,kd、character*11 fmtchfmtch='(1x,2I5,I3)'write (*,fmtch) i,j,k其中X表⽰空格之意,1x即是空⼀格, write为输出的指令,若改为 read 则为输⼊指令,I为整数的格式码, 2I5 表⽰输出的总位数为五,⽽这样的格式重复两次,其余尚有不同之各种格式码,常⽤的有:1. F 格式码,⽤于实数变量,其⼀般型态为 rFw.d ,其中F表实数,r为重复次数,w为总位数,⽽d为⼩数字数。
Fortran基础
P2 例1.3 求两个正整数 m,n (m>n)最大公约数 最大公约数
m=n*q+r (q>=0,r>=0,r<n) r=0, 若r=0,则n为最大公约数
输入m,n 第1步 输入m,n
除以n的余数r 第2步 求m除以n的余数r 第3步 若 r=0,转向第6步 否则执行第4步 r=0,转向第6 否则执行第4 转向第 送给m, m,将 送给n 第4步 将n送给m,将r送给n 返回第2 第5步 返回第2步 输出n 第6步 输出n
Fortran90 语言程序设计
第一章 Fortran 程序设计基础
• Fortran语言出现的历史背景 语言出现的历史背景
• Fortran语言是在世界上广泛应用的、出现最 语言是在世界上广泛应用的、 语言是在世界上广泛应用的
早的计算机语言之一。Fortran 是formula 早的计算机语言之一。 translator (公式翻译器)的缩写,最适于数 公式翻译器)的缩写, 值计算 。 • 20世纪 年代第一个 世纪50年代第一个 语言版本问世, 世纪 年代第一个Fortran 语言版本问世, 多种版本的Fortran ,互不兼容, 互不兼容, 相继出现了 多种版本的 从而标准化便显得十分迫切 ,其中 比较流行 的是Fortran 66(1966年)和Fortran 77。 的是 ( 年和 。 • 1991年推出了 Fortran90版本 吸收其他高级 版本, 年推出了 版本 语言的优点 ,使古老的语言焕发了新的活力。 使古老的语言焕发了新的活力。
P6 例 1.6 输入 个数,找出其中最大者。 输入10个数,找出其中最大者。 个数
输入max 输入 1→i 当i≤9时 时 输入x 输入 x>max? Y N x→max i+1→i 输出max 输出
fortran教程.ppt
N-S 图——结构化流程图 S=0
例2 用N-S图表示
N=1
S+1/N= S
N+1= N
直到N>100为止
打印 S 值
例1 用N-S图表示
N=0 T=0
输入 A A+T →T N+1 →N 直到N≥100 为止 打印 T
例3
L=1
N=1
S=1
SUM = 1
L+2 → L
-S → S
N+1 → N
SUM+S/L →SUM
(3)输入一个数给“收入变量”A
(4)将A和T的值相加,其和值放在变量T中 A+TT;
(5)使N的值加1,即N+1 N(N的值表示已累加数据的个数)
(6)若N﹤100,则返回(3)继续执行以后各步,否 则转到执行(7)
(7)打印出总和T的值
以上算法体现“迭代”的思想—计算机算法的最大特 点
例2 求 1
将高级语言程序(源程序)转换为机器语言程序(目标程序)
的工作由“编译程序”来完成。 编译
执行
高级语言程序
机器指令目标程序
计算结果
编译程序 (预先存如电脑)
裸机
用户源程序
操作系统
高级语言编译系统
计算机系统与操作系统关系示意图
§ 1-2 算法(Algorithm)与程序设计(Programming)
1. 近50年的丰富积累,资源不浪费,对原有程 序向下兼容。而C语言与Matlab才20多年
2. FORTRAN书写和语法要求严格,更适合于 严谨的科学计算。而C对数组不提供越界检查, 容易出错,而且不容易查出
3. FORTRAN 90~95可以直接对矩阵和复数进行 运算。而C语言则要用多重循环
Fortran第12章
4、打开文件时的状态分类:老文件、新文件 老文件:打开文件时,文件已存在 新文件:打开文件时,文件不存在
注意:文件应先连接(即打开)或预连接 ,再读写
12.1.3 逻辑设备
1.特殊设备号:由系统预先定义 用设备号5定义键盘,设备号6定义显示器 *即可定义键盘又可定义显示器 注意:这些设备是预连接的,不需要打开就可以直接使用 2. 内部文件的设备号:不需要打开就可以直接使用
OPEN(2,FILE=‘A.DAT’,ACCESS=‘DIRECT’, FORM=FORMATTED’,RECL=12)
RECL:规定记录的统一长度 例:无格式顺序文件OPEN语句的最简形式 OPEN(2,FILE=‘A.DAT’, ‘FORM=UNFORMATTED’) 例:无格式直接文件OPEN语句的最简形式
=‘NO’:遇下一个输入语句不换行读取
WRITE的选项 IOSTST=IT IT为整型变量执,执行此语句时获得数 值,<0表遇到文件结束信息 >0 此操作发生错误 =0 执行成功 无此项,读写发生错误将报错,并停止运行 ADVANCE=‘YES’(默认值):遇下一个输出语句换行 输出 =‘NO’:遇下一个输出语句不换行输出
例:无格式顺序文件OPEN语句的最简形式 OPEN(2,FILE=‘A.DAT’, FORM=‘UNFORMATTED’) 例:无格式直接文件OPEN语句的最简形式 OPEN(2, FILE=‘A.DAT’, ACCESS=‘DIRECT’, RECL=16)
2、 READ语句最简写法:
无格式顺序文件、直接文件的READ语句:与有格式的区别是 去掉格式说明这一项 顺序文件READ (设备号)输入表 直接文件READ (设备号,REC=记录号)输入表 例:READ(10)I,J READ(10,REC=3)I,J 3、 WRITE语句最简写法: 例:WRITE(10)I,J WRITE(10,REC=3)I,J
Fortran核心内容教程
3.5 常 量
3.5.2 实型常量 (有二种表示形式) ⒈小数形式 例:15.8,-21.05,14.0 ,14.,.17, 0.0 ,… ⒉指数形式(通常表示较大或较小的数) 例:100000000→1.0E+8 0.0000125→1.25E-05 数字部分 指数部分
2015/11/24 16
3.5 常 量
常量——在程序执行期间其值固定不变的量。 Fortran处理六种类型的常量: ⑴整型常量(Integer) ⑵实型常量(Real) ⑶双精度常量(Double precision) ⑷复型常量(Complex) ⑸逻辑型常量(Logical) ⑹字符型常量(Character)
2015/11/24 5
Fortran语言的特征
Fortran语言的最大特性是接近数学公式的自然描 述,在计算机里具有很高的执行效率。 易学,语法严谨。 可以直接对矩阵和复数进行运算。 自诞生以来广泛地应用于数值计算领域,积累了大 量高效而可靠的源程序。 很多专用的大型数值运算计算机针对Fortran做了 优化。 广泛地应用于并行计算和高性能计算领域。 Fortran 90,Fortran 95,Fortran 2003的相继推 出使Fortran语言具备了现代高级编程语言的一些 特性。
2015/11/24 26
3.6 变
量
⒉显式说明 即用类型说明语句指定变量的类型。 如: Integer——说明变量为整型变量 Real——说明变量为实型变量 Double precision——说明变量为双精度变量 Complex——说明变量为复型变量 Logical——说明变量为逻辑型变量 Character——说明变量为字符型变量
2015/11/24 15
Fortran课件12
6. 使用integer(4)定义,整数范围可扩大到-2147483648~ 2147483647;使用complex(8)定义,复数的实部、虚 部都为双精度数。 7. 扩充C字符串功能,如”\a” c代表响铃, ”\t” c 和 ”\v” c 分别代表横竖向制表,其后的“c”不能省。
8. 扩充C字符串功能,如”\a” c代表响铃, ”\t” c 和 ”\v” c 分别代表横竖向制表,其后的“c”不能省。 9. 以下符号可等同使用.LT.与<、.GT.与>、.EQ.与==、 .NE.与/= 、.GE.与>= 、.LE.与<= 。 10. 使用块case实现多路分支 。 select case(int(price)) case(5:10) 11. 可以使用二进制、八进制 write(*,*) ’cheap’ 和十六进制的B、O、Z编 case(11: ) 辑符 以及T等控制编辑符。 write(*,*) ’expensive’
第十二章 Fortran专题
1
一、公用语句
一般推荐使用虚实结合的方式传递数据。但大量的 数据需要传递时,虚实结合速度较慢,此时可开辟共用 区。开辟共用区用common语句。 无名 公用区 程序中只能有 一个无名公用区 有名 主程序 common /c1/ p, q, k, a(6) 公用区 子程序1 common /c1/ f, g, m, a(6) /c2/ r, w(2,3) 子程序2 common /c1/ u, v, n, a(6) /c2/ r, w(2,3) 主程序 common x, y, i, z(3) 子程序 common a, b, j, t(3)
7
三、Fortran90的新特点
1. 所有Fortran77的规定Fortran90均可识别,以扩展名 区分,“.for”代Fortran77,“.f90”代Fortran90。 2. Fortran90的语句行可以是0~132个字符;取消了书写 的列规定;一行可多条语句,之间以分号隔开;关键 字、常量、变量中不留空格。 program sample 3. “!”之后的语句作为注释 !这是一个简单的例子 语句,可放在程序的任何 character name*20 地方,包括其他语句之后。 name='***' write(*,*) 'Hello!',& 4. “&”作为续行符放在需续 name !已使用续行符 行的语句之尾。 write(*,*) 5. 变量等起名可用1~31个字 write(*,*) 'Please feel at',& ' home in Fortran90!' 符,以字母开头,后跟字 end 母、数字、下划线均可。
fortran语言语法
FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。
经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。
目前,工科院校开设的计算机编程语言课首选仍然是FORTRAN :<说实话,从科技发展的趋势来说这不是好事。
您可以设想一下,如果需要用鹅毛笔抄写大量的古籍是什么感受!强烈建议阅读《发掘C#特性赋予科学计算项目以威力》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字符位以后不能有内容。
Part_I_Fortran语言基础
Part_I_Fortran语言基础数值分析程序设计Part I F ortran语言基础COMPAQ VISUAL FORTRAN 6.50编译器的使用0.1 编译器简介高级语言以及汇编语言的程序代码在没有转换成机器代码前,计算机是无法执行的。
编译器的功能是将高级语言的程序代码翻译成计算机可执行的机器码,也就是生成扩展名为EXE, COM的文件。
0.2 Visual Fortran的使用Visual Fortran起源于Microsoft的Fortran PowerStation 4.0,这套工具后来卖给Digital公司继续开发,第二个版本称为Digital Visual Fortran 5.0,Digital 被Compaq并购之后,接下来的版本6.0和6.5称为Compaq Visual Fortran。
下面的介绍以Compaq Visual Fortran 6.5作范例。
Visual Fortran被组合在一个叫做Microsoft Visual Studio的图形接口开发环境中。
Visual Studio提供一个统一的使用接口,这个接口包括文字编辑功能、Project管理功能、调试工具等。
而编译器则被组合到Visual Studio中,VF和VC++使用相同的使用接口。
Visual Fortran 6.5除了完全支持Fortran 95的语法外,扩展功能方面提供了完整的Windows程序开发工具,专业版还含有IMSL数值计算连接库。
另外还可以和VC++直接互相连接使用,也就是把Fortran和C语言的程序代码混合编译成一个执行文件。
安装好Compaq Visual Fortran后,运行Developer Studio就可以开始编译Fortran程序了。
数值分析程序设计——Fortran基础运行Developer Studio启动Visual Fortran,默认程序名称为Compaq Visual Fortran 6.5选择File菜单中的New选项在弹出的对话框中,选择Project标签。
(完整)Fortran经典编程语言笔记(你值得拥有)
(完整)Fortran经典编程语言笔记(你值得拥有)FORTRAN笔记2014.10.07目录第七讲_FORTRAN的基本知识.ppt (2)FORTRAN语言程序设计初步 (2)FORTRAN源程序的书写格式(以77为例) (2)变量 (2)变量类型 (2)算术运算符和运算优先级 (3)赋值语句 (3)参数语句(PARAMETER语句) (3)END语句 (3)PAUSE语句 (3)逻辑运算和选择结构 (4)关系表达式 (4)FORTRAN中数组的定义及使用 (4)其他 (5)1. fortran语言定义CHARACTER*6 TTL(14,3),CNAM(400)是什么意思? (5)2. fortran里character*10 是什么意思 (5)3. Fortran中kind是什么函数? (5)第七讲_FORTRAN的基本知识.pptFORTRAN语言程序设计初步FORTRAN是Formula Translation的缩写,意为“公式翻译”,它是为科学、工程问题或企事业管理中的那些能够用数学公式表达的问题而设计的,其数值计算的功能较强。
常用的是FORTRAN77和FORTRAN90两种标准。
1、一个程序由若干个程序单位组成。
主程序和每一个子程序分别是一个独立的程序单位。
2、每一个程序单位都是以“END”结束的。
3、一个程序单位包括若干行。
1)语句行。
由一个FORTRAN语句组成。
2)非语句行,即注释行。
4、FORTRAN程序中的语句可以没有标号,也可以有标号,根据需要而定。
标号的作用是标志一个语句以便被其他语句引用。
5、一个程序单位中各类语句的位置是有一定规定的。
6、FORTRAN源程序必须按一定的格式书写。
FORTRAN源程序的书写格式(以77为例)每一行有80列,分别如下:1、第1-5列为标号区。
一行中第一列为“C”或“*”,该行即被认为是注释行。
2、第6列为“续行标志区”,如果在一行的第6列上写一个非空格和非零的字符,则该行作为其上一行的续行。
fortran教程
1、赋值时,自动进行类型、种别转换。对逻辑型、字符型要求类型 一致。字符型要求种别一致。
2、复型常数形式:(a,b)。 3、类型转换函数:
INT(X), INT(X,KIND), REAL(X), REAL(X,KIND), CMPLX(X,Y), CMPLX(X,Y,KIND)。 4、对数组所作的基本函数操作相当于对数组内每个元素施加该操作。 5、不同种别参数的数据运算时,结果取决精度或允许值范围较大的 那个种别参数。
对字符型常数,用前缀法,即把种别参数放在前,再加下划线,再跟字符常数。如 5_'a bc'。
6、属性 a.常数名属性。如:INTEGER,PARAMETER::Y=12 说明 Y 为常数,在 程序中不能改变其值。 b.数组属性。如:INTEGER(KIND=2),DIMENSION(-3:10)::X 说明 X 是数组(-3:10)。 c.意图属性。只用于子程序中。如: INTEGER.INTENT(IN)::X 说明 X 用来传入。 INTEGER.INTENT(OUT)::X 说明 X 用来传出。 INTEGER.INTENT(INOUT)::X 说明 X 先传入值,再传出。 d.没有属性的只是基本变量。
2、写语句 WRITE (部件号,格式说明)输出表 PRINT 格式说明,输出表 PRINT *,输出表 WRITE (说明符 1,说明符 2,...,说明符 n)输出表
3、表控格式 a.输入复数时要加括号。 b.当需要输入几个连续无效值时,可输入 r*,r 是重复系数。若某 个数以后的所有数都无效,可用/表示。如: 2.1,2*,5.1 2.1,3.1/ c.输出时一般每个数占 16 列,靠右对齐,左补空格。
在形状描述中要指明上下界,可以有变量。如分配成功,STAT 赋零,出错则大于零。 c. 释放语句 DEALLOCATE(数组名,数组名,...[,STAT=变量名]) 第五章 过程
fortran 简明教程
fortran 简明教程Fortran是世界上最早的高级程序设计语言之一,广泛应用于科学计算、工程和数值分析等领域。
以下是Fortran的简明教程:1. 程序结构:一个Fortran程序由不同的程序单元组成,包括主程序、子程序和模块等。
每个程序单元都以END结束。
主程序是程序的入口点,可以包含变量声明、执行语句和控制语句等。
子程序可以包含函数和子例程,用于执行特定的任务。
模块用于提供程序中的公共代码和数据。
2. 变量声明:在Fortran中,变量必须先声明后使用。
变量类型包括整数型、实数型、字符型等。
例如,声明一个整数型变量可以这样写:INTEGER :: x3. 执行语句:执行语句用于控制程序的流程和执行顺序。
Fortran提供了多种控制语句,如IF语句、DO循环、WHILE循环等。
例如,使用IF语句进行条件判断:IF (x > 0) THEN y = x x ELSE y = -x x END IF4. 输入输出:Fortran提供了基本的输入输出功能。
可以使用READ语句从标准输入读取数据,使用WRITE语句将数据输出到标准输出。
例如,读取一个实数并输出到屏幕:READ(,) x WRITE(,) x5. 数组和矩阵:Fortran支持一维和多维数组,以及矩阵运算。
例如,声明一个二维实数数组并赋值:REAL :: A(3,3) A =RESHAPE((/1,2,3,4,5,6,7,8,9/), (/3,3/))6. 子程序和模块:子程序可以用于封装特定的功能或算法,并在主程序中调用。
模块可以包含公共的函数、子例程和变量等,用于提供可重用的代码和数据。
7. 调试和优化:Fortran提供了多种调试工具和技术,如断点、单步执行、变量监视等。
还可以使用性能分析工具来检查程序的性能瓶颈并进行优化。
以上是Fortran的简明教程,希望能帮助您快速入门Fortran编程。
Fortran语言教程
Fortran语言教程Fortran(Formula Translation)是一种面向科学和工程计算的高级程序设计语言,由IBM公司于1950年代初开发。
它是世界上第一种高级程序设计语言,也是最早被广泛应用于科学计算领域的编程语言之一、Fortran在过去几十年中一直是科学计算领域中最受欢迎的编程语言之一,它提供了丰富的数值计算和数组处理功能,并具有高效的性能。
Fortran语言的主要特点是其简洁、清晰的语法结构和丰富的数学函数库。
它使用类似于数学公式的语法,使得编写科学计算程序变得更加直观和容易。
Fortran支持各种数据类型,包括整型、实型、复型和字符型等。
它还提供了强大的数组操作功能,可以方便地进行矩阵运算和向量处理。
此外,Fortran还支持模块化编程和面向对象编程的特性,使得程序的开发和维护更加灵活和高效。
Fortran语言的代码以子程序(subroutine)为基本单位,程序的执行从主程序开始,通过调用子程序来完成具体的计算任务。
子程序可以接受输入参数,并返回计算结果。
这种模块化的设计使得程序的结构清晰,易于理解和维护。
Fortran还支持递归调用,可以方便地处理复杂的计算问题。
Fortran语言还具有很好的可移植性和跨平台性。
由于Fortran语言的标准化程度较高,因此几乎所有的Fortran编译器都遵循相同的语法规则和标准库函数接口。
这使得Fortran程序可以在不同的计算机平台上进行编译和运行,而不需要进行太多的修改。
虽然Fortran语言在过去几十年中一直是科学计算领域的主流语言,但随着计算机硬件和编程技术的快速发展,它的地位逐渐下降。
现在,许多科学计算任务更倾向于使用更现代的编程语言,如C、C++和Python等。
但是,由于Fortran在科学计算领域的广泛应用和丰富的数值计算功能,它仍然是一种重要的编程语言,尤其在一些特定的领域,如气象学、物理学和地球科学等。
总结起来,Fortran是一种面向科学和工程计算的编程语言,具有简洁、清晰的语法结构和丰富的数值计算功能。
FORTRAN语言程序设计入门到精通
5.6.2 常量
整型、实型、复型常量是一个代数值;逻辑型常量是一个逻辑值 (.true.或.false.);字符型常量是一个字符串。以上常量均以书写方式确 定其类型。
5.6.2.1 整型常量
整型常量表示普通代数中的整数。
十进制整型常量的一般形式:±n[ _Kind值]
其中: ±是该整型常量的符号。
5.6.2.5 逻辑型常量 在程序中用以表示某个条件(关系表达式和逻辑表达式)的判别结果。 一般形式:.TRUE. 即为逻辑真(表示判别条件成立)。 .FALSE. 即为逻辑假(表示判别条件不成立)。 例:条件5 > 3的判别结果是.TRUE. ,表示判别条件5 > 3成立。 条件3 < 1的判别结果是.FALSE.,表示判别条件3 < 1不成立。
实型常量表示普通代数中的小数或指数。
1.小数实型常量
一般形式:±n .m
或±n.
或±.m
其中:n、m是十进制数字序列。 n是整数值,m是小数值。
例: 12.0 、0.12 、12. 、.12
2.指数实型常量
一般形式:±n .mE±s 或±n E±s
其中:n、m是十进制数字序列。 n是整数值,m是小数值。
1.2.2 程序设计步骤 1.分析问题 2.建立数学模型 3.选择算法 4.编写程序 5.调试运行 6.分析结果 7.写出程序的文档
第二章 算 法
2.1 算法概述
1.算法:计算机解题的方法和步骤. 2.算法特征: (1)有穷性
一个算法必须总是在执行有限步骤之后结束。 (2)确定性
算法中的每一个步骤应当是确定的,无二义性;相同的输入只能得出相 同的输出。 (3)可行性 算法中的每步骤都是有效地执行。 (4)有零个或多个输入 (5)有一个或多个输出 3.算法的分类: (1)数字运算:用于求数值解,此类算法有现成的模型,运用较成熟. (2)非数字运算:用于非数据处理的一些事务性工作,此类算法面广量大, 要求各异,有一定难度.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12.2 公用语句
通过上一章的学习,我们知道程序中不同程 序单位之间的数据交换是通过虚实结合来完 成。 另外FORTRAN还可以通过建立公用区的方 法来实现各程序单位之间的数据交换。
公用区和虚实结合比较起来有其缺点——程 序阅读性下降;有其优点——运行速度快 (特别当有大量数据需要传送时)。
2016/1/7 20
12.2.1 无名公用区
6. 在一个程序单位中,分配在公用区中的名字 只能在COMMON语句中出现一次。 例: COMMON A,B,C COMMON A1,B1,C 错误:C在COMMON语句中出现了两次 7. 在不同的程序单位中,无名公用区中的变量 个数可以不一样。但必须保证对应的变量类 型要一致。如: 主程序中有:COMMON X(9), A, B, C, D 子程序中有:COMMON A(4), X(2)
2016/1/7 24
12.2.2 有名公用区
解决方法二:利用有名公用区 主程序: COMMON A, B, C /C2/ J, K, L 子程序1:COMMON A1, B1, C1 子程序2:COMMON /C2/ J2, K2, L2 此时A,B,C仍放在无名公用区中;而J,K,L放 在名为C2的公用区中。 利用有名公用区就避免了无名公用区的弊病, 使之做到公用之中有“专用”,只需在各个 程序单位中做到同名共用区中数据顺序一一 对应即可。
2016/1/7 2
12.1 等价语句 (EQUIVALENCE语句)
例 2: EQUIVALENCE (W, ST), (x, y, z) 例 3: EQUIVALENCE (R, K) R = 1.2 X=K 此时 X = ?
2016/1/7 3
12.1 等价语句 (EQUIVALENCE语句)
15
程序举例:解一元二次方程的根
例12.2 通过虚实结合和公用区两种方式交换数据
主程序: COMMON Z1, Z2 READ*, A1, A2, A3 CALL QUAD(A1, A2, A3) WRITE(*,*) Z1, Z2 END SUBROUTINE QUAD(A,B,C) COMMON X1, X2 P = -B/(2.0*A) Q = SQRT(B*B - 4.0*A*C)/(2.0*A) X1 = P + Q X2 = P - Q END
EQUIVALENCE (W, ST), (x, y, z)
2016/1/7 5
12.1 等价语句 (EQUIVALENCE语句)
等价语句的使用规则:
4. 数组的等价。 例1:DIMENSION a(8), b(4, 2), c(2, 2, 2) EQUIVALENCE(a, b, c) 以上等价语句表明a、b、c三个数组都从第一个 元素起共享八个存储单元。这个等价语句相当 于: EQUIVALENCE(a(1), b(1,1), c(1,1,1)) a,b,c三数组在内存中的存储分配如下:
B(1) B(2) B(3) B(4)
L(1)L(2)L(3)L(4)L(5)L(6)L(7)L(8)
2016/1/7 9
12.1 等价语句 (EQUIVALENCE语句)
等价语句的使用规则:
5. 不能利用等价语句建立矛盾的等价关系。例如: DIMENSION A(10) EQUIVALENCE(X, A(1)), (X, A(3)) × 此处A(1)和A(3)是同一个数组中的元素,A(1)和 A(3)不可能分配同一个存储单元,所以X既要和 A(1)分配的单元相同,又要和A(3)分配的单元 相同,明显不可能。 以下的等价关系也是错误的: DIMENSION A(5), B(10) EQUIVALENCE(A(1), B(2)), (A(3), B(3)) ×
2016/1/7 19
12.2.1 无名公用区
5. 各程序单位COMMON语句中的变量类型必 须按位置一一对应一致才能正确传送数据。 例:以下COMMON语句使用错误 主程序: COMMON A(5), I 子程序: COMMON B(4), J, P 其中数组元素A(5)(实型)和子程序中 的变量J(整型)共用存储单元,还有主程 序中的I(整型)和子程序中的P(实型)共 用存储单元都是错误的。
2016/1/7 14
程序举例:解一元二次方程的根
例12.1 完全通过虚实结合交换数据
主程序: READ*, A1, A2, A3 CALL QUAD(A1, A2, A3, Z1, Z2) WRITE(*, *) Z1, Z2 END 子程序: SUBROUTINE QUAD(A, B, C, X1, X2) P = -B/(2.0*A) Q = SQRT(B*B - 4.0*A*C)/(2.0*A) X1 = P + Q X2 = P - Q END 2016/1/7
2016/1/7 18
12.2.1 无名公用区
3. 用于COMMON语句中的变量在编译时已经 被分配在实在的存储单元中,因此在 COMMON语句中不能出现虚拟参数和可调 数组。 4. 一个程序在运行过程中只有一个无名公用区。 同一个程序单位中可以出现几个COMMON 语句,它们的作用相当于一个。 例: COMMON A, B, C, D COMMON A1, B1, C1, D1 相当于: COMMON A, B, C, D, A1, B1, C1, D1
2016/1/7
23
12.2.2 有名公用区
根据一一对应的原则 解决方法一: 主程序: COMMON A, B, C, J, K, L 子程序1:COMMON A1, B1, C1 子程序2:COMMON A2, B2, C2, J2, K2, L2 此时子程序2中的A2,B2,C2,从语法角度是 必需的,但它们从使用角度却是冗余的。当一 个主程序和若干个子程序间进行大量的数据 传送时,书写COMMON语句就显得很烦琐, 而且也容易出错。
2016/1/7
7
12.1 等价语句 (EQUIVALENCE语句)
例 3: DIMENSION A(2,3), B(4) EQUIVALENCE (A(1, 2), C), (B(1), C) 数组A、B和变量C在内存中的存储分配如下:
A(1,2) A(1,1) A(2,1) C B(1) A(2,2) A(1,3) A(2,3)
第十二章 数据共用存储单元和数据块子程序
2016/1/7
1
12.1 等价语句 (EQUIVALENCE语句)
EQUIVALENCE语句又称等价语句,形式 如下: EQUIVALENCE (变量表1), (变量表2), … 每一对括号内的变量表中,可以是变量 名、数组名或数组元素 例 1: EQUIVALENCE(W,ST) 这条语句指定本程序单位中的变量W和ST 同占一个存储单元,通常称W和ST等价。
2016/1/7 6
12.1 等价语句 (EQUIVALENCE语句)
例 2: DIMENSION A(2,3), B(4) EQUIVALENCE ( A(1, 2), B(1) ) 数组A、B在内存中的存储分配如下:
A(1,2) A(1,1) A(2,1) B(1) A(2,2) A(1,3) A(2,3) B(2) B(3) B(4)
2016/1/7 13
12.2.1 无名公用区
说明: 编译程序在编译时为以上COMMON语句开 辟一个无名公用区; 当把不同的程序单位连接(link)在一起的 时候,不同程序单位在COMMON语句中的 变量按其在语句中出现的先后顺序,依次连 续的占用无名公用区的存储单元。 COMMON语句开辟公用区的主要用途: – 使不同程序单位的变量之间进行数据传送 – 节省存储空间
2016/1/量是相互独 立的,尽管它们的变量名有时相同。但如果 我们在主程序和子程序中都加上一条 COMMON语句的话,如: COMMON X
–此时编译程序在存储区中开辟了一个公用数据 区。这时主程序和子程序中的两个变量X就共用 一个存储单元,而不是相互独立了。
2016/1/7 22
12.2.2 有名公用区
我们已经知道,无名公用区中各程序单位之 间数据传送按公用区中变量名的排列顺序一 一对应进行。但我们在实际使用中常常会遇 到下面的问题。 例:主程序要和两个子程序进行数据传送。 主程序: COMMON A, B, C, J, K, L 子程序1需要与主程序传送A,B,C三个数据; 子程序2需要与主程序传送J,K,L三个数据;
子程序:
2016/1/7
17
12.2.1 无名公用区
二、无名公用区的COMMON语句使用规则 1. COMMON语句是说明语句,必须出现在所 有可执行语句之前。 2. COMMON语句中只允许出现变量名、数组 名或数组说明符(即可用COMMON语句说 明数组)。 例: COMMON A, B, NP(15), LOC(2, 4) 等价于: DIMENSION NP(15), LOC(2, 4) COMMON A, B, NP, LOC
子程序:
2016/1/7
16
程序举例:解一元二次方程的根
例12.3 完全通过公共区交换数据
主程序: COMMON Z1, Z2, A1, A2, A3 READ*, A1, A2, A3 CALL QUAD WRITE(*,*)Z1,Z2 END SUBROUTINE QUAD COMMON X1, X2, A, B, C P = -B/(2.0*A) Q = SQRT(B*B - 4.0*A*C)/(2.0*A) X1 = P + Q X2 = P - Q END
2016/1/7 21
12.2.1 无名公用区
8. 不要混淆EQUIVALENCE和COMMON语句
EQUIVALENCE语句是给同一程序单位中的不 同变量分配同一个存储单元 COMMON语句则用于给不同程序单位的变量分 配同一存储单元 因此不允许在同一程序单位中写: COMMON A, B, C EQUIVALENCE(A, B) 因为COMMON语句把变量A, B, C分配在公用区 的相邻的三个存储单元中,而EQUIVALENCE 语句却又把A, B分配在同一个存储单元中,这是 矛盾的,因此禁止以上写法。