FORTRAN程序单元

合集下载

FORTRAN知识点总结

FORTRAN知识点总结

F O R T R A N第2章FORTRAN90基础知识:程序单元的概念:fortran90程序是一种分块形式的程序,整个程序由若干程序单元块组成。

每个程序只有一个主程序单元。

各单元体的程序体形式上相同。

程序单元可以是主程序、子程序(外部过程或内部过程)、模块MODULE (供其他程序单元引用即把该程序单元内的全部语句复制到程序单元中)或块数据程序单元BLOCK 。

语言元素:指在程序设计中用到的基本成分,如字符集、常量、变量、记号(标号、关键字、名字、常数、运算符和定界符)以及其他的基本结构等。

字符集:英文字母、阿拉伯数字、下划线、21个特殊字符($和?没有规定用法)。

数据结构:整型INTEGER (34-2下划线后面是种别参数),n 位字长的计算机的数据表示范围一般为12~211-+---n n ,种别参数由内在询问函数KIND 送回,种别值提供的最小范围由内在函数SELECTED-INT-KIND 送回,表示十进制幂的范围由内在函数RANGE 送回;实型REAL ,小数形式和指数形式;复型COMPLEX (种别类型参数值取实部与虚部中较大者);字符型CHARACTER,由一对单撇号或双撇号之间的字符序列组成;逻辑型LOGICAL。

派生数据类型TYPE;数组INTEGER,DIMENSION(1,50)::A,可直接对数组元素进行运算如3*A,SQRT(A);字符子串,在字符串CHARACTER(LEN=80)::ROW中,ROW(1:3)就表示字符串ROW中第1到第3个元素组成的子串。

变量名的命名规则:不能超过31个字符;组成成分是字母、数字、下划线;第一个字符必须是字母。

第3章基本语句:类型说明语句:类型说明(种别说明),属性说明::变量名表尽量避免把两个实数作相等或不相等的比较。

淘汰隐式说明IMPLICIT NONE种别说明:种别参数即对可移植数据精度和范围进行选择的机制KIND(X) 返回变元X的种别参数值SELECTED-REAL-KIND(n,m) 产生一个种别值,它表示某一精度和范围。

FORTRAN简明教程

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中module用法

fortran中module用法

fortran中module用法Fortran是一种用于科学和工程计算的古老编程语言,但仍然被广泛使用。

Fortran中的module是一个非常有用的特性,它可以通过提供重用的代码和封装可重用代码的抽象来提高代码的可读性和维护性。

在Fortran中,module是一个存储在独立文件中的代码单元。

在文件中,module定义了一个作用域,其中包含变量、子程序和所有其他可以在模块之外访问的内容。

在Fortran中,模块是为了方便地组织这些内容而设计的。

让我们看一下如何使用Fortran 中的module。

要创建一个module,我们需要在一个Fortran文件中定义一个module块。

例如,在一个名为myModule.f90的文件中,我们可以定义一个名为myModule的module块。

在开始的module关键字之后,我们可以定义module的变量和子程序。

Module myModuleImplicit NoneInteger :: i, j, kPublic :: myFunctionFunction myFunction(x)Integer, Intent(In) :: xInteger :: yy = x ** 2myFunction = yEnd FunctionEnd Module在上面的代码中,我们定义了一个包含三个整数变量(i,j,k)和一个名为myFunction的子程序的module。

我们还定义了一个public关键字,以便从module之外访问myFunction。

在myFunction子程序中,我们将一个整数x作为输入参数,并将其平方放入变量y中,最后将其返回。

x=2result = myFunction(x)Write(*,*) 'Result: ',resultEnd Program在上述代码中,我们使用了myModule,并调用了myFunction子程序,并将变量x的值传递给它。

FORTRAN95第六章 Fortran 过程程序设计

FORTRAN95第六章 Fortran 过程程序设计
在上面的程序中, 虽然在主程序和函数子程序都 使用了变量I,然而他们是相互独立的,各自占用 不同的存储空间。 在主程序或其它程序单元中说 明的变量、数组、语句标号, 在另一函数子程序或 子例行子程序中不能直接引用。 ( 唯一的例外是, 在任何程序单元中打开的文件,在整个程序中都 可以直接引用)
普通的外部函数子程序形式之二为:
例6.2 利用函数子程序,计算N的阶乘。
! 计算N!的函数子程序
function fact (n)
!fact为外部函数子程序名, n为哑元
implicit none
integer:: n,i
! 说明哑元n和函数体中所用变量i的类型
real*8:: fact
! 说明函数名的类型
fact=1d0
!函数名作为变量名使用
do
write(*,*)'输入正整数m:'
read (*,*)m
if (m>0) exit
write(*,*)'输入了一个负整数或零,重输!'
end do
do
write(*,"('输入正整数n(n<=',i4,'):')")m
read (*,*)n
if (n>0 .and. n<m) exit
read *,n
h=(b-a)/n
do i=1,n-1
s=s+f (a+i*h) !调用语句函数f的语句
end do
s=h*(f (a)+f (b)+2.0*s)/2.0 !调用语句函f
write ( *,"('定积分的值为: ',f10.6)")s

第2章 Fortran语法基础

第2章  Fortran语法基础

• • • • •
2.4 注释格式
• 尽管注释在编译过程中是一定会被编译器忽略的,但却是 源代码文件中十分重要的一部分。因为注释是保证源代码 具有可读性的一个非常重要的手段。在不同的高级计算机 语言中,表示注释的方法各有不同,甚至在一种语言里, 也可能有几种引入注释的方法。不同的注释方法各有优缺 点,在使用中应该根据实际情况进行选择。 • 在C语言程序中,需要使用“/*”和“*/”这样的特殊标 记来界定注释的内容而不管行边界。采用这种方式进行注 释时经常出现的错误就是漏掉结束的界定符,使得后面的 语句也变成了注解;好处也很明显,就是能够方便的实现 代码的块注释。 • 而Fortran 95语言中的“!”,Ada语言中的“-”,或是 C++语言中的“//”,注释都是在行的任意位置开始直到行 的末尾结束。这种做法更为合理、不容易出错,但要实现 大段代码的整体注释就不是特别方便了。
2.1 程序书写格式
• 在1.6小节中,程序HELLO已经展示了Fortran的一 种源代码书写格式,即自由格式(Free Format), 这种格式是Fortran 90/95标准中的一大特色。同 Fortran 77标准中的旧格式,即固定格式(Fixed Format)相比,取消了在源代码书写上的诸多限 制,程序编制起来更为灵活。两种格式书写的源 代码通过文件扩展名来进行区别。
2.5 命名方式
• 在Fortran中为对象命名有一定的要求。简单的说, Fortran 77的命名要求和Fortran 90/95的命名要求是不同 的。本节主要介绍不同标准下的命名方式。 • 在Fortran 77标准中,程序和变量等对象的名字是由不多 于6个字符(包括英文字母A-Z、a-z和数字0-9)组成的字 符段。同时,对象名字的第1个字符必须是字母,名字的有 效使用范围原则上仅限于一个程序单元之中(内部过程除 外)。下面的代码段演示了Fortran 77标准的对象命名方 式。 • INTEGER 0B !错误 • INTEGER C-10 !错误 • REAL sin !正确 • REAL test:real !错误

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中module用法

fortran中module用法

fortran中module用法Fortran中的module用法Fortran是一种高级编程语言,它被广泛用于科学计算和工程应用。

Fortran的模块化编程是一种重要的编程技术,它可以帮助程序员更好地组织代码,提高代码的可读性和可维护性。

在Fortran中,module是一种重要的模块化编程工具,它可以将相关的变量、函数和子程序组织在一起,形成一个独立的模块。

module的定义在Fortran中,module是一种独立的代码单元,它可以包含变量、函数和子程序。

module的定义通常放在一个单独的文件中,文件名以.mod或.f90为后缀。

module的定义格式如下:module module_nameimplicit none! 声明变量、函数和子程序contains! 定义函数和子程序end module module_name在module中,可以声明和定义变量、函数和子程序。

变量的声明和定义方式与普通的Fortran程序相同。

函数和子程序的定义方式也与普通的Fortran程序相同,只是需要在module中使用contains关键字来定义。

module的使用在Fortran程序中,可以使用use语句来引用module中的变量、函数和子程序。

use语句的格式如下:use module_name在使用module之前,需要先编译module文件,生成.mod文件。

在编译Fortran程序时,需要将.mod文件和程序文件一起编译。

使用module的示例代码如下:program mainuse mymoduleimplicit none! 使用mymodule中的变量和函数end program main在程序中使用module时,需要先使用use语句引用module,然后就可以使用module中的变量和函数了。

module的优点使用module可以带来以下几个优点:1. 模块化编程:module可以将相关的变量、函数和子程序组织在一起,形成一个独立的模块,使程序更易于理解和维护。

FORTRAN语言程序设计

FORTRAN语言程序设计
说明:1)引号(‘ ’或 “ ”)是字符串的分隔符,并非字符常量的一部分。 2)字符串中的空白符有意义,要计数的。例:“A B” ,其字符长度是3。 3)当字符长度为0时,即为空串。 4)字符串内的字母区分大小写,‘a’和‘A’是不同的字符常量。 5)如果字符串中含有单引号,则这个单引号要用两个连续的单引号表示 ,如:‘I’’m a boy.’。或者单引号和双引号交替使用,如“I’m a boy.” 。
n 是一个十进制数字(0~9)序列。
Kind值为:1、2、4、8之一。分别表示1、2、4、8个字节个数。
FORTRAN 90/95标准中整型常量的范围没有明确规定。
例如:122、0、-36、559_2
均为合法的整型常量
100.0、100,000、100 0、1002 均为非法的整型常量
5.6.2.2 实型常量
5.5 程序的书写格式 (1)固定格式:将一个语句行分为若干个区域,如下图所示

5.6 数据类型
5.6.1 基本概念 1.内部数据类型 FORTRAN语言将内部数据划分为以下类型: 整型 实型 算术型 数据类型 复型 逻辑型 字符型 2.种别 一个数据在内存中均占有一定字节个数的存储单元。上述每类数据都有 其不同的种别(即Kind)特性,即上述每类数据根据其种别特性(即 Kind值)的不同分别拥有不同字节个数的存储单元。 3.数据对象 1)常量:程序运行时,其值不能改变的量,称为常量。如:5,3等等。 2)变量:程序运行时,其值可以改变的量,如:变量a, a是一个存储单元
第四章 FORTRAN语言开发环境
详见教材:3.3 FORTRAN语言 开发环境
第五章 FORTRAN 语言基础知识
5.1 字符集
FORTRAN语言允许使用的字符集为:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• [说明部分]
• [可执行部分]
• [CONTAINS
• 内部过程]
• END [PROGRAM[程序名]]
10.2 语句函数
• 语句函数通过一句代码定义来实现某种特定的处 理功能,它是Fortran 77时代的遗留产物。严格 来说,语句函数不属于程序单元的范畴。但是在 实际应用中,语句函数以其灵活的应用、小巧的 结构在程序中发挥着重要的作用。

'8','9','A','B','C','D','E','F'/)
• INTEGER :: n, j, nn

• HEX= ' '

• DO j=8,1,-1

nn = n/16

HEX(j:j) = H(n - 16*nn)

IF(nn == 0) EXIT

n = nn
• END DO

• END FU后,就可以在程序单元中进 行引用了。实际上,在前一小节的例程中已经演 示了语句函数引用的一般方式。本小节将对语句 函数的引用方式进行具体的说明。
• 语句函数的引用方式与Fortran中内部函数的引用 方式完全一致,就是用程序中定义的实参替换掉 语句函数定义中的虚参。实参必须是与虚参类型 相同的常量、变量或表达式。
第10章 Fortran程序单元
• 一个Fortran程序中通常不是只由一个主程序组成, 而是由几个按某种方式划分的不同程序单元来共 同组成。尽管Fortran程序中允许只有主程序而没 有子程序,但绝不允许只有子程序而没有主程序。 在Fortran中,程序的执行总是从主程序开始的。
• Fortran中的程序单元可以大体划分为主程序、子 程序两种,其中子程序又可以进一步划分为函数 子程序、子例行子程序和数据块子程序。数据块 子程序通常用于实现变量的初始化赋值,函数子 程序和子例行子程序在用途上基本是一致的,但 是也有许多不同之处。本章将详细介绍Fortran中 的程序单元和它们的基本用法。
10.3 函数子程序
• 函数子程序和子例行子程序是子程序的两种常用 基本形式。它们的共同特征就是作为数据处理过 程的集合。但是这两种子程序也不完全相同,函 数子程序会返回一个函数值,且通常不会改变哑 元的数值。因此,函数子程序更像是数学上的一 个函数。而子例行子程序通常用于完成一项更为 复杂的任务,通过哑元或者其他手段返回几个结 果,哑元的数值通常会在程序的执行过程中改变。
10.1 主程序
• 顾名思义,主程序是一个实际程序中的主体,其 他类型的程序单元都是以某种方式来辅助主程序 的执行。在Fortran语言中,一个程序的执行始终 是从主程序的第一条可执行语句开始的,所以每 个完整的Fortran程序都必须有且只允许有一个主 程序。主程序定义的一般语法形式如下:
• [PROGRAM [程序名]]
则哑元列表可以省略,但是函数名后的括号不能省略。 • 3.RESULT关键字 • RESULT关键字用于声明将函数的返回值保存在其后的变量名中,
称为函数结果名。
10.3.2 调用函数子程序
• 函数子程序的调用与内在函数的调用形式一样。 在主调程序的任意位置,可以通过下面的语句形 式将函数子程序的计算结果赋值给变量:
10.3.1 定义函数子程序
• 下面给出函数子程序的一般形式为: • [prefix] FUNCTION name ([d-arg-list]) [RESULT (r-name)] • ... • END [FUNCTION name] • 1.prefix说明项 • prefix说明项是一个可选参数,可以使用如下两种形式来书写: • type [keyword] •或 • keyword [type] • 2.d-arg-list • d-arg-list表示函数的哑元列表。如果函数子程序不包含哑元,
• 在实际的编程过程中,程序员往往会遇到这种情 况:一些简单的函数会在一个程序单元中的不同 地方重复用到,而Fortran系统并不提供这种内部 函数;如果采用函数子程序的形式来描述这些简 单的函数又会觉得没有这种必要。例如,要求解 函数的值,将其编写成函数子程序可以顺利解决。 但是,Fortran语言提供了一种更为简单的手段— —语句函数。
义时才使用; • 语句函数是一种非执行语句,需要放置在所有可执行语句之前和相关的类
型说明语句之后; • 语句函数的作用范围仅限于定义它的程序单元之内,不允许跨程序单元进
行语句函数的调用; • 语句函数不能作为子程序调用时的实参,也不允许在EXTERNAL语句中出现; • 语句函数中出现的虚参必须是变量名,不能是常量、表达式或是数组元素; • 语句函数通过表达式得到的函数值的类型必须与函数名的类型一致。
10.2.1 语句函数的定义
• 在Fortran中定义一个语句函数的形式如下: • fun ([d-arg [, d-arg] ...]) = expr • 1.Fun 2.d-arg 3.Expr 4.语句函数示例 5.需要注意的问题:
在使用语句函数进行编程时,下面一些问题是需要引起注意的: • 语句函数通常在函数比较简单,能够用一条语句(包括换行)就能进行定
10.3.3 函数子程序示例——进制转换
• 下面来看一段函数子程序的实例,代码将一个4字节的整数用16进制的形式表示出来。 首先给出的是程序的函数子程序单元HEX。
• FUNCTION HEX(n)
• IMPLICIT NONE

• CHARACTER(LEN=8) :: HEX
• CHARACTER(LEN=1) :: H(0:15)=(/'0','1','2','3','4','5','6', '7',&
• V = 函数名(实元表) • 其中,V表示用于接收函数计算结果的变量;实元
表是程序中实际传入函数子程序的变量列表,除 非有特殊说明,变量列表中的实元个数以及类型 必须与函数子程序定义时的虚参在个数和类型上 一致。如果函数不包含哑元,则调用形式是在表 达式中直接写上函数名再跟空括号即可: • V = 函数名()
相关文档
最新文档