FORTRAN学习中的一些小心得

FORTRAN学习中的一些小心得
FORTRAN学习中的一些小心得

FORTRAN心得

第一部分:一些小心得

1Fortran不区分大小写

2Fortran有5种基本数据类型,integer,real,character,logical,complex

3fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用::

4real(kind=8)a这种格式只使用于Fortran90,Fortran77中要使用real*8或real(8)

5FORTRAN中FREE与FIXED两种格式do循环的区别:

Fortran95使用end do来结束循环。

Fortran77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。

Fortran77中,经常会使用CONTINUE这个命令来结束循环。因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。

6循环的流程控制:

循环中的cycle命令相当于c++里的continue命令,用于结束一次循环

循环中的exit命令好比c里面的break,用于结束循环

7不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO语句

7fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。

8fortran77中只能用单引号。(还有疑问,因为fixed format能用双引号)

9逻辑运算符

==/=>>=<<=!Fortran90用法

.EQ..NE..GT.GE..LT..LE.!Fortran77用法

9PAUSE,CONTINUE,STOP

pause暂停程序执行,按enter可继续执行

continue貌似没什么用处,可用作封装程序的标志

STOP命令用来结束程序,要谨慎使用

10数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran 的数组元素之间不能用空格。

11数组的声明:

Fortran77中数组的声明,必须使用DIMENSION命令

Integer a;!先声明a是整型

Dimension a(10)!再声明a是大小为10的数组

Fortran95中可以用简单的方法:

Integer a(10)!最简单的方法

Integer,dimension(10)::a!另一种方法

12数组的赋值:

Fortran77中数组的声明,可以使用DATA命令或隐含式循环来赋初值;

Fortran95中可以直接设置初值;如:integer::a(5)=(/1,2,3,4,5/);此时,括号和除号之间不能有空格;

13与C不同,Fortran数组索引值默认从1开始,而且可以在声明时改变该规则,如integer a(-3:1)!索引值为-3,-2,-1,0,1

13数组在内存中的存放顺序也与C不同(正好相反),如a(2,2)在内存中的存放顺序为a(1,1),a(2,1),a(1,2),a(2,2);

原则是放低维的元素,再放高维的元素,此规则称为column major

矩阵输出时也是按列输出。。

14Fortran的特色:隐含式循环

15a,b都为数组,则可以这样用a=sin(b),(内部函数都可以这样用)

16数组专用:

where命令形式上类似于if,但只用于设置数组where.....elsewhere...elsewhere...endwhere(没有then)

FORALL是Fortran95添加的功能,只能用于数组操作

forall可以嵌套使用,还可以在forall中使用where,但where中不能使用forall 15Fortran中传递参数的原理与c++不同,Fortran中是传址调用,就是传递时用参数和子程序接受时用的参数使用一个地址,尽管命名可以不同。

16调用自定义函数前需要做声明,调用子程序则不需要。

17Module中有函数时必须在contains命令之后

18全局变量(有的书上叫无名公用区、有名公用区)全局变量用来定义一块共享的内存空间;

全局变量不能声明成常量

全局变量不能直接使用data命令赋初值,要在block data模块中使用data来设置初值。

COMMON语句是说明语句,因此它应该出现在相应程序单元中的所有可执行语句之前。

取用全局变量时,是根据它们的相对位置关系来作对应,而不是根据变量名称来对应。19传递参数与使用全局变量都可以在不同程序之间共享数据,那什么时候该使用参数,还有什么时候该使用全局变量呢?

简单地说,当需要共享的变量不多,而且只有少数几个程序需要使用这些数据时,那就使用参数,

需要共享大笔数据,或是有很多不同程序都需要使用这些数据时,就使用全局变量。20INCLUDE命令

1INCLUDE命令可以写在任何地方,它只是单纯地用来插入一个文件的内容。

2有时候也会应用在声明全局变量,先把声明全局变量的程序代码编写在某个文件中,需要使用全局变量的函数再去INCLUDE这个文件,这样可以减少程序代码。

第二部分:格式化输入输出

1表控输入输出(即表控格式输入输出)

1注意点:不同计算机系统对表控格式输出的规定不同,例如对一个整型数,有的系统规定输出占13列,有的系统规定输出占10列,也有的系统不规定固定的列数而按照数据的实际长度输出,再用一个空格作分隔符。

2如果在输入数据行中出现”/”号,表示对READ语句的输入到此结束,未被赋值的变

量将不予赋值。

2FORMAT语句

语句格式:

标号FORMAT(格式描述符)

例如:write(*,100)i,j,k;

100FORMAT(1X,I3,I5,I7),其中,1X是换行控制符(走纸控制),I3表示i变量的值输出占3列,I5表示j变量的值输出占5列

1格式描述符

主要介绍:I、F、E、X、纵向走纸、'(撇号)、r(重复系数)、/(斜杠)等

(1)X描述符

作用:用于输出空格

一般形式:nX

(2)I描述符

作用:用于整型数据的输出

一般形式:Iw或Iw.n

(3)F描述符

作用:用于实数的小数形式输出

一般形式:Fw.d

(4)E描述符

作用:用于实数的指数形式输出

一般形式:Ew.d

其中:E—实数的指数形式输出;

w—字段宽度;

d—数字部分的小数位数。

数值部分<1

(5)A描述符

作用:用于字符型数据的格式描述

一般形式:Aw或A,其中w是字段宽度。

(6)‘号描述符

作用:用于输出字符常量,即把撇号内的字符串原样照打

例如:write(*,100)i,j

100format(1x,'i=',i3,'j=',i4)

(7)H描述符

作用:它的作用与撇号描述符类似,也可以输出字符型常量

一般形式:nH

建议:建议最好不要使用H描述符,而是使用撇号描述符,避免错误

例如:I=123

WTRITE(*,100),I

100FORMAT(1X,2HI=,I3);

(8)斜杠描述符

反斜杠\描述符和美元$描述符的作用相同,都是在输出一个记录行后取消回车符,

常用于输出字符串与输入数据显示于屏幕同一行的情形。

例如:write(*,'("please enter your name",$)');

Read(*,*)My_age

(9)重复系数r

在format语句中,如果出现几个(或几组)相同的格式编辑符,则可以利用重复

系数而只写一个(或一组)编辑符。

r——可重复使用的次数。

例:

write(*,100)n1,n2,x,y1,y2,y3

100format(1x,i10,i10,f8.3,f7.2,f7.2,f7.2)

Format(1x,2i10,f8.3,3f7.2)

第三部分:函数操作

1语句函数

1语句函数的定义

REAL(KIND=8)X,F

F(X)=X**2+X+1

2语句函数的调用

语句函数一旦被定义后,就可以在本程序单元中被调用。调用的形式和调用内容函数形同,即:

语句函数名(实参)

2说明

语句函数定义语句是非执行语句,它应该放在所有可执行语句之前和所有的说明语句之后。

语句函数只能在本程序单元中被使用。

2函数子程序

1定义的一般形式:

类型说明符FUNCTION函数名(形参表)

函数主体

函数名=表达式;

END

或者:

FUNCTION函数名(形参表)

函数主体

函数名=表达式;

END

3子例行程序

子例行程序定义的一般形式:

SUBROUTINE函数名(形参表)

。。。

end

子例行程序的调用:

CALL子程序名(实参)

4函数子程序与子例行程序的区别

1子例行程序的名称不用来返回函数的处理结果,因此是没有类型的。所以不能定义子例行程序的类型。

2子例行程序必须以SUBROUTINE语句开头,以END语句结束。

3能用函数子程序实现的功能,都能用子例行程序来实现,反之亦然。因此在程序设计时,要对具体问题选择哪种方式。

4由于不能给子例行程序名赋值,所以在将函数子程序转换为子例行程序时,应该增加一个变量用来带回在函数子程序中由函数名带出的子例行程序处理结果。

5子例行程序的调用需要专门的CALL语句。

5数据块子程序(BLOCK DATA)

1数据块子程序是非执行程序单元,因而在其中不能出现任何可执行语句,也不能被别的程序调用。

2它是专门用来给有名公用区中的项目赋初值的子程序。注意:COMMON变量不能直接在子程序或主程序中使用DATA命令来设置初值,要在BLOCK DATA程序模块中使用DATA 命令来设置初值。

3数据块子程序是一个完整的程序单元。它由BLOCK DATA语句开始,END语句结束。4BLOCK DATA只能用来设置全局变量的初值,而且在主程序执行前,全局变量的初值内容就会设置完毕,事实上这一段程序会在主程序执行前就会生效;

5全局变量不能声明成常量,所以BLOCK DATA中不能出现PARAMETER。

6MODULE

1MODULE可以用来封装程序模块,通常是用来把程序中具备相关功能的函数及变量封装

在一起。例如需要使用全局变量时,可以把全局变量都声明在MODULE中,需要使用这些变量的函数只要USE这个MODULE就可以使用它们。

2MODULE中的变量如果不是声明成全局变量,这些变量被函数使用时,只会是函数中的局部变量。

3MODULE中还可以容纳函数,语法如下:

Module module_name

………!先写声明相关程序代码

………

contains!从contains后开始写作函数

subroutine sub_name

………

end subroutine[sub_name]!subroutine不能省略

function function_name

…………..

end function[function_name]!function不能省略

end

这个做法比较符合模块化概念,编写大程序时,可以把程序中属于绘图功能的部分放在module Graphics中,把数值计算的部分放在module Numerical中。Visual Fortran中所提供的一些扩充函数库就用这个方法来归类,像是数值函数库IMSL就放在module IMSL,3D绘图程序库OpenGL的函数就放在module OpengGL中。使用它们之前都要先use IMSL,use OpenGL。

第四部分:FORTRAN的文件操作

1记录结构(什么是记录结构)

一个数据文件在磁盘上的存放格式确定了文件的记录结构。例如,在DOS或windows下用现有的编辑器建立一个文件S.DAT,其数据存放方式如下:

1,2,3,4,5

6,7,8,9,10

11,12,13,14,15

16,17,18,19,20

文件中存有4行数据,每行5个数据。在建立这些数据时,当每行最后一个数据输完后,打入了一个回车或换行标记(当然这是不可见标记)。以上文件有4行,每行末尾都有一个标记。因此,将每一行称为一个记录。可以这样说,一个记录包括多个数据,以回车或换行标记作为记录的结束。这就是记录的概念。

文件中的记录多少,每个记录的数据多少就是这个文件的记录方式—也称为记录结构。

由多个数据记录按一定的结构形式存入磁盘,就组成了文件。

2open语句的使用:

OPEN语句的功能是打开一个文件,其语句的基本格式为:(前后位置可以变化)

OPEN(UNIT=number,FILE=filename,STATUS=status,ACCESS=access,…)

其中,

1.UNIT=number

number必须是一个正整数,用来给后面的文件指定一个代码(这样方便使用write或read 等命令在文件上读写),它可以使用变量或是常量来赋值。Number值最好避开1、2、5、6。因为2、6是默认的输出位置,也就是屏幕。1、5则是默认的输入位置,也就是键盘。

2FILE=filename

这个字段用来指定所要打开的文件名称,文件名要符合操作系统规定。最好不要使用中文名3FORM=’FORMATTED’OR‘UNFORMATTED’

FORM字段只有两个值可以设置:’FORMATTED’或‘UNFORMATTED’

FORM=’FORMATTED’表示文件使用“文本文件”格式来保存

FORM=‘UNFORMATTED’表示文件使用“二进制文件”格式来保存

这一栏不给定时,默认值为FORMATTED(潘师兄的程序大部分都没写这一栏)

4STATUS=’NEW’或’OLD’或’SCRATCH’或’UNKNOWN’

STATUS=’NEW’一个存在的旧文件,如果文件存在,则打开。否则出现一个I/O错误STATUS=’OLD’文件决不能存在,否则出现一个I/O错误

STATUS=’SCRATCH’打开一个暂存文件,暂存文件是临时文件,当关闭或终止程序时,文件将被删除。这时不需要指定文件名称,也就是FILE这一栏可以省略,因为程序本身会自动取一个文件名。

STATUS=’UNKNOWN’缺省时的默认值,文件存在则打开,不存在则创建,相当于NEW 与OLD的综合利用。

5ACCESS=’SEQUENTIAL’或’DIRECT’

这个字段用来设置文件读写的方法

ACCESS=’SEQUENTIAL’读写文件的操作会以顺序的方法来做读写,这就是“顺序读取文件”

ACCESS=’DIRECT’读写文件的操作可以任意指定位置,这就是“直接读取文件”

不赋值时,默认值为SEQUENTIAL’

6.RECL=length

7ERR=LABEL

这个字段用来设置当文件打开发生错误时,程序会跳跃到LABEL所指的行代码处来继续执行程序。

3直接读取文件的操作

在FORTRAN语言中,读取文件的操作可以有“顺序读取”及“直接读取”两种方法。

所谓的直接访问文件,即将文件事先分区成好几个同样大小的小模块,(即指定记录号,且在每条记录中的数据还是按顺序的),再来进行读写的工作。

4读写命令WRITE与READ语句的运用

WRITE/READ

(UNIT=number,FMT=format,NML=namelist,REC=record,IOSTAT=stat,ERR=errlabel,END=E

NDLABEL,ADVANCE=advance,SIZE=size)

1UNIT=number指定文件代码

2FMT=format指定输入输出格式,若为*号则表示自由格式(为了读写数据的准确,建议使用*号)

3

5REWIND的使用

Rewind语句将一个文件的操作位置重新定位在其第一条记录上。其语句格式为:REWIND(u,ERR=LABEL,IOSTAT=iocheck)

u,文件编号

ERR=LABEL遇到错误转到LABEL语句

IOSTAT=iocheck返回文件打开的状态,见OPEN语句。

6BACKSPACE语句

Backspace语句用于在文件数据操作中,从当前数据位置回退到上一个数据位置。其语句格式为:

BACKSPACE(UNIT=number,ERR=errlabel,IOSTAT=iostat)

7ENDFILE语句

把当前的文件位置变成文件的结尾。

8INQUIRE语句

查询文件状态命令

第五部分:使用QuickWin

1使用QuickWin特性的程序必须显示地用语句USE DFLIB访问QuickWin图形库;

2必须把用户项目的类型选为

第六部分:FORTRAN内置函数学习

1DBLE

语法:result=DBLE(a)

作用:转换维双精度实数

参数类型:ALL

函数值类型:real(8)

国内外认知语言学研究综述 摘要:认知语言学是20世纪70年代在认知科学的基础上发展起来的一个语言学流派。80到90年代,诞生于美国的认知语言学,迅速影响到其他国家,并被越来越多的语言学学者所接受和采纳。国内语言学界自90年代开始接触认知语言学之初,就发现其在解决汉语具体问题上的可适用性,从而越来越多地关注这一学派的动向。三十年来,国内学者在这一领域也做出了许多贡献,同时也有很多不足的地方。此文主要就认知语言学在中国的发展情况进行介绍,同时简单回顾认知语言学的发展历程和主要理论方法。 关键词:认知语言学,国内研究,国外研究,综述 认知是当今人类最感兴趣的课题之一,因为它关系到我们对人类思维过程的破译,因此越来越多的学者投入认知科学的研究。随着结构主义学派和转换生成语言学派的学者们在语言学各领域研究的深入,他们越来越发觉自身理论和方法的局限,为了解决现有理论方法力所不及的问题,学者们开始寻求新的办法。认知科学无疑给语言学家们指明了一条道路。乔姆斯基的转换生成语言学就已经在语言学研究中加入了认知概念,他认为语言是认知系统的一部分。认知与语言学的结合是不可避免的一种趋势,当这种趋势越来越显露,认知语言学的出现也就成为了必然。20世纪70年代诞生于美国的认知语言学,从80到90年代开始迅速影响到其他国家,其发展势头大有成为继结构主义学派和转换生成学派之后又一个在语言学史上具有重大历史意义的学派,在21世纪成为占主导地位的显学。国内语言学界和外语界从90年代开始陆续引进认知语言学派的一些理论和方法。三十年来,认知语言学在中国的发展也是势如破竹,几乎所有语言学的刊物中都会有相关论文。国内学者在这一领域都做出了许多贡献,特别是用认知语言学理论来解释汉语中的具体问题方面。但是也存在着明显的不足,如最主要的是重理论引进和解释,轻创新。 一、何为认知语言学? 最早提出“认知语言学”这一术语的是Sidney Lamb,他在1971年就在论文中采用这一术语,并将其解释为:“用以指真正研究大脑中的语言,语言与心智、神经之间的关系。”对于认知语言学的界定,学者们从一开始就有所争议。于是跟其他的学科一样,学者们一般使用狭义和广义来区别不同的观点。认知语言学理论家Tayler(2002)在术语上用以区别狭义和广义的认知语言学的办法是:将狭义的认知语言学用“Cognitive Linguistics”表示,而将广义的认知语言学用“cognitive linguistics”表示。显然作为心理学家的Sidney Lamb 的观点是广义的。在语言学领域里的讨论,一般都是从狭义的角度。国内学者王寅(2007)将狭义的认知语言学可以定义为:“坚持体验哲学观①,以身体经验和认知为出发点,以概念、结构和意义研究为中心,着力寻求语言事实背后的认知 ①王寅在《Lakoff和Johnson的体验哲学》文中提到,“Lakoff认为认知语言学的哲学基础既不是经验主义,又不是理性主义,而是体验哲学。”

1 FORTRAN77四则运算符 + - * / ** (其中**表示乘方) 在表达式中按优先级次序由低到高为:+或-→*或/→**→函数→() 2 FORTRAN77变量类型 2.1 隐含约定:I-N规则 凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。 如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字符位以后不能有内容。 4 FORTRAN77关系运算符 .GT. 大于 .GE. 天于或等于 .LT. 小于 .LE. 小于或等于 .EQ. 等于 .NE. 不等于 .AND. 逻辑与 .OR. 逻辑或 .NOT. 逻辑非 .EQV. 逻辑等 .NEQV. 逻辑不等 运算符优先级由高到低顺序为:()→**→*或/→+或-→.GT.或.GE.或.LT. 或.LE.或.EQ.或.NE.→.NOT.→.AND.→.OR.→.EQV.或.NEQV 5 FORTRAN77语句

一、认知语言学的起源 二、主要内容 19 世纪末20 世纪初,当心理学从哲学中分离出来成为一门独立的实验学科之时,语言的认知研究便已开始。1987年是认知语言学正式的诞生年,虽然此前已有一些零星的文章预示着一种新的语言学理论即将诞生。但是一般认为,这一年出版的Lakoff“Women, Fire ,and Dangerous Things”和Langacker“Foundations of Cognitive Grammar”标志着认知语言学作为一种独立语言学理论的诞生。认知语言学研究的主要代表人物是Langacker,Lakoff,Jackendoff, Taylor 和Talmy等人。 认知语言学包括认知音系学、认知语义学、认知语用学等分支,研究内容广,覆盖面大,概括起来主要有以下几点:一、范畴化与典型理论 语言学在方法论和本质上都与范畴化(categorization)紧密相关。范畴化能力是人类最重要的认知能力之一,是“判断一个特定的事物是或不是某一具体范畴的事例”(Jackendoff , 1983∶77) 。 Labov和Rosch对范畴的研究,打破了范畴的“经典理论”或称“亚里士多德理论”一统天下的局面。“经典理论”认为:范畴是由必要和充分特征联合定义的;特征是二分的;范畴有明确的边界;范畴内的所有成员地位相等。这一理论却

受到了认知科学的有力挑战。Rosch 还提出了“典型理论”(prototype theory) ,认为大多数自然范畴不可能制定出必要和充分的标准,可以公认为必要的标准往往不是充分的;一个范畴的成员之间的地位并不相同,典型成员具有特殊的地位,被视为该范畴的正式成员,非典型成员则根据其与典型成员的相似程度被赋予不同程度的非正式成员地位。例如,在“鸟”范畴内“知更,鸟”常被视为典型成员,而“企鹅”、“驼鸟”等则为非典型成员。当然,一个范畴的典型成员会因不同的人、文化、地理位置而有所不同,但一个范畴中总有典型的。 典型理论对认知科学最有价值的贡献在于它把注意力集中在内部结构上,集中在范畴具有“核心”和“边缘”这个事实上。目前,它已用于语音、句法、词义、语用、语言习得、失语症等方面的研究,并取得了可喜的成绩。 二、概念隐喻 隐喻的认知研究可追溯到18 世纪。约在1725 年,意大利哲学家和修辞学家G. Vico就发现了隐喻的认知功能,后在其《新科学》一书中阐述了其认知观点。然而,把隐喻的研究纳入认知语言学领域的重要标志却是Lakoff &Johnson (1980)。认知语言学家认为,比喻性语言与非比喻性语言本质上无甚差别;日常语言中充满了隐喻,完全不带隐喻的句子大概只占极少数。隐喻是“我们对抽象范畴进行概念化的有

FORTRAN 90标准函数(一) (2012-07-03 17:14:57) 转载▼ 分类:学习 标签: fortran 函数 教育 符号约定: ●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。 ●s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。 ●[…]表示可选参数。 ●*表示常用函数。

注:三角函数名前有C、D的函数为复数、双精度型函数。 注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。 表4 参数查询函数

atan2函数的值域是多少?我从网上找到一个fortran函数的日志,说此值域是-π~π,但正常反正切函数的值域应该是-π/2~π/2。对atan2函数不够了解,所以不知道你的答案对不对,我个人认为不对。我是用正常的反正切函数atan(v/u)来算的: FORTRAN: if (u>0..and.v>0.) dir=270-atan(v/u)*180/pi if (u<0..and.v>0.) dir=90-atan(v/u)*180/pi if (u<0..and.v<0.) dir=90-atan(v/u)*180/pi if (u>0..and.v<0.) dir=270-atan(v/u)*180/pi if (u==0..and.v>0.) dir=180 if (u==0..and.v<0.) dir=0 if (u>0..and.v==0.) dir=270 if (u<0..and.v==0.) dir=90 if (u==0..and.v==0.) dir=999 其中uv等于零的五种情况要单独挑出来,不然程序会有瑕疵。atan函数换成atand函数的话直接是度数,不用*180/pi 我四个象限和轴都试了,应该没错。 最需要注意的问题,一个是函数值域,另一个是uv矢量方向和风向是反着的,并且风向角度数是从正Y轴开始顺时针算,和三角函数里度数从正X轴开始逆时针算不一样。

1、RANDOM_NUMBER Syntax ['sint?ks] n. 语法 CALL RANDOM_NUMBER (harvest结果) Intrinsic Subroutine(固有子程序):Returns a pseudorandom number greater than or equal to zero and less than one from the uniform distribution. 返回大于或等于0且小于1,服从均匀分布的随机数 2、RNNOA/ DRNNOA (Single/Double precision) Generate pseudorandom numbers from a standard normal distribution using an acceptance/rejection method. 产生服从标准正态分布的随机数 Usage(用法) CALL RNNOA (NR, R) Arguments(参数) NR— Number of random numbers to generate. (Input) 要产生随机数的个数 R— Vector of length NR containing the random standard normal deviates. (Output) 输出长度为NR,随机正态分布的向量 Comments(注解) The routine RNSET can be used to initialize the seed of the random number generator. The routine RNOPT can be used to select the form of the generator. 程序RNSET可以用来初始化随机数发生器的种子 Example In this example, RNNOA is used to generate five pseudorandom deviates from a standard normal distribution. INTEGER ISEED, NOUT, NR REAL R(5) EXTERNAL RNNOA, RNSET, UMACH C CALL UMACH (2, NOUT) NR = 5 ISEED = 123457 CALL RNSET (ISEED) CALL RNNOA (NR, R) WRITE (NOUT,99999) R 99999 FORMAT (' Standard normal random deviates: ', 5F8.4) END Output Standard normal random deviates: 2.0516 1.0833 0.0826 1.2777 -1.2260

一、选择题 1、下列关于"SUBROUTINE MAP(X,Y)"语句行的叙述中,不正确的是( ) A) 这是子程序的第一个语句B) 字符串"MAP"是子程序名 C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据 2、FORTRAN表达式"2/4+"的值是( ) A) B) 1 C) D) 0 3、阅读下列FORTRAN程序: PI=3. WRITE(*,' ')PI END 程序运行后输出结果是( ) A) B) 3.1415 C) D) 4、圆的直径存放在整型变量K之中,下列计算圆面积的表达式中正确的是( ) A) *K*K/4 B) *(K*K/4) C) *(K/2)**2 D) *(K/2)*(K/2) 5、要判断"月收入M在2000元以上(含2000元)且5000元以下)不含5000元)"的职工,应该使用的逻辑表达式是( ) A) M .GE. 2000 .AND. M .LE. 5000 B) M .GE. 2000 .OR. M .LE. 5000 C) M .GE. 2000 .AND. M .LT. 5000 D) M .GE. 2000 .OR. M .LT. 5000 6、设FORTRAN子程序如下: SUBROUTINE SUB(I,X) B=I+1 X=X+B END 若主程序中的变量M,B已按I-N规则赋值,则调用上述子程序的语句中正确的是( ) A) CALL SUB(M,M) B) CALL SUB(M+4,B) C) CALL SUB(B,B) D) CALL SUB(M,B+4) 7、下列不是FORTRAN常量的是( ) A) , B) +00 C) 2/3 D) 'Very good!' 8、阅读下列FORTRAN程序: F= DO 20 K=3, 7, 3 DO 20 L=K-1, K

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) 产生一个种别值,它表示某一精度和范围。N指十进制有效位数,m指明值范围内以10为底的幂次。

2002年3月 第34卷 第2期 外语教学与研究(外国语文双月刊) F oreign Language T eaching and Research(bim onthly) Mar.2002 V ol.34N o.2 认知语言学的研究目标、原则和方法 西南师范大学 文 旭 提要:认知语言学是语言学中的一种新范式,它包含许多不同的理论和研究方法。由于认知语言学把人们的日常经验看成是语言使用的基础,因此,在许多方面它与生成语言学存在很大的差别。本文在整合认知语言学各种理论方法的基础上,探讨了这一认知范式的研究目标、基本原则及研究方法。 关键词:认知语言学、语义、语法 [中图分类号]H0[文献标识码]A[文章编号]100020429(2002)02-009028 一、引言 认知语言学是语言学中的一种新范式,它包含许多不同的理论、方法及研究课题。认知语言学肇始于20世纪70年代,80年代中期以后其研究范围扩展到了语言学中的许多领域,如句法、意义、音系以及语篇等。其成熟的重要标志是1989年春在德国杜伊斯堡召开的第一次国际认知语言学会议以及1990年出版的《认知语言学》杂志。自诞生之日起,认知语言学就把自己置于认知科学这一大学科中,与哲学、心理学、人类学、计算机科学以及神经科学等结下了不解之缘,并逐渐成为当代语言学中的一门“显学”。 在过去20多年里,认知语言学研究在几个重要领域里已卓有成效,如范畴化、概念隐喻、转喻、多义性、拟象性以及语法化等(参见文旭1999,2001)。尽管认知语言学家内部在具体方法、感兴趣的课题、研究的切入点等方面还存在一些差别,但他们的研究目标和基本原则有许多共同之处。为了进一步理解并准确把握这一新的认知范式,本文拟对认知语言学的研究目标、基本原则、研究方法作一些解释与探讨。二、认知语言学的研究目标 语言是人类表达观念和思想的最明确的方式之一。从“表达观念和思想”的角度来研究人类语言,这种观点就是通常所说的“认知观”。这种观点认为,语言是认知系统的一部分,而认知系统由感知、情感、范畴化、抽象化以及推理等组成。这些认知能力与语言相互作用并受语言的影响,因此从某种意义上来说,研究语言实际上就是研究人类表达或交流观念和思想的方式。 当代语言学的一个基本特点就是对认知现实主义(cognitive realism)的承诺,即确认语言是一种心理或认知现象。语言学诸多门派都以探索隐藏在大脑中具有普遍性的人类语言机制作为终极目标,换句话说,语言分析的目的不只是描写人们的语言行为,而是解释引起语言行为的心理结构和心理过程,揭示语言行为背后内在的、深层的规律。像乔姆斯基、杰肯道夫(R. Jackendoff)、兰格克(https://www.360docs.net/doc/e217823220.html,ngacker)、雷科夫(G. Lakoff)、比尔沃思(M.Bierwisch)以及赫德森(R.Huds on)这些代表不同理论方法的语言学家,他们的研究都具有这一目的。如果仅从这一目的来看,那么乔姆斯基的生成语法、杰肯道夫的概念语义学、赫德森的词语法(w ord gram2 ? 9 ?

Read 的规则: 按行读取,每次读一行,读完后光标自动跳到下一行的开头,空格和逗号代表结束(所以空格和逗号也是读取的一部分的话,需要使用“输入输出格式”) 如果想要将一行数据读入数组,代码为: Read(10,*) s(:,:,:) 不用规定输入输出格式,因为会根据s(:,:,:)确定需要读入的数字的个数,然后fortran会按部就班的读取,甚至文件中当前这一行的数字个数不足以填满s(:,:,:)的时候,read会自动跳到下一行继续搜索数字,直到填满s(:,:,:)为止。 但是需要注意给数组赋值的顺序:read会把它搜索到的第一个数字给s(1,1,1),第二个给s(2,1,1),第三个给s(3,1,1)… 程序9 1: 将read(unit=field,fmt="(A79)",iostat=status)buffer 中的A79改为A2,结果只输出每行的前两个字符,说明read是按整行整行读取的。 中间空了几行之后,空行之后的内容还是能被读取和输出,这说明,空行和空白是不一样的:空行也算是一种文本内容,因此不会终止读取,而空白意味着结束。 !读取文件 program main implicit none character(len=79)::filename="number.txt",buffer integer,parameter::field=10 integer::status=0 logical alive inquire(file=filename,exist=alive) if(alive)then open(unit=field,file=filename) do while(.true.) read(unit=field,fmt="(A79)",iostat=status)buffer if(status/=0)exit write(*,"(A79)")buffer end do else write(*,*)filename,"does't exist." end if pause stop end program main ============================================= 附number.txt =============================== 1234555666

Fortran基本用法小结 目录: 一、说明 二、概述 三、数据类型及基本输入输出 四、流程控制 五、循环 六、数组 七、函数 八、文件 一、说明 本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。 另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果有不妥的地方,希望大家指正。谢谢! 文中蓝色的部分是程序代码,!后面的内容为注释。 二、概述 1、名词解释 Fortran=Formula Translator/Translation 一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一目标。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。 2、Fortran的主要版本及差别 按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortran90。Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。以下是77和90的一些格式上的区别。

FORTRAN 90 程序编程规范 Fortran 90 编程规范,使程序代码高度组织化,更加易读、易懂、易于维护,程序更加高效。使编出的程序更易懂、易于维护。 1 语言选择 数值预报创新系统软件开发应避免使用Fortran77 的某些过时特征以Fortran 90不一致的特征。选择Fortran 90 作为开发语言,并采用Fortran 90 的新功能,如动态内存的分配(dynamic memory allocation)、递归(recursion ), 模块(modules)、POINTER 、长变量名、自由格式等。 Fortran 77其中某些只是一些冗余的功能,这些功能已经过时,另外,还有一些在Fortran90 中被证明是不好的用法,建议不要使用。 2 Fortran 90 的新特性 2.1.1 建议使用的Fortran 90 新特性 建议使用Fortran 90 提供的模块(module ),并用Use ONLY 指定module 中哪些变量或派生类型定义可用于调用程序。 尽量使用数组下标三元组,这样可优化并减少所需的代码行数。为提高可读性,要在括号内表明数组的维数,例如: 1dArrayA(:) = 1dArrayB(:) + 1dArrayC(:) 2dArray(: , :) = scalar * Another2dArray(: , :) 当访问数组的子集时,例如在有限差分等式中,可以通过使用下标三元组实现。例如:2dArray(: , 2:len2) = scalar *( & Another2dArray(:, 1:len2 -1) & - Another2dArray(:, 2:len2) & ) 对程序单元(program units )命名,并使用End program ,End subroutine ,End interface ,End module 等结构再次指定“program unit ”的名称。 在逻辑表达式中使用>、 >=、 ==、 <、 <=、 /=,它们分别代 替.gt.、.ge.、.eq.、.lt.、.le.、.ne. 。新的表示方法更接近标准的数学符号 在变量定义中始终使用“::”;始终用“DIMENSION ”定义数组形状;始终用(len=)的语法格式声明字符变量的长度。

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程序书写规则

【以下文字转载自D_Atmosphere 讨论区】 【原文由superjyq 所发表】 我的Fortran基本用法小结 高级语言和算法组heavensky 目录: 一、说明 二、概述 三、数据类型及基本输入输出 四、流程控制 五、循环 六、数组 七、函数 八、文件 一、说明 本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。 另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果有不妥的地方,希望大家指正。谢谢! 文中蓝色的部分是程序代码,!后面的内容为注释。 二、概述 1、名词解释 Fortran=Formula Translator/Translation 一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一目标。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。 2、Fortran的主要版本及差别 按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortran90。Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所

龙源期刊网 https://www.360docs.net/doc/e217823220.html, 认知语言学的发展 作者:刘志茹 来源:《文教资料》2014年第05期 摘要:认知语言学是语言学的一门分支学科,脱胎自认知心理学或认知科学,成型于20世纪80年代至90年代。它涉及人工智能、语言学、心理学、系统论等多种学科,针对生成语言学,提出语言的创建、学习及运用,能够通过人类的认知加以解释,因为认知能力是人类知识的根本。认知语言学吸收了作为一门实验科学的认知心理学的研究成果,拓宽了我们的研究视野,为语言研究增加了新的视角,也提高了语言学研究的科学性。 关键词:认知语言学成型发展 认知语言学的哲学基础是身心合一说(Monism),也就是体验哲学,主要观点是:人的大脑(brain)和思想(mind)是无法分开的,我们对世界的认知主要来自于体验(embodiment)。正如认知语言学的奠基人之一George Lakoff所说:认知语言学的兴起是基于认知科学的某些基本研究成果,如色觉的神经生理学研究,原型和基本范畴,Talmy的空间关系理论,Fillmore的框架语义学等。认知语言学的早期理论基础是生成语义学,这一理论形成于20世纪60年代末和70年代初期,其认为语义无所不在,且促发所有的语言结构,即语义和语言形式密不可分,且语义影响语言形式。因此,“当今的认知语言学是建立在认知语义学基础上的一门研究语言、大脑和社会-物理经验之间密切关系的、具有多学科交融本质的较新学科”。 1.认知语言学的成型阶段 一般来说,我们认为认知语言学出现于20世纪70年代中期,Langacker教授在70年代提出了“空间语法”,当时还仅仅是一个理论,之后随着认知科学的不断发展,许多学者在此基础上提出了一些基于经验的关于语言研究的新的研究方法和范式,认知语言学渐露雏形。其诞生的两个主要标志是Lakoff(1987)和Langacker(1987)两部著作的面世;1989年春,由Rene Diren组织在Duisburg举行了认知语言学专题讨论会。会后,出版了《认知语言学杂志》,成立了国际认知语言学会(ICLA),并由Mouton de Gruyter出版认知语言学研究系列丛书。 这一领域中有深远影响力的研究成果和重要理论框架主要有:Fillmore(1976;1982)的框架语义学理论(Frame Semantics)及其后来与其他人(Fillmore et al.1988)一道发展而来的建构语法(Construction Grammar)、Talmy(1978,1988)的意象图式(Imaging Schemata)理论、Lakoff and Johnson(1980)的认知隐喻理论和Lakoff(1987)的认知借代理论和理想认知模型、Langacker(1987;1990;1991)的认知语法理论、Fauconnier(1985)的心理空间理论及后来和Mark Turner(2002)一道发展起来的概念整合理论(Conceptual Blending),以及由Jeff Elman(1989)和Brian MacWhinney(1988)发展而来的语言处理联结模式(connectionist models),该模式的研究焦点在于运用联结网络研究模块学习(modeling

fortran文件操作 From: 《Fortran 95 程序设计》彭国伦 1.文件读取的概念: 读取:“顺序读取”和“直接读取”。 保存:“文本文件”和“二进制文件”。 二进制文件:读取快,因为保存格式和数据在内存中的保存方法一样,同时也节省空间。 ---------------------------------- 2. 文件的操作: ---------------------------------- open的使用:使用open命令打开文件之后,就可以对文件来做输入输出。 example: program ex0901 impicit none open(unit=10, file='hello.txt') ! 打开hello.txt文件, unit指定文件代码,file 指定文件名称。 write(10, *) "hello" !在代码为10的文件中写入hello stop end program ex0901 open中有很多参数可以使用,详细如下: OPEN(UNIT=number, FILE='filename', FORM='...', STATUS='...', ACCESS='...', RECL=length, ERR=label, IOSTAT=iostat, BLANK='...', POSITION='...', ACTION=action, PAD='...', DELIM='...') UNIT='number': number必须是一个正整数,它可以使用变量或是常量来赋值。number最好避开1,2,5,6。因为2,6是默认的输出位置,也就是屏幕。1,5则是默认的输入位置,键盘。 FILE='filename':指定要打开的文件名称,文件名要符合系统规定。windows下不区分大小写,unix下则会区分大小写,最好不要使用中文文件名。 FORM='FORMATTED' OR 'UNFORMATTED' FORM字段只有两个值可以设置: FORM='FORMATTED' “文本文件”格式来保存 FORM='UNFORMATTED' “二进制文件”格式保存 这一栏不给定时候的默认值是: FORM='FORMATTED' STATUS='NEW' or 'OLD' or 'SCRATCH' or 'UNKNOWN' 用来说明打开一个新的文件或已经存在的旧文件。 STATUS='NEW' 打开一个原本不存在的新文件 STATUS='OLD' 打开一个原来已经存在的文件 STATUS='REPLACE' 若文件已经存在则重新创建一次,原来的内容消失;若不存在则会创建新文件。 STATUS='SCRATCH' 表示要打开一个暂存文盘,这个时候可以不需要指定文件名称,也就是FILE这个一栏可以忽略。因为程序本身会自动取一个文件名,至于文件名是啥也不重要,因为暂存盘会在程序结束后自动删除。 STATUS='UNKNOWN' 由各编译器自定义。通常会同REPLACE的效果。 !这一栏不给定时,默认为STATUS='UNKNOWN'。 ACCESS='SEQUENTIAL' or 'DIRECT' 设置读写文件的方法:

我的Fortran基本用法小结 周日, 10/14/2007 - 21:00 — gator 一、说明 二、概述 三、数据类型及基本输入输出 四、流程控制 五、循环 六、数组 七、函数 八、文件 一、说明 本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9 章,都是最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。要想得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础, 看完前九应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起 来了。外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过 之后都没得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果 有不妥的方,希望大家指正。谢谢! 文中蓝色的部分是程序代码,!后面的内容为注释。 二、概述 1、名词解释 Fortran=For mula Tran slator/Translation 一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始 ,IBM设计的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一 目标。ortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。 2、Fortran的主要版本及差别 按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortr an90。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的一些不同 其实很多,在下面涉及具体方面时可以看到。这里只是大致提一些。

第9章基本计算(一)赋值语句 从计算机的实际状态来看,给出表达式并不意味着计算的开始,真正能够驱动计算的是可执行语句,而最直接驱动表达式的计算过程的就是赋值语句,完成一个赋值步骤,就意味着机器的状态的局部或全局发生了一个根本的变化。 从语法的角度来看,一个表达式还只是一个比较复杂的复合词汇,还不能构成一个完整的语句,而赋值语句则是一个在语法意义上的完整的语句,表达式在赋值语句中扮演关键的语法作用。 从计算问题的角度来看,赋值可以说是基本的计算步骤,考虑一下我们人工计算的过程就可以发现,任何一个完整的计算步骤,都可以说就是一个赋值步骤,特别是公式演算和数值计算,完成一个局部运算过程的标志,往往就是求出某个中间变量的数值或表达式。 FORTRAN语言作为一种以公式翻译为初衷的高级语言,它的赋值语句的一般形式就是一个数学等式,当然不是那种公式恒等变换得到的恒等式,而是要把运算的结果赋予一个变量,因此它的一般句法形式为: variable = expression variable => expression 可以看到一个赋值语句作为一个完整的语句,分为三个部分: ● 被赋值的变量 ● 赋值符号 ● 计算(表达式) 其中被赋值的变量,通过赋值,就拥有了明确的取值形式,如果该变量含有下标,片断下标或子串范围,则赋值的前提是它们都已经获得具体的取值。 基于表达式结果的不同种类,赋值语句分为: ●固有赋值:固有赋值是把任意类型的值赋予一个非指针变量,或把一个指针变量赋 予一个与之相关联的目标。 ●自定义赋值:自定义赋值得以构成的前提是存在一个可访问的子例行程序,它包含 一个具有ASSIGNMENT形式的赋值界面,其属性与自定义赋值语句里的变量和表达式的属性保持一致。 ●指针赋值:指针赋值把一个指针变量关联到它的目标对象,或者说把一个目标对象 赋予到一个指针变量。在形式上它使用符号=>。 ●过滤数组赋值:这个赋值过程是对满足一定条件的数组元素进行赋值,而不是对数 组整体进行赋值。 ●并行指标数组赋值。这种赋值形式给出了一种有效的并行机制,能够大规模地对多 重指标变量进行赋值。 下面我们将分节讨论这5类赋值形式,首先给出一些例子如下:

近年来,认知语言学已经成为国内外学者研究语言学的重点,认知语言学能很好地解释一些其他语言学理论无法解释的语言现象。认知语言学反映了人类认知过程。英语倒装句作为复杂的语言学现象引起很多语言学家的关注。各种不同的语法学派,语言学家和学者在不同的方面做出了很多贡献,但是由于这一复杂的句法特征,很多研究不能系统地解释倒装句。本文以象似性理论为认知原理,对英语倒装句中全部倒装,部分倒装及修辞性倒装进行解释,认为象似性尤其是接近象似性原则和顺序原则是形成倒装的主要原因。 关键字:象似性;倒装句;象似性原则

倒装句作为一种语法形式,是当今语言学研究的一个重要内容。传统理论对倒装的研究忽视了语言外部的因素,未重视认知对语序的制约作用,研究不够全面。 本文以认知理论为基础,对英语倒装句进行分析研究,以象似性原理为理论为依据,对英语中的不同倒装现象进行了分析和解释。在对句首倒装成分做出解释的基础上,本文对倒装句中动词全部活部分出现于主语之前的情况进行了解释,认为邻近象似性是英语倒装句中动词或全部或部分地随着突显成分提到主语之前的原因。 2 文献综述 国内外学者对认知语言学的研究做出了很多贡献,如王寅著的《认知语言学》,赵艳芳的《认知语言学概论》,Lackoff. G& M. Johnson’s Metaphors We Live by等等。所以,以期刊、论文方式讨论倒装句的研究出了许多成果。传统研究主要是从修辞、句法、语用和语篇的角度进行的。徐盛桓,以语料统计为依据,研究英语倒装句,认为倒装是为实现句中各种成分的信息状态合理分布的调节装置,通过调节,使语句的成分有恰当的错位,达到全息的语用目的。余笑,从Verschuern 提出的语用综观说出发,探讨英语和汉语中倒装语序的语用功能。发现英汉倒装语序均具有焦点分离突出和情景设定的功能。 而从认知语言学角度研究英语倒装句日益增多。杨壮春,用射体(trajectory)-界标(landmark)理论从认知的角度对倒装句的焦点突显功能作出解释,认为倒装句是该理论在语言学中的现实化,它把“射体-界标”转化为“界标-射体”结构形成句末焦点,以使人们注意的焦点落在新信息上,从而达到英语倒装句的凸显效果。更多的是以图形与背景理论为视角,对英语倒装句的焦点凸显功能进行重新阐释,认为英语倒装句符合图形-背景理论中的凸显原则,如王冰营,吕娜;刘先清;王海欧等。 用传统的修辞、句法、语用和语篇的角度进行的分析有其自身的缺陷,仅仅将倒装句认为是一种表示强调手段的句子。而用图形与背景理论分析可以解决为什么句子应该倒装即英语倒装句起始部分的问题,但是却解决不了为什么动词或者功能词应该放在主语前面这样的问题。象似性作为认知语言学中重要的概念,可以进一步研究英语倒装句中的问题。 3 倒装句 英语句子的正常语序是主语位于谓语之前,然后是宾语或表语或其他句子成分。如果将全部谓语或谓语的一部分,或将宾语、表语、宾语补足语提到主语之前,就称为倒装语序(Inverted Order)。

相关文档
最新文档