Fortran 95内在过程

合集下载

fortran95教程12

fortran95教程12

第三篇计算任务的剖分与组合从前,有两个表匠,一个叫霍拉,一个叫坦普斯。

两人都很受顾客的欢迎,他们各自的工场中的电话总是响个不停,因为老有新主顾上门。

不过,霍拉发了大财,坦普斯却越来越穷,最后连店铺都给亏没了。

这是为什么呢?他们做的表都是由1000个零件组成。

坦普斯做表的方式是连续地把一只表从头做到尾,如果尚未装完一只表就不得不中途放下(比如说要去接客户电话了),那么装了一半的表就会立刻散掉,又得从头装起。

顾客们越喜欢他的表,他的电话就越多,也就越难得到足够的不被打断的时间来装成一只表。

霍拉做的表并不比坦普斯的简单。

但他经过设计,用十个零件装成一个组件。

十个组件又可装成更大的组件。

十个大组件构成的系统就是整只表。

因此,当霍拉不得不放下装了一部分的表去接电话时,他只损失了一小部分活儿,他装表所用工时只是坦普斯所用工时的一个零头。

…在这个寓言里面,我的中心思想是,具有复杂性的系统最好是采取层级结构的形式,而层级结构有一些与系统的具体内容无关的共同性质。

我将论证说,层级结构是构造复杂事物的建筑师们所使用的主要结构方式之一。

----H.Simon[1]《The Sciences of the Artificial》一个计算任务可以很简单,使用几个语句进行描述,执行之后就可以得到结果,但是如果说我们人类使用计算机只是进行那种简单的计算,显然是浪费。

而复杂的计算任务,则和任何复杂事物一样,具有非常庞大的内部结构,人类解决复杂问题的一般思路,就是把一个大的结构分解为相对比较小的结构,如果可能就一直分解到非常简单的结构,分别解决了那些简单结构的问题,按照我们分解大问题的逻辑,也就解决了开始的复杂问题。

如何运用程序语言来表达这个解构的思路,就是本篇我们要讨论的主要论题。

首先我们讨论一个FORTRAN程序所可以具有的结构,按照这个语言对程序结构模本的规定,我们就可以规划相应的针对计算任务的问题解构方式。

所谓FORTRAN程序的结构,就是一个FORTRAN程序可以包含那些程序单位,然后这些单位又必须如何组装在一起。

fortran95的使用方法5

fortran95的使用方法5

第14章固有过程固然,我们已经能够做到运用FORTRAN 95来描述任何的计算任务,因为FORTRAN 95所提供的数据类型,固有运算,派生类型,自定义运算,以及构造函数与子例行程序的方法,都足以使得我们应付任何的计算问题。

不过FORTRAN 95标准还提供了大量的科学计算的常规计算与函数,都可以作为固有过程直接使用,而不需要我们自己来编写源码。

这就好像对于一个汽车装配师,除了给他提供螺栓,轴承之类的标准零件,还给他提供更高层次的标准配件,例如各种型号的发动机,电机之类。

因此熟练掌握固有过程,将给我们带来如虎添翼的感觉。

FORTRAN 95把固有过程作为标准来提出,就意味着任何的FORTRAN 95的编译器实现版本,都必须能够提供它们:115个固有过程,其中包括109个固有函数和6个固有子例行程序。

当然不排除很多的编译器还提供额外的固有过程。

正是由于固有过程是属于FORTRAN 95的标准内容,因此和固有运算,例如+,一样,总是“随叫随到”,无论在哪个程序单位内部,只要使用某个固有过程的名称,就等于调用了该固有过程。

不过,如果它的名称被用户定义的函数或子例行程序所“侵占”,那么在下面的情况下,被调用的将是用户自定义的函数或子例行程序而不是固有过程:●该自定义函数或子例行程序的界面是显式的;●该自定义函数或子例行程序出现在EXTERNAL语句当中;●该自定义函数属于语句函数。

当然上述的名称被侵权的有效范围只是该自定义函数或子例行程序的作用域。

相应的,固有过程也就只能在下面的情形下夺回被侵占的名称:●不存在使用该名称的语句函数;●它的名称出现在INTRINSIC语句当中;●相应的用户定义的过程的界面是隐式的。

例如在一个模块或一个内部过程里面,由于它的界面是显式的,那么固有过程的名称就能够被侵占,除非固有过程的名称出现在一个有效的INTRINSIC语句当中。

下面我们主要讨论固有过程的按照功能的分类,以及每个种类的固有过程所能够完成的计算任务。

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的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应该不会陌生。

第1章 Fortran95概述

第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)数据输出
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
一、程序设计、程序设计语言
从根本上讲,程序就是用计算机语言描述的算
力和对基础知识的良好掌握。
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
一、程序设计、程序设计语言
程序的处理对象是数据,每个数据都有一定的 特性和关联,因此为了更好的处理和操作,要研究 数据,对数据进行有规律的组织和构造。在算法设 计中,数据的组织和构造都有其基本方式和规律, 这种组织和构造方式称为数据结构。
明德笃志、博学创新
学再学习的能力、学愿学习的习惯
一、程序设计、程序设计语言

第1章 Fortran95概述

第1章  Fortran95概述

基本结构不一定只限于以上三种,凡满足以上四个特点的 结构都可以作为基本结构。如:多分支选择结构。
什么是程序设计?
从根本上讲,程序就是用计算机语言描述的算法。算
法是程序设计的核心和基础。
算法构造的思维方法与一般数学系统的思维方法有所 不同,理解、熟悉和习惯算法构造的思维方法,是学习计 算机程序设计的基本内容、主要难点与重点。从某种意义 上说,算法设计能力的培养实际上就是对合理进行计算能 力的培养,而要发现这种合理性,寻得“简捷算法”,首 先就必须要有很好的观察能力和对基础知识的良好掌握。
2.
上机步骤
从原理上讲,Fortran程序上机运行要经过编辑、编
译、连接和运行四个步骤。具体操作如下: (1) 创建工作空间 (2) 建立一个工程(Project)。 (3) 建立源程序文件。 (4) 编译源程序文件 (5) 构建可执行程序
(6) 运行程序
思考题:
求圆锥的体积和表面积
V
h r
程序设计与程序设计语言
通常,完成一项复杂的任务,需要进行一系列的具体 工作。这些按照一定的顺序安排的工作即操作序列,就称 为程序。例如,下面是某一个学校颁奖大会的程序: ① 宣布大会开始
② 介绍出席大会的领导
③ 校长讲话 ④ 宣布获奖名单
⑤ 颁奖
⑥ 获奖代表发言 ⑦ 宣布大会结束
什么是程序?
程序是计算机为完成某一个任务所必需执行的一
据设备公司(Digital Equipment Corp, 简称DEC)合 作研究,开发和推出了Digital Visual FORTRAN 5.0, 1998年1月,DEC与Compaq公司合并,DEC成为Compaq公 司的全资子公司,其后又推出Compaq Visual Fortran

Fortran95简介-全文版

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應該不會陌生。

FORTRAN95第一章

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个特殊符号 个特殊符号: % & ; < > ? ¥ _ └┘ 其中的特殊符号除了做为数学运算符号外, 其中的特殊符号除了做为数学运算符号外,还 有其他用法

Fortran中的过程

Fortran中的过程

用)时才能用哑过程。如果要用外部过程名作实元,则过程名必须出现在一个EXTERNAL语句 中,或被该作用范围中的一个类型语句指明具有EXTERNAL属性,或在该作用范围中被一个接口
块INTERFACE声明为一个过程。这就是说,在主调程序中,除了把一个实际存在的过程名作实
元与哑过程名结合外,还需对该实过程名作特别说明,以便让编译系统明白,该实元不是一般 的简单变量,而是一个函数(或子程序),或者用接口块来通知编译系统。
号:函数名()。系统在该位置上返回以该实元为自变量的函数结果值,参加表达式的运算。
例如,下面都是合CTION FUN2()
INTEGER FUNCTION FUN3(A,B)
RECURSIVE FUNCTION FUN4(X,Y,Z)
REAL RECURSIVE FUNCTION FUN5(M,N) RESULT(R_FUN5)
END
/docs/…/Sec6-2.htm
3/18
2011/5/23
Sec6-2
在本例中,函数值是赋给函数名的,如果要将值赋给非函数名的另一结果名,则 FUNCTION hex(n) RESULT(hx) CHARACTER(LEN=8)::hx … hx(j:j)=
子程序名只是用来作标识,不代表任何值。哑元列表是子程序与调用单元之间进行数据传 送的主要渠道,当有一个以上哑元时,它们之间用逗号隔开,如果没有哑元,则一对括号可以 省略。从SUBROUTINE语句后面一直到END语句则是子程序体。它的说明部分应包括对哑元和子 程序中所用变量、数组等的说明,它的执行语句部分完成运算和操作功能。其中的END语句或 RETURN语句使执行流程返回到调用单元。
例:将一个4字节的整数用16进制表示出来。[e_622_01.f90]
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附录B Fortran 95内在过程
FORTRAN 95标准提供了115个内在过程,其中包括109个内在函数和6个内在子例行子程序。

很多编译系统还提供额外的内在过程。

按照形式,内在过程分为如下两类:通用过程;专用过程。

所谓通用过程是一个集合名称,通用过程与专用过程是一个集合与其元素的关系。

一个通用过程由两个或多个专用过程组成。

在所有的115个内在过程当中,除了如下4个内在函数外,其他都是通用过程:LGE、LGT、LLE和LLT。

专用过程针对具体类型与种别的变量。

例如,求一个变量的绝对值的通用过程为ABS(X),而求一个整型变量的绝对值的专用过程为IABS(X),求一个复型变量的绝对值的专用过程为CABS(X),如此等等。

所以,每个通用过程属下的专用过程都必定具有相应的类型,种别,甚至维的属性。

这些专用过程的名称的主要用途是作为实元来传递,这时就必须使用专用过程名称。

注意,在表中注明了少数专用过程不能作为实元。

按照功能,FORTRAN 95的内在过程主要分为如下5类:查询与数字操作函数;转换,置空以及传递函数;计算函数;数组函数;内在子例行程序。

如果从功能的角度来对内在过程分类,那么除了上面的比较具体的5类之外,还可以从内在过程对数组的作用方式的角度,把内在过程分为两大类:逐元过程和变换过程。

所谓逐元过程,就是从数学的观点来看,这些专用过程的计算对象并不是数组,但是可以运用一种自然的方式使得这专用过程能够作用于数组对象,并且得到相同形状的数组结果。

也就是使得该过程分别作用于数组的每个元素,把所有的过程结果再集合起来作为结果数组。

内在过程当中的大部分都属于逐元过程,包括:转换函数;计算函数(除了REPEA T,TRIM,DOT_PRODUCT,MA TMUL之外);子例行程序MVBITS。

其他的所有内在过程就都不是逐元过程了。

所谓变换过程,就是内在过程里面逐元过程之外的所有过程都称为变换过程,因为从它们的定义的实质上看,就是作用于一个数组数据对象,得到一个标量或者数组结果,也就是一个变换的过程,而不是单独地作用于每个元素。

因此除了函数NULL之外,所有的变换过程或者是具有一个取数组值的哑元,或者是具有一个取数组值的实元,它们对数组的作用都是某种整体变换作用。

例如对于向量的乘积,就不能逐个元素地进行。

内在过程的引用正如一般过程的引用一样,可以使用关键词变量。

由于某些内在过程的变量是可选项,因此使用关键词能够省略相应的实元。

常见的关键词哑元名称含义如下:
● DIM:DIM主要用于数组简化函数以及其他一些数组函数,表示在函数的作用对象不是整个数组的情况下,数组的哪个维被过程作用。

DIM取值为标量整型值,并且常常是可选变量。

●KIND:KIND一般用于转换函数,说明转换结果的种别参数。

KIND实元必须是一个标量整型初始化表达式,一般是可选的。

●BACK:BACK作为一个可选的逻辑型变量用来表示逆序过程,即它所出现的内在过程的对于数据对象的反方向操作。

例如,如果在内在过程INDEX当中出现了BACK=.TRUE.,那么INDEX的搜索操作就必须与正常方向相反,即从字符串的右端开始。

注意内在函数的非指针哑元都具有INTENT(IN)的属性,而指针哑元则不能改变其关联的实元或目标。

注1:该函数没有相应的通用过程名称,它的结果为默认整型。

注2:该函数没有相应的通用过程名称,它的结果为默认实型。

注3:标注星号*的函数不能用作实元。

注4:某些专用过程名称与其通用过程名称一样。

注:表B2中哑元名表示其类型:I 整型; R 实型; C 复型; S 字符型; L 逻辑型; X 多种类型; CH 单字符;
A 数组;M 矩阵; P 指针; V 向量; LA 逻辑型数组; IA 整型数组。

相关文档
最新文档