fortran90 知识点整理.docx

上传人:b****8 文档编号:13161290 上传时间:2023-06-11 格式:DOCX 页数:29 大小:63.84KB
下载 相关 举报
fortran90 知识点整理.docx_第1页
第1页 / 共29页
fortran90 知识点整理.docx_第2页
第2页 / 共29页
fortran90 知识点整理.docx_第3页
第3页 / 共29页
fortran90 知识点整理.docx_第4页
第4页 / 共29页
fortran90 知识点整理.docx_第5页
第5页 / 共29页
fortran90 知识点整理.docx_第6页
第6页 / 共29页
fortran90 知识点整理.docx_第7页
第7页 / 共29页
fortran90 知识点整理.docx_第8页
第8页 / 共29页
fortran90 知识点整理.docx_第9页
第9页 / 共29页
fortran90 知识点整理.docx_第10页
第10页 / 共29页
fortran90 知识点整理.docx_第11页
第11页 / 共29页
fortran90 知识点整理.docx_第12页
第12页 / 共29页
fortran90 知识点整理.docx_第13页
第13页 / 共29页
fortran90 知识点整理.docx_第14页
第14页 / 共29页
fortran90 知识点整理.docx_第15页
第15页 / 共29页
fortran90 知识点整理.docx_第16页
第16页 / 共29页
fortran90 知识点整理.docx_第17页
第17页 / 共29页
fortran90 知识点整理.docx_第18页
第18页 / 共29页
fortran90 知识点整理.docx_第19页
第19页 / 共29页
fortran90 知识点整理.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

fortran90 知识点整理.docx

《fortran90 知识点整理.docx》由会员分享,可在线阅读,更多相关《fortran90 知识点整理.docx(29页珍藏版)》请在冰点文库上搜索。

fortran90 知识点整理.docx

fortran90知识点整理

Fortran90关于变量说明得新功能:

1、在变量说明得同时,可以给变量赋初值。

INTEGER:

:

I=5,J=126

REAL:

:

X=7、2,Z,W=774、2

2、在说明变量得同时也可说明其种别

REAL(KIND=4):

:

X,Y或REAL(4):

:

X,Y

3、在说明变量得同时,还可说明变量得属性

INTEGER,PARAMETER:

:

I=5,J=123

Ps:

PARAMETER属性

(1)功能:

用一个符号代表一个常量,称为符号常量(常数)

(2)写法:

Real,Parameter:

:

G=9、8&&说明类型时赋值

(3)位置:

位于可执行语句之前

REAL,DIMENSION(1:

10):

:

A

2、3、6派生数据类型

根据需要而由基本数据类型定义新得数据类型。

在一个派生类型中可包含多个基本类型。

如:

TYPESTUDENT(定义开始)

CHARACTER(LEN=20):

:

DEPARTMENT

CHARACTER(LEN=10):

:

CLASS

CHARACTER(LEN=15):

:

NAME

INTEGER:

:

NUMBER(成员定义)

ENDTYPESTUDENT(定义结束)

派生类型变量得定义:

TYPE(STUDENT):

:

PERSON

变量得赋值:

PERSON=(”PUTER”,”92_2”,”LILIN”,21)

成员得表示:

PERSON%CLASS=“92_2”

PERSON%NAME=“LILIN”

主程序其她限制

主程序得可执行部分不能包含有RETURN语句或者ENTRY语句。

程序名对可执行程序就是全局得,而且不得于该可执行程序中得任何其它程序单元名、外部过程名或公用块名相同,也不得于主程序内得任何局部名相同。

在主程序得作用范围内得说明不得包含OPTIONAL语句、INTENT语句、PUBLIC语句或它们得等价属性,在主程序内SAVE语句不起作用。

主程序内得任何内部过程得定义必须跟在CONTAINS语句之后。

2、3、2子程序

子程序就是可以完成某一独立算法或功能得程序单元,但它功能得具体体现要通过主程序(或子程序)得调用来实现。

按子程序与主程序得位置关系分为内部过程与外部过程。

2、4、3模块

模块也就是一种在程序单元之外独立编写得程序单元。

它有独特得形式,即模块程序单元内没有可执行语句,除了说明语句外,最多包含内部过程。

模块得主要作用就是供其它程序单元引用。

程序单元引用模块,实际就是将模块内得全部语句复制到本程序单元。

因此模块起共享及复制得作用。

模块得引用采用语句:

USE模块1,模块2,…

基本语句概述

程序得最基本得语句主要有四种:

类型说明语句、赋值语句、输入语句、输出语句。

运用这些基本得语句,就可以编写一些简单得程序。

内在函数

FORTRAN90配置得函数称为内在函数。

内在函数分为三种:

基本函数:

SIGN符号

函数值:

|A1|(若A2>0)

|A1|(若A2<0)SIGN(A1,A2)

Eg:

SIGN(3、0,2、0)=3、0

SIGN(3、0,2、0)=3、0

某些函数参数只能为实型

如:

log(2、0)(loG

(2)错)

转换函数

函数名

含义

FORTRAN举例

INT(X)

实型转换整型、

复型得实部转换整型

INT(2、3)=2

INT((1、2,3、5))=1

REAL(X)

整型转换实型、

复型得实部转换实型

REAL(8)=8、0

REAL((1、2,3、5))=1、2

PLEX(X,Y)

将X,Y合成为复型

PLEX(2、3,1、5)= (2、3,1、5)

INT(X,KIND):

将X值转换为整型,以KIND得值作为种别参数

REAL(X,KIND):

将X值转换为实型,以KIND得值作为种别参数

PLEX(X,Y,KIND):

将X,Y转换为复型,以KIND得值作为种别参数

查询函数

KIND

SELECTED_INT_KIND

SELECTED_REAL_KIND

PRECISION

RANGE

……

不轻易使用整型量除整型量1、0/22、0**

(1)

运算对象类型相同时,运算结果得类型为同一类型

注意:

5/2=21/2=0!

运算对象类型不同时,系统一般先转换成相同类型后再运算

转换规则就是:

较低级得类型转换为较高级得类型

数据类型隐含得高低次序为(由低到高):

整型→实型→双精度→复型

例:

8/5+2、0*5/2=6、0(逐步转化)

赋值语句

1、类型要求

逻辑型、字符型得赋值语句要求“=”两边类型相同

数值型赋值,不区别整型、实型与复型

2、种别方面

字符型要求种别相同

其余类型得e、V种别允许不同

输入输出语句

1、I/O得对象——列在

I/O就是相对于内存而言得,

键盘属于输入设备,

显示器属于输出设备,

优盘、硬盘既就是输入设备,又就是输出设备。

2、I/O得方向及语句

READ(U,f)U:

设备(部件)f:

格式

WRITE

其中:

输入READ语句

输出PRINT语句,只输出到显示器

WRITE语句,适合任何输出设备

U(部件)*:

系统约定设备

某个值:

指定通道号(设备逻辑号、文件号)

表控格式I/O(*):

系统约定得格式。

f(格式)基本格式(自定格式)I/O:

按用户要求得格式组织I/0。

带控制信息表得I/O:

I:

碰到回车(ENTER)为一个记录。

O:

一行为一个记录。

程序执行过程中按表控格式输入数据

各数据间有分隔符:

或空格

类型匹配:

整型:

带小数点只取整数部分;

复数:

(实部,虚部);

字符:

‘一串字符’:

赋值时长度转化或一串字符即‘’可省略。

逻辑:

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

3、输入得数据必须就是常数,不能就是变量与表达式

如输入2+1,则出错。

4、输入数据个数:

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

2)可分行输入;

3)多余得数据不起作用

5、空格可以多个,/表示输入数据结束,后面得数据被取消,没有输入数据得变量值为原值;

Read*,A,B,C

输入:

2,1/3

结果:

A=2B=1C=0

6、如果几个连续变量需要赋同一个值,可以使用重复因子r,即r*[c]:

r为重复数

4*0、5,2*3,2*’AB’,3*(1、0,1、0)

输入输出得三种不同得格式:

1.表控格式得输入输出

2.有格式得输入输出

3.带控制信息表得输入输出

整型编辑符:

Iw[、m]

1.I编辑符控制输出:

功能:

用于整型数据得输入输出

格式:

IwIw、mrIw

w—输入输出数据字段总宽度

m—至少m位数字

r—为重复系数

例1.设 J=10,K=12,L=12

WRITE(*,”(I3,I5,I7)”)J,K,L

□10□□12□□□□123

注意:

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

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

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

4、BN,BZ:

Blankinterpretation

Specifiesinterpretationofblanksinnumericfields(空格就是否当0处理)仅用于输入格式语句,如

read“(BN,2I3)”,I,J

例2.如果将格式串改为:

“(I3,I5、4,I7、5)”

则输出:

□100012□□00123

例3.如果L=123456

□100012□123456

Iw、m:

m<位数,则按照实际数输出

实型编辑符

1.编辑符格式

[r]Fw、d将数据按小数形式输出

[r]Ew、d将数据按指数形式输出

[r]Gw、d根据数据大小决定采用E或F格式

r—重复系数

w—字段宽度(总宽度)

d—小数部分宽度

F编辑符

功能:

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

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

当实型数值小于0、0(负数)时,则w>=n+d+2

当实型数值大于或等于0、0时,则w>=n+d+1

用此来确定w得宽度

注意:

1. w包括数符与小数点两位

2. 若数据小于w位,则左边补空格

3. 输出值时舍入,而不就是截断

4、如果就是科学计数法则转换小数形式

字符型编辑A

A用来编辑字符型变量,它不关心该字符串得长短如何。

例:

CHARATER*5A,B,C

READ(*,’(A,A,A)’)A,B,C

WRITE(*,’(A,2X,A,2X,A)’)A,B,C

END

输入:

ABC□DBASICFORMAT

结果:

ABC□D□□BASIC□□FORMA

2X表示□□

X编辑描述符

功能1:

在输出时产生空格,它得一般形式为:

nX

关系表达式与逻辑表达式

关系运算符:

>、>=、<、<=、==(等于)、/=(不等于)(常用)

、GT、、、GE、、、LT、、、LE、、、EQ、、、NE、

注意

1、每个关系表达式中得关系运算符只准出现1次,运算符两侧都就是表达式;

错例:

2b)

2、运算对象:

关系运算符两边得运算对象类型应相容:

错例:

A==、TRUE、2<‘A’

复型:

只能进行==、/=。

不能比较大小

字符型:

可以进行各种关系运算

逻辑运算符(5个)

、NOT、a:

求反运算,

a、AND、b:

a与b同时为真,表达式值才为真

a、OR、b:

a与b有一个为真,表达式值就为真

a、EQV、b:

a与b值相等,表达式值为真

a、NEQV、b:

a与b值不相等,表达式值为真

类型运算符优先级

括号()1

算术运算**2

*,/3

+,4

关系运算>,>=,<,<=,==,/=5

逻辑运算、NOT、6

、AND、7

、OR、8

、EQV、,、NEQV、9

IF语句

使用范围:

特殊单分支

语句写法:

IF(条件)一条语句

例:

IF(X>0)PRINT*,X

执行过程:

1、计算条件表达式得值

2、真右边语句IF得下一个语句

3、假IF得下一个语句

注意:

1、右边通常为一条且只一条可执行语句。

错例:

IF(A

2、不能为以下语句:

END、另一个逻辑IF、块IF、ELSIF、ENDIF、DO

错例:

IF(X<2)END

3、常应用于简单得条件赋值或条件转移(在循环结构中)

4、不论条件真假都执行IF得下一个语句

IF结构

使用范围:

二分支结构

书写格式:

IF(条件)THEN!

块IF语句

语句体1(then块)!

由若干语句组成

ELSE!

ELSE语句

语句体2(else块)!

由若干语句组成

ENDIF!

ENDIF语句

IF结构执行过程:

计算条件得值

真THEN块ENDIF得下一个语句

假ELSE块ENDIF得下一个语句

注意:

1、IF—then标记语句得开始,ENDIF与之匹配,标记语句块结束

2、条件表达式写法

IF结构得缺省形式:

缺省ELSE块:

IF(lexp)THEN

语句体1

ENDIF

缺省THEN块:

IF(lexp)THEN

ELSE

语句体2

ENDIF

多分支结构

方法1:

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

方法2:

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

嵌套过多容易出错,也不易维护,因此应尽量减少嵌套得层次;

方法就是把条件分细,列成多条ELSEIF语句,ELSEIF结构为:

Elseif结构:

IF(e1)THEN

block1

ELSEIF(e2)then

block2

ELSEIF(e3)then

block3

ELSE

blockn

ENDIF

IF结构得取名

IF结构可:

无名或有名

IF结构得取名与变量得取名方法相同

IF结构名:

IF(e1)THEN

块1

ELSEIF(e2)THEN[IF结构名]

块2

ELSEIF(en)THEN[IF结构名]

块n

ELSE[IF结构名]

块n+1

ENDIFIF结构名

同一IF结构中得结构名一定要一致!

CASE结构

使用范围:

多分支结构

SELECTCASE(情况表达式)

CASE(情况选择器1)

block1(块1)

CASE(情况选择器2)

block(块2)

CASE(情况选择器n)

blockn

[CASEDEFAULT

默认块]

ENDSELECT

执行过程:

1、计算情况表达式得值

2、顺序匹配各情况选择器,执行相应得block1,再到ENDSelect下一个语句

3、如果均不匹配,则执行默认块

4、执行ENDSelect得下一个语句

情况表达式:

整型变量、逻辑变量、字符型变量或相应得表达式

不能就是实型或复型表达式

表达式列表(情况选择器):

只能就是常量,不能为变量,可有多条语句;

类型与情况表达式类型应一致,尤其字符型时种别参数必须一致,但长度可以不同;

(逗号)分隔符表示分隔单个值得列表。

例:

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

:

(冒号)分隔符表示值得范围,连续得值

例:

case(5:

10);case(‘i’:

‘n’)

下界、上界可省略

Casedefault:

最多出现一次

例48输入一个数,判断能否被3整除,打印相关信息注意输出得格式为(*,’(I6,2X,A)’)

循环结构程序设计

循环得分类:

1、已知循环次数2、已知循环条件

循环得表示及适用范围:

循环均由Do结构表示,其Do结构共有三种形式:

1.不带循环变量得DO结构

2.带循环变量得DO结构

3.DoWHILE循环结构

不带循环变量得DO结构

一般形式

[结构名:

]DO!

循环开始语句

循环体!

循环体

ENDDO[结构名]!

循环结束语句

说明:

1、结构名可以省略,多层嵌套时,为使结构清晰才用;

2、循环体可以为0~n条语句或结构,包含以下语句:

重复语句,循环变量得变化,循环控制语句等;

3、DO循环入口语句,只能从该语句进入循环;

4、ENDDO循环终止语句,可以不经过该语句退出循环

使用范围:

循环次数未知,仅给定了循环终止条件

无循环变量得DO结构执行过程:

进入DO结构后,从DO语句下面第一句执行起顺次执行到ENDDO前得最后一句,

再返上来从DO语句下面第一句执行起,重复执行整个DO块。

对于不带控制变量得DO结构,DO块中必须有EXIT语句,使它停止循环,退出循环,转向执行ENDDO下面得语句。

EXIT与CYCLE语句

EXIT语句

循环出口语句,一般形式为:

EXIT

作用:

停止循环,将控制转移到当前循环(或指定do结构)之外。

一般用法

IF(逻辑表达式)EXIT[DO结构名]

CYCLE语句

短路语句,一般形式为:

CYCLE[DO结构名]

作用:

在循环执行到该语句时,跳过循环体在它后面得那些语句。

再从循环体得第一条语句开始执行。

一般用法:

IF(逻辑表达式)CYCLE[DO结构名]

带循环变量得DO结构

使用范围:

计数型循环——已知循环次数

一般形式:

[结构名:

]DO循环控制变量V=初值e1,终值e2[,步长值e3]

循环体!

重复执行得语句

ENDDO[DO结构名]

e1、e2、e3可以就是正值,也可以就是负值,最好就是整型。

例:

DOI=1,100,2

S=S+I

ENDDO

有关注意事项:

1、e1,e2,e3可为常量、已有值得变量或表达式e3=1时可省略

2、v与e1,e2,e3类型不一致,按赋值语句转化。

doI=1、5,3、6,1、2doI=1,3,1

3、语句执行次数:

do语句:

1次(负责赋初值与循环次数得计算)

循环体语句次数:

max(int((e2e1+e3)/e3),0)

4、e3不允许为零(可正、可负),否则程序出错

doI=1、5,6、5,0、5I得取值为:

5、循环变量可不在循环体内出现,仅控制循环次数。

doI=1,10

print*,’a’

Enddo

6、DO循环变量在循环体内不能赋以新值,但可以引用。

即循环变量在循环体中不能出现在赋值号得左边。

例:

DOI=3,6

I=5!

错误

J=I+I;print*,I

ENDDO

7、循环变量在循环体内不能被重新赋值,但在循环体外可以被重新赋值。

两个并列得DO循环可以使用相同得循环变量

DOI=1,10,2

ENDDO

I=20

DOI=1,5

ENDDO

9、在带循环变量DO结构中仍可使用EXIT与CYCLE语句。

10、在DO结构中包含得IF结构与CASE结构等必须就是完整得结构,不允许出现结构得交叉。

11、循环可以不经ENDDO终止,但就是不能从循环体外转入循环体内(GOTO)。

12、给定一个循环,首先要判断循环就是否一次也不做。

如果循环变量大于终止,循环一次也不做,直接输出结果。

13、循环正常退出时,v得值超过循环变量得终值;循环非正常退出时,v保持当前值。

DOWHILE结构

DOWHILE结构得一般形式:

[结构名:

]DOWHILE(逻辑表达式)

循环体

ENDDO[结构名]

相当于:

DO

IF(、NOT、逻辑表达式)EXIT

循环体

ENDDO

DO结构嵌套

DO结构嵌套:

一个DO结构循环体内可以包含另一个完整得DO循环结构,这就就是DO循环结构得嵌套

注意:

3、执行到EXIT语句,没有指明结构名时,转到当前循环体外;若指定了结构名,则转出该结构名代表得循环体外;

如:

II:

DOI=3,50

JJ:

DOJ=2,I1

IF(MOD(I,J)==0)EXIT

ENDDOJJ

IF(J>=I)PTINR*,I

ENDDOII

隐含DO循环

隐含DO循环实际上就是带控制变量得DO结构。

但简化成只有DO结构得第一句,且把DO关键字隐去。

隐含DO循环得形式为:

(list,v=u1,u2,u3)

说明:

1、左括号相当于DO,右括号相当于ENDDO;

2、List可以就是一个或多个常量、变量、数组元素等,甚至可以就是另外得隐含DO循环(隐含DO循环嵌套)

不能独立存在,主要用于输入输出语句,常用于数组得输入输出。

如:

READ*,(A(I),I=1,5)

READ*,A

(1),A

(2),A(3),A(4),A(5)

隐DO、显DO执行过程得区别

1、输入、输出格式得区别:

PRINT*,(I,I=1,3)PRINT*,1,2,3输出一行

DOI=1,3PRINT*,1

PRINT*,IPRINT*,2

ENDDOPRINT*,3

输出三行

几种常见得隐含DO循环得形式

1、按指定步长读写。

例如

PRINT*,(J,J=1,7,2)

2、隐含DO循环与普通变量混合使用。

例如

PRINT*,A,B,(X(I),I=1,3),C

3、用于输出一些特殊符号。

例如

PRINT*,(’’,I=1,80)

4、隐含DO循环可以并列出现。

例如

print*,(I,I=1,2),(J,J=1,2)

程序单元与过程

子程序单元不能独立存在,只能被主程序单元或被其它子程序单元调用,甚至可以递归调用(调用本身)

子程序(又称过程)得分类

1、函数子程序分为:

内部函数子程序,外部函数子程序

2、子例行子程序分为:

内部子例行子程序,外部子例行子程序

外部函数子程序

VisualFortran90得函数:

1、内在函数(系统函数、标准函数)

如:

sin、cos、sqrt、abs、kind……

2、Function语句编写得函数(自定义)

分为内部函数、外部函数

函数子程序得编写方法

[RECURSIVE]FUNCTION函数名(虚元表)RESULT(结果名)

说明部分

程序体:

具体计算

END[FUNCTION[函数名]]

如:

FUNCTIONFACT(N)RESULT(FACT_RESULT)

IMPLICITNONE

INTEGER:

:

N,I,FACT_RESULT

FACT_RESULT=1

DOI=1,N

FACT_RESULT=FACT_RESULT*I

ENDDO

ENDFUNCTIONFACT

PROGRAMMAIN

INTEGER:

:

FACT,SUM=0,I

DOI=1,5

SUM=SUM+FACT(I)

ENDDO

PRINT*,SUM

END

说明:

子程序END语句写法:

END[FUNCTION[函数名]]

子程序END语句功能:

1、函数单位得结束标志

2、将控制返回到主调程序。

子程序开始语句得写法

[RECURSIVE]FUNCTION函数名(虚元表)RESULT(结果名)

1、作为函数子程序得第一行(注释行除外)。

2、如果函数就是递归得,则应以RECURSIVE开头。

3、函数名与普通变量名得取法相同,且为全局名,即作用域为整个程序,不得与已有得全局名同名。

4、主调程序与被调程序两个单位之间得数据传递:

①RESULT(结果名):

子程序得一个输出结果

一般写法:

函数名_RESULT,用于保存一个计算结果,称为函数值。

且结果名有类型,必须在子程序说明部分说明类型。

②虚元表:

子程序得所有输入,及除函数值之外得其她计算结果得输出。

虚元之间用逗号分隔,都要在说明语句中说明类型。

如果没有虚元,函数名后就是一对空括号。

5、虚元得含义:

编写子程序时没有具体值(调用时或调用结束后才获得数值),因此只就是一个符号,表示输入、输出,名字可随便用户取。

6、虚元可以就是变量名、数组名、过程名、指针等。

7、虚元得可选属性INTENT:

INTENT(IN):

表示函数开始时,虚元从实元中获得值,作为子程序得输入(不得再改变其值)

INTENT(OUT):

表示函数结束时,把虚元得值传送给实元,作为子程序得输出(对应得实元不能就是表达式)

INTENT(INO

展开阅读全文
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2