fortran数据共用存储单元和数据块子程序
fortran
或OPERATOR(运算符)
或ASSIGNMENT(=) 其中,类属子程序名用于定义类属子程序、 OPERATOR用于超载运算符、ASSIGNMENT用 于超载赋值运算,具体内容我们下一节介绍。
关于接口定义的几点说明:
⑶ 接口内的语句称为接口体。 接口体的一般形式为: FUNCTION语句 [说明部分] END [FUNCTION语句] 或 SUBROUTINE语句 [说明部分] END [SUBROUTINE语句]
方法: 定义一个新的运算符与超载一个已有的运算符的方式 基本相似,可以在INTERFACE语句中含有这个运算 符的名字,定义运算的函数子程序应该有一个或两个 INTENT属性为IN的变量,函数子程序名应包含在 MODULE PROCEDURE语句中。 INTERFACE OPERATOR (.PRIME.) MODULE PROCEDURE PRIME END INTERFACE 现在这个运算符就可以和其它一元运算符一样使用, 例如下面的IF语句: IF(.PRIME. B .AND. B > 100)THEN… 一个自定义二元运算符的优先级总低于其他运算符, 而一个自定义一元运算符的优先级总高于其他运算符。
一个例子:
PROGRAM USE_MODULE USE MY_MODULE IMPLICIT NONE 注意:USE语句出现 REAL::A, B 的位置,在IMPLICIT NONE语句前面 READ *, A B=PI CALL SWAP (A, B) PRINT *, A, B END PROGRAM USE_MODULE
10.4.2 超载赋值号
在执行赋值语句时,赋值号“=”右边表达式的 数据类型将会转换为左边变量的数据类型并赋 值。例如,当I是整型变量而R是实型变量时, 下列赋值语句将把I的整型值转换为实型并赋 予R: R = I 如果我们希望延伸这种功能,使得一个逻辑型 的值能够赋予一个整型变量。如在执行赋值语 句:I = L时(其中L是逻辑型,而I是整型), 使.FALSE.相当于0,使.TRUE.相当于1。为此, 我们需要编写一个子程序完成此功能并用一个 接口块来指明完成转换的子程序名。
fortran语言语法
FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。
经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。
目前,工科院校开设的计算机编程语言课首选仍然是FORTRAN :<说实话,从科技发展的趋势来说这不是好事。
您可以设想一下,如果需要用鹅毛笔抄写大量的古籍是什么感受!强烈建议阅读《发掘C#特性赋予科学计算项目以威力》1 FORTRAN77四则运算符+ - * / ** (其中**表示乘方)在表达式中按优先级次序由低到高为: +或-→*或/→**→函数→()2 FORTRAN77变量类型隐含约定:I-N规则凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。
用类型说明语句确定变量类型:可以改变I-N规则用IMPLICIT语句将某一字母开头的全部变量指定为所需类型如IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。
数组的说明与使用使用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))使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/,,DATA A/,B/,C/DATA A,B,C/3*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 90第八章子程序
3.语句函数表达式 语句函数表达式说明函数与参数的对应关系,在函数表达式中,可以包含常量、 变量、函数虚参(虚参必须包含在表达式中)、FORTRAN 90内在函数、数组以及 前面已经说明了的语句函数。 4.关于语句函数的进一步说明 (1)只有当函数关系简单,可以用一个语句描述函数与参数的对应关系时, 才能使用语句函数。 (2)语句函数是非执行语句,语句函数的定义语句要放在一个程序单位的 所有其他说明语句之,并放在所有可执行语句之前。 (3)语句函数只有在本程序单元中才有意义。也就是说,不能使用其他程 序单元中的语句函数。
8.2.2 函数子程序的调用
定义函数子程序的目的是为了调用。不仅主程序可以调用一个函数子程序, 函数子程序也可以调用其它的函数子程序,甚至于还可以调用本身(递归调 用)。调用程序称为主调程序单元,而被调用的函数子程序称为被调程序单 元。调用一个函数子程序的方法和调用内在函数和语句函数的方法基本相 同: 1. 调用时应该用实参代替函数子程序定义部分的虚参,实参和虚参的类 型要相同。 和语句函数一样,实参可以是常量、变量、表达式等。 2. 调用程序单位中的变量不能与函数子程序同名。函数值的类型由函数 定义程序单元决定,与调用程序单元无关。 3. 当函数名的类型不满足I—N隐含规则时,在调用程序单元中要对函数 名的类型给出说明(如例 8.4 中的主程序EXAM3的第2句。)
1.语句函数名
在语句函数定义格式中,f称为函数名,函数名的组成规则与变量名相同。 如果没有在语句函数定义语句前用类型语句说明该函数名的数据类型,则 该语句函数的函数值的类型按其函数名遵守I—N隐含规则。如f函数隐含为 实型函数,而nf则隐含为整形函数。
F(X,Y)=X**2+Y**2
INTEGER F(X,Y)=X**2+Y**2 NF(X,Y)=X**2+Y**2
fortran语法手册
1F O R T R A N77四则运算符+ - */ ** (其中**表示乘方)在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→()2 FORTRAN77变量类型隐含约定:I-N规则凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。
如IMPLICIT REAL (I,J)三种定义的优先级别由低到高顺序为:I-N规则→IMPLICIT语句→类型说明语句,因此,在程序中IMPLICIT语句应放在类型说明语句之前。
数组的说明与使用使用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))使用DATA语句给数组赋初值变量表中可出现变量名,数组名,数组元素名,隐含DO循环,但不许出现任何形式的表达式:例如DATA A,B,C/,,DATA A/,B/,C/DATA A,B,C/3*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字符位以后不能有内容。
第10章 Fortran程序单元
• 一个Fortran程序中通常不是只由一个主程序组成, 而是由几个按某种方式划分的不同程序单元来共 同组成。尽管Fortran程序中允许只有主程序而没 有子程序,但绝不允许只有子程序而没有主程序。 在Fortran中,程序的执行总是从主程序开始的。 • Fortran中的程序单元可以大体划分为主程序、子 程序两种,其中子程序又可以进一步划分为函数 子程序、子例行子程序和数据块子程序。数据块 子程序通常用于实现变量的初始化赋值,函数子 程序和子例行子程序在用途上基本是一致的,但 是也有许多不同之处。本章将详细介绍Fortran中 的程序单元和它们的基本用法。
10.4 子例行子程序
• 同函数子程序相比,子例行子程序通常用于完成 更为复杂的任务。子例行子程序接受外界传入的 参数并对其进行处理,子例行程序名不会用来返 回处理结果。形象一点来说,函数子程序像检验 机,它不改变参数的值但会告诉外界一个检测结 果;而子例行子程序更像一个加工机器,外界来 的参数经过它的加工会以新的形象出现。本节主 要介绍子例行子程序的相关知识。
10.5 子程序的多入口点和多折返点
• 尽管子程序中不允许直接定义其他的子程序,但 是在Fortran 77时代,可以通过特殊的方式在同 一个子程序中定义多个不同的过程入口。通过调 用不同的过程定义来实现调用同一个子程序中的 不同执行段。除了提供多入口点外,Fortran 77 时代也提供特殊的多折返点来实现特定条件的子 程序调用返回方式。
10.6 Fortran 90/95中的特殊子程序类型
• 在Fortran 90/95标准中,除了继续对前述的一般 子程序类型提供支持外,还新增了三种特殊的子 程序类型。这三种子程序类型就是前述章节中曾 经提到过的RECURSIVE、PURE和ELEMENTAL三种属 性。RECURSIVE属性允许过程进行自身调用,也就 是常说的递归调用;PURE和ELEMENTAL属性都用于 数组的并行处理。
12数据共用存储单元和数据块子程序 FORTRAN语言程序设计 教学课件
3
例:用子例行程序解一元二次方程的两个根
read(*,*)a1,a2,a3 call quad(a1,a2,a3,z1,z2) write(*,*)z1,z2 end
subroutine quad(a,b,c,x1,x2)
5. 等价语句允许用两个或更多的变量名代表同一个量。 Equivalence(A,A0,A1)
6. 数组的等价。
Dimension A(8),B(4,2),C(2,2,2) Equivalence (A,B,C) 等价于 Equivalence (A(1),B(1,1),C(1,1,1))
7. 不能利用等价语句建立矛盾的等价关系。
p=-b/(2.0*a)
q=sqrt(b*b-4.0*a*c)/(2.0*a)
x1=p+q
x2=p-q end
common z1,z2 read(*,*)a1,a2,a3
call quad(a1,a2,a3)
write(*,*)z1,z2
end
common z1,z2,a1,a2,a3 read(*,*)a1,a2,a3 call quad write(*,*)z1,z2 end
第 九 章 数组 第 十 章 语句函数 第十一章 子程序 第十二章 数据共用存储单元
和数据块子程序 第十三章 文件
1
一、等价语句(Equivalence语句)
Equivalence(变量表1),(变量表2),……
作用:使同一个程序单位中的两个或更多的变量共用 一个存储单元。
说明:1. Equivalence 语句是说明语句,必须出现在程 序单位的执行语句之前。
FORTRAN学习中的一些小心得
FORTRAN 心得第一部分:一些小心得1Fortran不区分大小写2 Fortran有5种基本数据类型,integer,real, character, logical, complex3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用::4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用real*8或real(8)5 FORTRAN中FREE与FIXED两种格式do循环的区别:Fortran 95使用end do来结束循环。
Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。
Fortran 77中,经常会使用CONTINUE这个命令来结束循环。
因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。
6 循环的流程控制:循环中的cycle命令相当于c++里的continue命令,用于结束一次循环循环中的exit命令好比c里面的break,用于结束循环7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO语句7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。
8 fortran77中只能用单引号。
(还有疑问,因为fixed format能用双引号)9 逻辑运算符== /= > >= < <= !Fortran90用法.EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法9 PAUSE,CONTINUE,STOPpause 暂停程序执行,按enter可继续执行continue 貌似没什么用处,可用作封装程序的标志STOP 命令用来结束程序,要谨慎使用10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran 的数组元素之间不能用空格。
fortran语言程序设计知识点
fortran语言程序设计知识点Fortran语言是一种面向科学与工程计算的编程语言,因其在数值计算和科学应用方面的高效性而受到广泛使用。
本文将重点介绍Fortran语言程序设计的一些重要知识点。
一、基础语法1.1 变量与数据类型在Fortran中,变量是用于存储数据的容器。
常见的数据类型包括整型(INTEGER)、实型(REAL/DOUBLE PRECISION)、复数型(COMPLEX)、逻辑型(LOGICAL)等。
变量的命名需遵循一定规则,如以字母开头,长度不超过31个字符等。
1.2 运算符与表达式Fortran支持常见的算术运算符(如+、-、*、/)以及逻辑运算符(如. AND.、. OR.、. NOT.)等。
表达式由变量、常数和运算符组成,可以进行数值运算和逻辑判断。
1.3 控制结构Fortran提供循环结构(DO)、条件结构(IF-THEN-ELSE)和选择结构(SELECT CASE)等控制语句,用于控制程序的流程。
二、数组与数据处理2.1 数组定义与操作Fortran中数组是由相同类型的数据元素组成的集合。
可以使用DIMENSION语句定义数组的维度和大小,通过下标访问和修改数组元素。
2.2 数组运算与函数Fortran提供了许多对数组进行运算和处理的函数,如数组求和(SUM)、最大最小值(MAX、MIN)、数组重排(RESHAPE)等,方便对数据进行统计和处理。
2.3 文件读写操作Fortran支持对文件进行读写操作,可以通过OPEN语句打开文件,使用READ和WRITE语句读取和写入数据。
可以根据需要设置文件的访问模式和格式。
三、过程与模块3.1 过程(Subroutine/Function)过程是一段独立的代码块,可接受传入参数并返回值。
在Fortran中,过程可以是子程序(Subroutine)或函数(Function)。
子程序用于完成一系列操作,而函数则返回一个值。
3.2 模块(Module)Fortran中的模块是一个编译单元,用于组织和管理相关的过程和变量。
fortran语言语法
FORTRAN是世界上最早出现的高级编程语言,是工程界最常用的编程语言,它在科学计算中(如航空航天、地质勘探、天气预报和建筑工程等领域)发挥着极其重要的作用。
经过40多年的发展,伴随着FORTRAN语言多次版本的更新及相应开发系统的出现,其功能不断完善,最新版本的开发系统几乎具备了VC、VB的所有特点,如图形界面编程、数据库等。
目前,工科院校开设的计算机编程语言课首选仍然是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子程序
主程序的任务是将50-100之间的每个数依次调用 主程序的任务是将50-100之间的每个数依次调用 50 PRIME函数子程序 求出那些使PRIME 函数值为1 函数子程序, PRIME函数值为 PRIME 函数子程序 , 求出那些使 PRIME 函数值为 1 的自 然数并求这些数的和。 然数并求这些数的和。
8.2 函数子程序 一、 函数子程序的定义
[类型说明 FUNCTION 函数名 虚参表 类型说明] 函数名(虚参表 虚参表) 类型说明 函数体 END 函数名的作用: 函数名的作用:函数的标识 代表该函数的函数值 虚参可以是变量名、数组名、 虚参可以是变量名、数组名、子程序名 返回调用程序之前:函数名= 返回调用程序之前:函数名=表达式
8.1 语句函数 语句函数——
一、语句函数的定义 定义格式: 定义格式: f (x1, x2,...,xn ) = e
f:语句函数名, x:虚参, e:表达式 :语句函数名, :虚参, : 1. 语句函数名 函数名的组成规则与变量名相同 语句函数不能与同一个程序单元中的变量同名。 语句函数不能与同一个程序单元中的变量同名。 可在语句函数定义语句前用类型语句说明该函数名 的数据类型,否则该语句函数的函数值的类型按其 的数据类型, 函数名遵守I N隐含规则。 函数名遵守I—N隐含规则。
注意: 注意: 函数用一条语句可以定义时, 函数用一条语句可以定义时,才用语句函数的 形式定义函数。 形式定义函数。 语句函数定义语句是非执行语句, 语句函数定义语句是非执行语句,放在本程序 单位中的所有执行语句之前,说明语句之后。 单位中的所有执行语句之前,说明语句之后。 语句函数只在本程序单位中有意义。 语句函数只在本程序单位中有意义。 表达式的类型与函数名的类型应一致。 表达式的类型与函数名的类型应一致。
FORTRAN简明教程
《FORTRAN》程序设计原理1、程序结构及书写规则一个程序由不同的程序单元组成,每一程序单元均以end结束,一般情况下,主程序的结构为:Program程序单元名说明语句可执行语句……STOPEND子程序的结构为:SUBROUTINE 程序单元名(哑元名表)说明语句可执行语句………RETURNEND以及FUNCTION 程序单元名(哑元名表)说明语句可执行语句………RETURNEND程序单元名由字母和数字组成,各程序单元中的变量独立编译,同名变量相互不影响。
1-5列为行号,可以是1-99999之间的任意数,6列为续行号,可以是任何字符,正文从第8列写到72列。
当第1列为字符C时,此行为注释行。
2、说明语句说明语句分为二类,一类必须放在程序单元的开头,另一类可以放在任何地方。
2.1 变量说明语句这一类说明语句,必须放在程序单元的开头,以表明变量的性质。
若不加以说明,以I-N开头的变量均为整型,其余变量均为实型,称之为I-N规则。
同一变量经下列显式说明语句说明后,I-N规则失效,没有经显式说明的变量,I-N规则仍然有效。
PARAMETER(变量名=const,……)REAL 变量名表INTEGER变量名表CHARACTER变量名表LOGICAL变量名表COMPLEX 变量名表IMPLICIT 变量基本类型(字符名表)DOUBLE PRECISION变量名表DIMENSION变量名表COMMON 变量名表COMMON /公共区名/ 变量名表DATA 变量名表/数值名表/一个变量可由多个语句说明,其中类型说明语句的级别最高,例如:Implicit real (a-c,e) 由a,b,c,e开头的变量均为实型Dimension ax(100) 定义一个100个元系的实型数组Integer bx, ax 重新定义bx, ax为整型变量2.2 格式说明语句这一类语句可以放在程序单元内的任何地方,常用的有:FORMAT(nFw.d, nX, nAw, nIw, ‘…….’, \ ,nEw.d)这里,n是重复使用该格式码的次数,F表示实型,X表示空格,A表示字符,I表示整型,E科学记数法,w是输入/出的宽度,d是小数位数,引号‘’内的内容原样输出,斜线‘\’表示输入/出时换行。
fortran语言的基本概念
fortran语言的基本概念Fortran语言的基本概念概述Fortran(Formula Translation)是一种用于科学计算和数值分析的高级编程语言。
它是最早的编程语言之一,由IBM公司在20世纪50年代开发。
Fortran语言以其高效、可靠和快速的特点,长期被广泛应用于科学和工程计算领域。
基本结构Fortran程序以程序单元作为基本的执行单位,程序单元分为主程序和子程序两种类型。
主程序•主程序是Fortran程序的入口点,每个Fortran程序必须包含一个主程序。
•主程序由PROGRAM关键字定义,后接程序名称。
•主程序内包含了程序的执行逻辑和控制流程,通过调用子程序完成具体的计算任务。
•子程序是主程序的辅助部分,用于定义重复使用的计算任务或功能模块。
•子程序由SUBROUTINE或FUNCTION关键字定义。
•SUBROUTINE用于定义过程(Procedure),只执行特定的计算任务,不返回结果。
•FUNCTION也是定义过程,但它还可以返回一个值作为结果。
变量与数据类型Fortran语言使用变量来存储和操作数据,变量需要先进行声明。
Fortran提供了多种数据类型,用于存储不同类型的数据。
声明变量•变量声明使用DIMENSION或INTEGER/REAL/COMPLEX/LOGICAL等关键字。
•变量声明语句通常出现在主程序的开头或子程序的参数列表中。
数据类型•INTEGER用于表示整数类型的数据。
•REAL用于表示浮点数类型的数据。
•COMPLEX用于表示复数类型的数据。
•LOGICAL用于表示逻辑类型的数据,可取值为TRUE或FALSE。
Fortran语言提供了多种控制流程语句,用于在程序中实现条件判断和循环操作。
条件判断•IF-THEN语句用于根据条件执行不同的代码块。
•IF-THEN-ELSE语句可根据条件选择执行不同的代码块。
循环•DO语句用于实现循环操作,可指定循环的起始值、结束值和步进值。
Fortran95关于共用区使用的小探讨
Fortran95关于共用区使用的小探讨文一猪在以往Fortran77,90的语言中采用共用区(对应着common 语句),对于大量数据的交换而言十分的方便。
例如:主程序:common //data1// x(ip)子程序(或函数)common //data1// x(ip)那么数据x(ip)就在主程序和子程序(或函数)内实现共享。
当共享数据需要被多个子程序调用,或者十分繁杂或是大量的情况下,这种方法相对于接口传值方式的优势就体现出来。
到了采用Fortran95语言时,这种方法仍然适用。
但是对于这种新版语言,通过利用module和subroutine有更好的选择。
若采用module编程,数据可以声明为public或者是private。
如果数据是private的话,该数据能够同所有的模块的内部子程序共享;同样的,主程序内的数据也是同其内部子程序共享的。
如果数据是public的话,那么数据将同主程序相共享。
其中很重要一个关键就是内部子程序,它能够调用到所属模块(或主程序)的数据。
而在旧版的Fortran语言中,没有所谓的内部子程序,就笔者所知道的。
共享数据只能通过传值方式或common共享。
例如:module a1public x1private x2containssubroutine b1调用x1,x2end subroutine b1end module a1programuse a1 //声明使用module a1调用x1end program从该例中,我们可以清楚得了解到Fortran95采用模块编程和运用内部子程序在实现数据共享方面相比旧版语言的优势。
顺便推荐下Fortran95的学习书《FORTRAN95程序设计》白云等编著。
2013, Feb, 22。
FORTRAN95 语法基础
FORTRAN 95 语法基础目录:一、应用程序的创建与运行/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语言程序设计
《Fortran95语言程序设计》课程教学大纲课程英文名称:Fortran95 Programming Design课程编号:0332232002课程计划学时:32学分:2课程简介:FORTRAN语言程序设计是材料物理专业的开设的专业基础课, FORTRAN语言在科学计算领域有着十分广泛的应用。
通过本课程的学习,应使学生掌握FORTRAN95的基本概念,语法规则和利用FORTRAN95进行程序设计的方法。
使学生在后继课的学习中,能够利用FORTRAN95上机编程,解决相应的实际问题,并能在今后的学习和工作中,结合自己的专业知识,开发相应的计算机应用程序。
一、课程教学内容及教学基本要求第一章 Fortran语言程序设计概述本章重点:算法、程序基本结构难点:语言元素本章学时:2学时教学形式:讲授与上机实践相结合教具:计算机,投影仪第一节 Fortran语言程序设计概述本节要求了解:程序设计的过程、基本方法、程序设计语言的分类、Fortran语言的发展、Fortran77、Fortran95程序设计的构成及其兼容性,(考核概率20%)理解:算法的概念,掌握:算法的描述、程序基本结构与书写规则(考核概率100%)1 程序设计的过程算法的描述(重点,难点)2 程序设计的基本方法3 程序设计语言4 Fortran语言的发展5 Fortran95程序基本结构与书写规则(重点)6 Fortran95程序设计的兼容性第二节Fortran95开发环境(第一次上机实验课讲述)本节要求了解:在可视化编程的条件下Fortran 语言所具备的一些新的特点和功能,掌握:可视化编程所需的基础知识和一般步骤(考核概率100%)1 熟悉Fortran95 环境进入系统2 建立项目文件3 建立源程序文件4 输入源程序的内容5 编译、连接、运行作业:认真复习本章内容,预习第二章内容。
第二章数据类型及其运算本章重点:Fortran语言的基本数据类型及其常量表示方法难点:算术表达式的写法本章学时:1学时教学形式:讲授与上机实践相结合教具:计算机,投影仪第一节数据类型及其运算本节要求了解:各种类型常量、变量的定义、算术表达式的写法,(考核概率100%)掌握:Fortran语言的基本数据类型及其常量表示方法(考核概率50%)1 常量2 变量及其定义3符号常量及其定义4 Fortran表达式(重点)作业:认真复习本章内容。
第六讲 Fortran中的子程序讲解学习
[类型说明符] Function 函数名(虚参表) 函数体 end
2020/8/12
5
其中,类型说明用于说明函数名的类型;函数名的命名方法
与变量名相同;虚参可以是简单变量和数组变量,但不能是
常数、数组元素、表达式。 function sm(m,n,l)
比如:求
sm=0 do i=m,n
100
S 1 n 2
(3)语句函数表达式 给出函数与参数之间的对应关系,可由虚参(必须包含所有的 虚参)、常量、变量、数组、Fortran的内部函数及在其前面 说明了的语句函数。
2020/8/12
2
此外,还需注意的是:
1、只有当函数关系简单到,可以用一条语句描述函数与参数 的对应关系时,才能使用语句函数;
2、语句函数是非执行语句,要放在一个程序单元的所有其它 说明语句之后,并放在所有可执行语句之前;
问题3:亲密数对定义为:正整数A≠B,但A不含本身的所有 因子之和等于B,而B不含自身的所有因子之和等于A,求3000 以内所有的亲密数对。【要求用子例行程序】
2020/8/12
14
分析:牛顿迭代公式为:
xn1
xn
f (xn) f '(xn)
首先要给个迭代初值x0, 代入公式的右边计算x1, 再把x1代入计算出x2,…, 当第n次和第(n+1)次计算
函数名(实参表)
2020/8/12
3
需要注意下面2个问题: 1、调用时可以使用常量、变量、内部函数及其表达式作为实 参代替对应的虚参位置,但要保证实参和虚参具有完全相同 的类型,并且实参是可以计算值的(即调用前实参中包含的 变量全部已经赋值); 2、实参和虚参个数相同。
比如:
chapter3-FORTRAN90基础知识
第三章 FORTRAN 90 基础知识FORTRAN 90是一种内容丰富、功能强大、特色鲜明的高级程序设计语言。
本章将介绍FORTRAN 90的一些基本知识,如:字符集、名称、关键字、程序单元、书写格式、数据类型和兼容性等,为进一步学习其它内容奠定基础。
3.1 字符集FORTRAN 90源程序是一个符合FORTRAN 90词法、语法和语义规定的特殊文本,它由FORTRAN 90字符集规定的字符按照词法、语法和语义规定进行描述。
FORTRAN 90字符集由下面四部分字符组成:1.英文字母大写字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 。
小写字母:a b c d e f g h I j k l m n o p q r s t u v w x y z 。
2.阿拉伯数字数字字符:0 1 2 3 4 5 6 7 8 9。
3.下划线下划线字符:_。
4.特殊字符特殊字符:空格 <Tab> + - * / ( ) , . ' : ! " % & ; < > ? $。
Digital Visual FORTRAN 5.0字符集增加了一些可打印字符,包括十六进制ASCII码为09h(Tab符)、20h至7Eh之间的字符和某些特殊字符集(如:IBM字符集)中字符。
说明:①除字符型常量和Hollerith常量外,源程序中词法和语法描述不区分字母的大小写,如语句“INTEGER I”和语句“integer i”是等价的。
②FORTRAN 90字符集以外的可打印字符,只能出现在注释、字符常量、Hollerith常量、字符串编辑符和输入输出记录中。
③字符:_ ! " % & ; > < ?为FORTRAN 90新增字符。
3.2 名称名称在FORTRAN 77中称“符号名”,在其它语言中称“标识符”。
FORTRAN语言第8章(共8章)
8.2 函数子程序(外部函数)
语句函数只能用一个语句定义,而且只 能在定义它的程序段中使用。
分析:函数f(X)是用两个表达式定义的,不 能用简单的语句函数来表示。怎么办? FORTRAN提供了一种方法,就是把函数的 计算部份从程序中独立出来,并按一定的格 式编成一个单独的子程序段,称为外部函数 或函数子程序。
2、如果f(x)与f(x1)同号,则用x作为新 的x1,这就舍去了原来的(x1,x)区间。
x2 x
如果f(x1)与f(x2)异号,则它们之间的连线必然交x轴于x点 有x=x2-(x2-x1)*f(x2)/(f(x2)-f(x1)) 3、再根据新的x1,x2,找到与x轴的交点x,重复上述步骤。
LOGICAL S F(X)=X**3-2.0*X**2-7.0*X+4.0 S(A,B)=SIGN(A,B).EQ.A 10 READ(*,*)X1,X2 F1=F(X1) F2=F(X2) IF(S(F1,F2))GOTO 10
一、语句函数的概念 引例:计算W=0.2P(X)+0.3P(Y)+0.5P(Z) 其中P(T)=0.812T3+1.256T2-3.378T+0.689
WRITE(*,*)’请输入X,Y,Z的值:‘
READ(*,*)X,Y,Z
P1= 0.812*X**3+1.256*X**2-3.378*X+0.689 P2= 0.812*Y**3+1.256*Y**2-3.378*Y+0.689
语句函数小结: 在语句函数定义的语句中,也可出现其他的语句 函数引用,但被引用的语句函和须在它前面已定义。 不允许引用自身或在它后面定义的语句函数。 例:S(A, B, C) = (A+B+C) / 2.0
Fortran之COMMON语句
Fortran之COMMON语句FORTRAN程序中各程序单位之间的数据交换可以通过虚实结合来实现,还可以通过建立公用区的方式来完成。
公用区有两种,一种是无名公用区,任何一个程序中只可能有一个无名公用区;一种是有名公用区,一个程序中可以根据需要由程序员开辟任意多个有名公用区。
建立无名和有名公用区都通过COMMON语句来进行。
按照结构化程序设计的指导思想,通常主张通过虚实结合的途径来传送数据而不主张使用公用区。
因为前者使程序有较好的可读性,而且容易跟踪数据的流向,便于对程序进行调试和维护。
但是虚实结合的传送方式速度较慢,特别是在各程序单位之间有大量的数据需要传送时速度问题就更为突出。
不同程序单位利用公用区交换数据的速度却比虚实结合的方式传送速度快得多。
所以在很多应用程序中如果各程序单位之间有大量数据需要传送时,程序员一般仍然采用开辟公用区的方式。
11.2.1 无名公用区开辟无名公用区COMMON语句的一般形式如下:COMMON a1,a2,…其中a1,a2,…允许是普通变量名、数组名和数组说明符(注意:不是数组元素),它们之间用逗号隔开。
例如:在主程序中写:COMMON X,Y,I,Z(3)在子程序中写:COMMON A,B,J,T(3)于是,在无名公用区中变量X和A,Y和B,I和J分别分配在同一个存储单元中,数组Z和T同占三个存储单元。
占同一个存储单元的那些变量在不同的程序单位中,它们的名字不需要相同。
FORTRAN编译程序在编译时为COMMON语句开辟一个无名公用区,当把不同的程序单位连接在一起的时候,不同程序单位在COMMON语句中的变量按其在语句中出现的先后顺序占用无名公用区连续的存储单元,也就是说每个程序单位中的COMMON语句总是给出现在语句中的第一个变量分配在无名公用区的第一个存储区单元。
COMMON语句开辟公用区的主要用途就是使不同程序单位的变量之间进行数据传送,另一种用途是用来节省存储空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
公用区
子程序 common a, b, j, t(3)
程序中只能有一个无名公用区 不同程序单位在common语句中的变量或数组按其 在语句中出现的先后顺序占用相同连续的存储单元。
5
例:用子例行程序解一元二次方程的两个根
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 common z1,z2 end read(*,*)a1,a2,a3 call quad(a1,a2,a3) write(*,*)z1,z2 end
6
说明: 1. common语句是说明语句,必须
出现在所有可执行语句之前。
3. 一个程序只有一个无名公共区, 同一程序单位中出现多个common 语句,作用相当于一个。 4. 公用语句区中的变量或数组类 型必须按顺序一一对应。 5. 变量或数组名只能在同一程序
common x, y, z(3) common a, b common x, y, z(3), a, b
2. 每一对括号内的变量表中,可以是变量名、数 组名或数组元素,但至少应该有两个变量名, 中间用逗号隔开。不允许出现虚拟参数名。 Equivalence(W,ST)
3. 每对括号中的变量可以具有不同类型,一个等 价语句可以使多组变量等价。 Equivalence(A,B), (X,Y,Z)
2
4. 等价语句可以节省内存。 Equivalence(IM,NPL,JJ2,NEG) 不能同时或交叉使用! 5. 等价语句允许用两个或更多的变量名代表同一个量。 Equivalence(A,A0,A1) 6. 数组的等价。
common z1,z2,a1,a2,a3 read(*,*)a1,a2,a3 call quad write(*,*)z1,z2 end subroutine quad common x1,x2,a,b,c …… end
subroutine quad(a,b,c) common x1,x2 …… end
第 九 章 数组
第 十 章 语句函数
第十一章 子程序
第十二章 数据共用存储单元 和数据块子程序
uivalence语句)
Equivalence(变量表1),(变量表2),…… 作用:使同一个程序单位中的两个或更多的变量共用 一个存储单元。 1. Equivalence 语句是说明语句,必须出现在程 说明: 序单位的执行语句之前。
common a,b,c common a1,b1,a 单位的公用语句定义中出现一次。 的作用。 有名公共区、数据块子程序内容(自学)
7
6. 区分equivalence和common语句
Dimension A(8),B(4,2),C(2,2,2) Equivalence (A,B,C) 等价于 Equivalence (A(1),B(1,1),C(1,1,1)) 7. 不能利用等价语句建立矛盾的等价关系。
Dimension A(10) Equivalence (X,A(1)),(X,A(3))
3
二、公用语句(COMMON)语句
传统Fortran程序不同单位之间的数据交换是通过: 虚实结合 优点:符合结构化程序设计的指导思想。程序有较好的可 读性,容易跟踪数据的流向,便于对程序进行调试 和维护。
缺点:传输速度慢。
4
Fortran程序中有 两种公共区
无名公共区(只有一个)
有名公共区
开辟公用区用common语句