FORTRAN90指导Word文档下载推荐.docx

上传人:b****6 文档编号:21974288 上传时间:2023-02-02 格式:DOCX 页数:79 大小:69.31KB
下载 相关 举报
FORTRAN90指导Word文档下载推荐.docx_第1页
第1页 / 共79页
FORTRAN90指导Word文档下载推荐.docx_第2页
第2页 / 共79页
FORTRAN90指导Word文档下载推荐.docx_第3页
第3页 / 共79页
FORTRAN90指导Word文档下载推荐.docx_第4页
第4页 / 共79页
FORTRAN90指导Word文档下载推荐.docx_第5页
第5页 / 共79页
点击查看更多>>
下载资源
资源描述

FORTRAN90指导Word文档下载推荐.docx

《FORTRAN90指导Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《FORTRAN90指导Word文档下载推荐.docx(79页珍藏版)》请在冰豆网上搜索。

FORTRAN90指导Word文档下载推荐.docx

CHARACTER*(*),parameter:

A=’aasdfasd’

运算符:

//

函数:

CHAR(NUM);

ICHAR(CHAR);

LEN(STRING);

LEN_TRIM(STRING)

INDEX(STRING,KEY);

TRIM(STRING)

5逻辑型KIND值为2、4

只有真(.TRUE.)和假(.FALSE.)两个值。

4.命名规则

1名字的长度不能超过31个字符。

2名字的组成成分可以是字母、数字和下划线。

3名字的第一个字符必须是字母。

4要特别注意,在名字中不能出现空格。

5变量名不能与全局名(程序单位名,数组名)同名,也不要与关键字同名。

6名称不区分大小写。

二、基本语句

1.类型说明语句

a.显式说明:

b.隐含说明:

IMPLICITINTEGER(A-C)!

FORTRAN90不再使用

c.I-N规则:

d.屏蔽I-N规则:

IMPLICITNONE

2.种别说明

programex0435

implicitnone

!

判断可以记录9个位数的整数kind值

integer,parameter:

:

long_int=selected_int_kind(9)

判断可以记录3个位数的整数kind值

short_int=selected_int_kind(3)

判断可以有10个有效位数,指数可以记录到50的浮点数kind值

long_real=selected_real_kind(10,50)

判断可以有3个有效位数,指数可以记录到3的浮点数kind值

short_real=selected_real_kind(3,3)

integer(kind=long_int):

a=12345678

integer(kind=short_int):

b=12

real(kind=long_real):

c=1.23456789D45

real(kind=short_real):

d=1230

write(*,"

(I3,1X,I10)"

)long_int,a

)short_int,b

(I3,1X,E10.5)"

)long_real,c

)short_real,d

stop

end

programex0436

real(kind=4):

a

real(kind=8):

b

a=1.0_4!

确定1.0这个数字是使用单精度

b=1.0_8!

确定1.0这个数字是使用双精度

write(*,*)a,b

3.属性说明:

EXTERNAL:

当用户过程作为实元时

INTRINSIC:

当内在函数名作为实元时

SAVE:

保存外部过程变量的值

INTENT:

决定虚元值的传递方向

PARAMETER:

符号常量声明

EQUIVALENCE:

等价声明!

EQUIVALENCE(A,B)表示A,B使用同一内存空间

OPTIONAL:

可选择属性的变元

ALLOCATABLE:

动态属性的变元

ASSIGN:

赋值语句

ENTRY:

为函数子程序或子例子程序提供多个入口

4.算术表达式

A.算术运算符:

***、/+、—

注意:

同级运算左结合,乘方运算右结合

B.内在函数:

数值函数:

ABS(x):

对任何类型的数值求绝对值。

类似的有CABS();

IABS();

DABS()

AIMAG(z):

返回复数Z的虚部。

AINT(a[,kind]):

返回舍去小数后的参数值。

INT()

ANINT(a[,kind]):

返回最接近参数a的整数值。

NINT()

CEILING(a):

返回一个等于或大于a的最小整数。

CMPLX(x):

复数类型转换;

当复数赋值时实部或虚部为表达式,则要用该函数

FLOOR(a):

返回等于或小于a的最大整数。

MOD(A,B):

计算a/b的余数。

当参数为浮点数时,返回(a-int(a/b)*b)

SIGN(A,B):

B>

=0返回abs(a);

B<

0返回-abs(a)

数学函数:

三角函数;

LOG(X);

LOG10(X);

EXP(X);

SQRT(X);

字符函数:

ACHAR(I);

CHAR();

ADJUSTL(string);

ASJUSTR(string);

IACHAR();

ICHAR();

INDEX();

LEN_TRIM(string);

TRIM(string);

LEN(string);

LGT();

LLT();

LLE();

LGE()

REPEAT(S,I):

返回一个重复I次S的字符串。

数组约简函数:

ALL(mask[,dim]):

对数组进行逻辑判断,如果每个元素都满足条件则返回真值

ALL(a 

>

5)或ALL(a>

b)!

a、b是类型相同的数组,检查a中是否每一个元素都比数组b中任何一个元素大,返回一个逻辑值。

ANY():

对数组进行逻辑判断,只要有一个元素满足条件就返回真值

COUNT():

返回数组中合乎条件的元素数目。

PRODUCT():

返回数组中所有元素的相乘值。

SUM():

计算数组元素的总和。

数组查询函数:

ALLOCATED():

检查一个可变大小的数组是否已经声明大小。

LBOUND():

返回数组声明时的下限值

SHAPE():

返回数组的维数及大小。

如:

integera(2,3,4)

integerb(3)

b=shape(a)

执行结果:

b

(1)=2b

(2)=3b(3)=4

SIZE():

返回数组大小

UBOUND():

返回数组上限

UNPACK(vector,mask,field):

根据逻辑运算的结果,返回一个变形的多维数组。

结果会根据在内存中的顺序,如果逻辑为真,回填入vector的值,否则就回填入field的值。

Integer:

a(4)=(/1,2,3,4/)

b(2,2)

Logical:

c(2,2)=reshape((/.true.,.true.,.false.,.false./),(/2,2/))

B=unpack(a,c,0)

执行后B=(/1,2,0,0/)

数组变形函数:

RESHAPE(data,shape):

通过shape的设置,把一串数据“整形”后,再传给一个数组。

例如:

integer:

a(3,3)=(/1,2,3,4,5,6,7,8,9/)

b(9)

b=reshape(a,(/9/))

a=reshape(b,(/3,3/))

但是:

a(3,3)

a=(/1,2,3,4,5,6,7,8,9/)!

编译出错,形状不同,必须用函数

END

TRANSPOSE():

返回一个转置矩阵

C.算术表达式

书写表达式应注意几点:

(教材41面1、2、3、4)

注意表达式结果的类型和种别。

5.赋值语句

赋值语句的功能:

计算、类型转换、赋值

6.输入输出语句

A.表控格式的输入输出:

READ*,A,B

READ(*,*)A,B

⒈各数据间有分隔符:

逗号或空格。

 

⒉类型匹配:

整数:

不得带小数点;

实数:

可以为整数;

小数形式;

指数形式

复数:

(实部,虚部);

实部和虚部可以为整型也可为实型

字符:

‘一串字符’,赋值时长度转化;

一串字符,即‘’可省略。

逻辑:

以T或F作为第一个字母的字符串(点号、空格在前忽略)

如果输入一个整型数,则偶数为假,奇数为真

⒊个数:

1)不得少于变量的个数;

2)可分行输入;

3)多余的数据不起作用

4)每一个READ开始一个新的记录

⒋无效值的输入

⑴,,连续两个逗号,对变量值不影响。

⑵空格可以多个,/表示输入数据结束,后面的数据被取消,

没有输入数据的变量值为0;

Read*,A,B,C

输入:

2,1/3

结果:

A=2B=1C=0

⑶r*[c]:

r为重复数

4*0.5,2*3,2*’AB’,3*(1.0,-1.0)

⒌多个Read语句

每个Read必须从一个新的行输入数据

PRINT*,A,B

WRITE(*,*)A,B

⒈固定的输出宽度

⒉类型:

复型:

带()输出

逻辑型:

T,F输出一个字符

字符型:

‘’丢失,采用左对齐输出

3.一行显示不下,数据自动换行输出

4.多个PRINT语句:

每个开始输出一个新的记录

B.输入输出编辑符

一般形式:

READ(<

设备号>

<

格式说明>

)<

输入表>

READ<

WRITE(<

输出表>

PRINT<

格式说明:

*、格式语句标号、整型变量、格式字符表达式、数组或数组元素

作用:

精确地说明每一个数据应该怎样输入或输出,包括类型、小数点位置、有效位数、输出结果的形式

1、FORMAT语句标号(为提高程序的可读性,F90中一般不用)

WRITE(*,900)INT1,REAL1(3),CHAR1

900FORMAT(I5,3F5.4,A16)

2、整型变量名(使用ASSIGN语句)

ASSIGN900TOMYFMT

900FORMAT(I5,3F5.4,A16)

WRITE(*,MYFMT)IOLIST

3、字符表达式或变量

WRITE(*,’(I5,3F5.4,A16)’)IOLIST

或:

CHARACTER(80)MYLIST

MYLIST=‘(I5,3F5.4,A16)’

WRITE(*,MYLIST)IOLIST

4、数组或数组元素名

CHARACTER(6)array(3)

DATAarray/'

(I5'

'

3F5.2'

A16)'

/

WRITE(*,array)iolist

CHARACTER(80)array(5)

array

(2)='

(I5,3F5.2,A16)'

WRITE(*,array

(2))iolist

1整型编辑符rIw[.m]

1.数字在指定的区域内右端对齐,不足w则左边补空格。

2.负数的符号也包含在字段宽度内

3.如果应输出的列数超过了规定的字段宽度,则不输出有效数据,以w个*填充。

4、BN,BZ:

BlankinterpretationSpecifiesinterpretationofblanksinnumericfields(空格是否当0处理)仅用于输入格式语句,如100FORMAT(BN,2I3)

2实型编辑符

[r]Fw.d[r]Ew.d[r]Gw.d

r—重复系数w—字段宽度(总宽度)d—小数部分宽度

F编辑符功能:

用于实数编辑,小数形式的输出(定点数:

单精度实数,4个字节,7个有效数字)

F8.3,F6.2

1不带小数点

1234567890123456

12345.6789012.34

2带小数点

123.4567345.8910

123.4567345.89!

d不起作用,取W个宽度,小数点计入w中

3以表控格式

123.12,456.23

123.12456.23

如果:

123.4562,23.1436

123.45620!

第二个数读入时碰到逗号,表示该数输入结束

指数形式的输入

F8.3

1234E3!

1234.000

0.1234E3!

123.400

E编辑符功能:

格式:

数符+0+小数点+小数部分+E+符号+指数部分2位

3d4

指数部分宽度固定4列,w>

=d+3+4

优点:

不必事先估计数的大小,能容纳任意大小的数据。

G编辑符功能:

根据输出实数大小决定用F或E格式输出。

较大或较小,自动按E格式

条件:

abs(A)<

0.1.OR.abs(A)>

10*d使用E格式输入输出

10*d>

abs(A)>

=0.1使用F格式输入输出

采用F格式,d为全部数字的总位数,且优先满足整数位数

WRITE(*,‘(G9.4)’)123.0!

G9.4=F5.1,4X

WRITE(*,‘(G9.2)’)123.0!

G9.2=E9.2

3逻辑格式编辑符:

rLw

功能:

逻辑值的输入输出

规则:

输出一个字母,在字段最右端,前面补空格

输入时按宽度读取,以第一个字母作为逻辑值,如果第一个字母非T或F,则出错

WRITE(*,‘(L4)’).TRUE.!

输出三个空格和一个T

4字符格式编辑符:

[r]AwA

字符型数据的输入:

字符变量的长度L对格式起一定的作用

若w>

L,仅保留右边的L个字符

若w<

L,右边加L-w个空格

字符变量的输出:

输出形式要有w个字符

若w<

L输出左边w个字符

若w>

L右对齐,左边补w-L个空格

CHARACTER(LEN=5):

A=‘AB’!

‘AB’

A=‘ABCDEFG’!

‘ABCDE’

READ*,A‘AB’!

‘ABCDEFG’!

READ‘(A3)’‘AB’!

‘ABCDE’!

‘ABC’

READ‘(A7)’‘ABCDEFGH’!

‘CDEFG’

A=‘ABCDE’

PRINT‘(A3)’,A!

ABC

PRINT‘(A7)’,A!

ABCDE

5X编辑符功能:

在输出时产生空格;

输入时,表示跳过n个字符

1.不需变量对应2.是不可重复的编辑符

6撇号编辑符功能:

输入所需的字符串,描述字符串常量。

PRINT‘(‘I=’,I3)’,I!

错,应将其中一对引号改为双引号

7H编辑符nH<

字符串>

1.N必定等于字符串长度,否则编译出错

PRINT‘(2HI=,I3)’,I!

正确

PRINT‘(3HI=,I3)’,I!

出错

2.字符串中空格有意义

8斜杠编辑描述符作用:

结束本记录的输出并开始下一个记录的输出(换行输出)

9冒号编辑符作用:

结束前一个编辑符的功能。

1.用空格式语句来输出一个空行,如:

FORMAT()

此时,WRITE,PRINT语句不应有变量输出,否则出现死循环

2.遇到右括号或斜杠‘/‘编辑符,表示结束本记录的输出,但不意味着停止全部输出,只要输出列表中还有未输出变量,将重复使用格式说明或斜杠右边的格式说明组织输出。

PRINT‘(2HI=,/I3)’,I

PRINT‘(2HI=,I3)’,I,J

I=1

I=2

3.FORMAT语句和WRITE语句的位置可以相邻,也可在程序的任何一个地方

4.用表控格式输出时,在WRITE语句中的输出项可以包含字符串但在输出时用到FORMAT语句,则不能再包含字符串,否则必须加以说明。

PRINT‘(2HI=,I3)’,I

PRINT‘(I3)’,‘I=’,I!

出错应改为PRINT‘(A,I3)’,‘I=’,I

三、选择结构程序设计

1.关系表达式和逻辑表达式

1关系运算符:

相等==不等/=

●复型常量和变量:

只能进行.EQ.、.NE.

●.EQ.(==)或.NE.(/=)要小心使用;

实型量一般要改写:

0.1*10.EQ.1为.FALSE.应改为abs(0.1*10-1)<

=1E-6

●两个整型表达式进行逻辑运算结果为整型,而不是逻辑型

●逻辑运算符之间的空格不能省略。

特别是.NOT.与其他逻辑运算符相连时。

2逻辑表达式和计算:

逻辑运算符:

NOTANDOREQV(逻辑等)NEQV(逻辑不等)XOR(异或)

运算优先级:

从左到右依次降低

3运算顺序:

()函数算术关系逻辑

高低

4练习表达式的写法

1、数学式A<

C<

D!

不能出现连不等式

2、1<

x2+y2<

2

3、M能被N整除!

MOD(M,N)==0

4、整数A、B之一为0但不同时为0!

A*B==0.AND.A/=B

5、A、B同时为正,或同时为负!

A*B>

6、逻辑型变量A值为真(或为假)!

7、字符变量A为小写字母!

A>

=’a’.AND.A<

=’z’

8、字符变量A为字母!

A>

=’z’.OR.A>

=’A’.AND.A<

=’Z’

2.在任何一种程序设计语言中,都存在三种基本程序结构:

顺序结构、分支结构(条件判断)、循环结构(反复执行某段程序)

子程序

3.逻辑IF语句

语句写法:

IF(条件)一个可执行语句

多个逻辑IF并列,注意它们的顺序

一般在循环跳转中使用

4.IF—THEN—ELSE结构(块IF结构)

书写格式:

IF(条件)then:

块IF语句

语句体1(then块):

由若干语句组成

ELSE:

ELSE语句

语句体2(else块):

ENDIF:

ENDIF语句

●特别注意和IF—THEN—ELSEIF—ELSE结构的区别。

●等价于多个IF结构嵌套,但只有一个ENDIF语句

5.多分支结构

方法1:

转化为单分支,逻辑IF语句并列

IF(X>

=0.AND.X<

1)Y=1.0

IF(X>

=1.AND.X<

2)Y=2.0

方法2:

逐次二分,转化为块IF结构,块IF嵌套

注:

从一头顺序二分

缩进对齐写法或串名写法(结构名)

else含义:

条件不要重复

静态调试(阅读技巧)

IF(X>

=0)THEN

=1)THEN

IF(X<

2)THEN

Y=2.0

ENDIF

ELSE

Y=1.0

PRINT*,’数据输入错误!

方法3:

将之简写为ElseIF

=2)THEN

PRINT*,‘越界’

ELSEIF(X>

PRINT*,’越界’

●举例:

任意输入4个整数,把它们按从小到大输出。

PROGRAMMAIN

INTEGER:

A,B,C,D,E

READ*,A,B,C,D

IF(A>

B)THEN

E=A;

A=B;

B=E

ENDIF

IF(C<

A)THEN

A=C;

C=B;

ELSEIF(C<

E=B;

B=C;

C=E

IF(D<

A)THEN

PRINT*,D,A,B,C

ELSEIF(D<

B)THEN

PRINT*,A,D,B,C

C)THEN

PRINT*,A,B,D,C

ELSE

PRINT*,A,B,C,D

6.多重同级选择判断(CASE结构)

写法:

SELECTCASE(表达式)

CASE(表达式列表1)

block1(块1)

CASE(表达式列表2)

block(块2)

--------

CASE(表达式n)

blockn

[CASEdefault

默认块]

ENDSelect

1.表达式:

整型变量、逻辑变量、长度为1的字符型变量或相应的表达式

2.表达式列表:

(1)用,(逗号)分隔符单个值的列表。

例:

case(3,5,7)值不能重复

(2)用冒号分隔的值的范围

case(5:

10,20);

case(‘i’:

‘n’)

类型与Setectcase中的一致,值范围下界、上界可省略。

(3)Casedefault:

只有一个,它不是必须的

7.练习:

4-3、4-8、4-13

4-3

REAL:

X,Y

READ*,X

=15)THEN

=30)THEN

=45)THEN

=75)THEN

90)THEN

Y=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1