Fortran77运算符:
+ - * / ** (其中**表示乘方)
在表达式中按优先级次序由低到高为: +或- → *或/ → ** → 函数 → ()
|
Fortran77变量类型:
1、隐含约定:I-N规则
凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。
2、用类型说明语句确定变量类型:可以改变I-N规则
integer |
整型 |
real |
实型 |
double precision |
双精度实型 |
complex |
复型,赋值形式为(实部,虚部),如D=(8.76E+0.5,-67.8E-3),C=(3.0,6.3),如果含表达式则用cmplx,如C=cmplx(3.0*A,6.0+B) |
logical |
逻辑型,逻辑常量有“T”和“F”,“T”表示“.true.”,“F”表示“.false.” |
character*n |
字符型,n为字符串长度,可以在变量名称后重新指定长度,如character*8 str1,str2*10
,赋值形式为str2='I''m a boy.' |
3、用implicit语句将某一字母开头的全部变量指定为所需类型:如 implicit real
(i,j)
三种定义的优先级别由低到高顺序为:I-N规则→implicit语句→类型说明语句,因此,在程序中implicit语句应放在类型说明语句之前。
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)
10 format(1x,5(a2,i2,1x,a2,i4))
使用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/
|
Fortran77程序书写规则:
1、程序中的变量名,不分大小写;
2、变量名称是以字母开头再加上1到5位字母或数字构成,即变更名字串中只有前6位有效;
3、一行只能写一个语句;
4、程序的第一个语句固定为 program 程序名称字符串
5、某行的第1个字符至第5个字符位为标号区,只能书写语句标号或空着或注释内容;
6、某行的第1个字符为C或*号时,则表示该行为注释行,其后面的内容为注释内容;
7、某行的第6个字符位为非空格和非0字符时,则该行为上一行的续行,一个语句最多可有19个续行;
8、某行的第7至72字符位为语句区,语句区内可以任加空格以求美观;
9、某行的第73至80字符位为注释区,80字符位以后不能有内容。 |
Fortran77关系运算符: |
Fortran77逻辑运算符: |
.gt. 大于
.ge. 天于或等于
.lt. 小于
.le. 小于或等于
.eq. 等于
.ne. 不等于 |
.and. 逻辑与
.or. 逻辑或
.not. 逻辑非
.eqv. 逻辑等
.neqv. 逻辑不等 |
运算符优先级由高到低顺序为:()→**→*或/→+或-→.gt.或.ge.或.lt.或.le.或.eq.或.ne.→.not.→.and.→.or.→.eqv.或.neqv |
|
Fortran77语句:
语句 |
说明 |
备注 |
write(*,*) x1,x2 |
输出语句 |
第一个*号是指输入输出文件设备号或其它设备,如果不指定则是指显示器或打印机,第二个*号是指表控格式语句的行号,如不指定则用默认格式 |
print *,x1,x2 |
输出语句 |
*号是指表控格式语句的行号,如不指定则用默认格式 |
read *,x1,x2 |
输入语句 |
*号是指表控格式语句的行号,如不指定则用默认格式 |
format(格式符) |
控制输入输出格式语句。
注:
1.在打印输出时,每一行第1个字符不显示,用来控制纵向走纸或显示行。
第1个字符
|
作用
|
空格
|
正常回车换行
|
0
|
回车并跳过1行
|
1
|
换页
|
+
|
只回车不换行
|
其它
|
通常是回车换行
|
2.输入小数时,自带小数点优先。
3.输出字段宽度不够时用*号填充。
|
1 |
Iw或Iw.m |
整数型 |
w为字段宽度,m为最少数字位数 |
2 |
Fw.d |
实数型 |
d为小数位数 |
3 |
Ew.d或Ew.dEe |
指数实数型 |
e为指数位数,通常为3或4 |
4 |
Gw.m |
自动实数型 |
|
5 |
Dw.d |
双精度型 |
|
6 |
Lw |
逻辑型 |
|
7 |
A或Aw |
字符型 |
不指定w时自动 |
8 |
'字符串' |
插入字符串 |
两个'表示一个字符' |
9 |
nH字符串 |
插入长度为n的字符串 |
|
10 |
nX |
插入n个空格 |
|
11 |
rIw,r(nX,Iw.m) |
r个Iw,r个(nX,Iw.m) |
r为重复系数 |
12 |
/ |
换行 |
|
13 |
,$ |
禁止换行 |
|
|
end |
结束程序或子程序 |
|
stop [n] |
结束程序并输出信息[n] |
[n]为数字或字符串信息 |
pause [n] |
暂停程序执行并输出信息[n],输入回车后继续执行 |
[n]为数字或字符串信息 |
parameter (pi=3.14) |
参数语句,用来定义常量,在程序中应放在类型说明语句之后 |
|
equivalence (变量表) |
等价语句,()内变量共用一个存储单元。 |
equivalence(x1,x2,…xn),(x1,x2,…xn),… |
common x1,…… |
公用语句,其后变量相等,用来在程序单位间传递数据,同时可以用来说明数组。程序中可有一个无名公用区和多个有名公用区。 |
无名公用区:在主程序各子程序中相同,均在可执行语句之前,如
common a(5),i
有名公用区:名称放在两个“/”之间,如
common //x1,x2,x3/c1/x4,x5,x6 |
open (说明项1) |
打开旧文件或创建新文件 |
说明项1中内容:unit=N, file=NAM, status=STR1,
access=STR2, form=STR3, recl=C, blank=STR4, err=BH, iostat=M
其中:
1.N=1~99;
2.NAM为文件名,可以是字符常量或变量;
3.STR1='NEW'时新建文件;'OLD'时打开文件;'SCRATCH'时表示临时文件,关闭时自动删除,且不能与file=NAM项共存;'UNKNOWN'时由计算机系统规定文件状态;
4.STR2为文件存取方式,'SEQUENTIAL'表示顺序存取,'DIRECT'表示直接存取,省略此项时表示按顺序存取;
5.STR3为记录格式说明,'FORMATTED'表示记录按有格式形式存放,
'UNFORMATTED'表示记录按无格式形式存放。省略此项时,对于顺序文件是有格式的,对于直接存取文件是无格式的;
6.C表示记录长度,以字节为单位,直接存取文件必指定,顺序文件必省略;
7.STR4表示数字值格式输入字段中空格含意,'NULL'时表示忽略不计,'ZERO'时表示按0计。省略此项时按0计;
8.BH表示出错时处理语句行标号,可以省略此项;
9.M为整数,出错时返回该整数,可以省略此项。 |
close (说明项2) |
关闭已打开文件 |
说明项2中内容:unit=N,status=STR5,err=BH,iostat=M
其中STR5为文件关闭状态,'KEEP'时保留,'DELETE'删除,省略此项时为保留;
err=BH,iostat=M可以省略。 |
rewind (说明项3) |
将文件读写指针置于文件开头 |
说明项3中内容:unit=N,err=BH,iostat=M
err=BH,iostat=M可以省略 |
backspace (说明项3) |
将文件读写指针回退一行 |
|
|
|
|
|
Fortran77选择判断语句:
1.逻辑if语句:
if (逻辑表达式) 程序语句
2.无else块:
if (逻辑表达式) then
程序块
end if
3.标准选择:
if (逻辑表达式) then
程序块1
else
程序块2
end if
|
4.多重选择块:
if (逻辑表达式1) then
程序块1
else if (逻辑表达式2) then
程序块2
else if (逻辑表达式2) then
程序块2
......
else if (逻辑表达式n) then
程序块n
else
程序块n+1
end if |
|
Fortran77循环语句:
1.“go to”语句,如:
标号 程序行
程序块
go to 标号 |
3.“do 标号,while (逻辑表达式)”语句,如
do 标号,while(pi.eq.3.14159)
程序块
标号 continue |
2.“do 标号,记数变量=起始值,终止值,步距”语句,如
do 标号,n=1,100,1
程序块
标号 continue |
4.“do 标号,until (逻辑表达式)”语句,如
do 标号,until(pi.gt.3.14159)
程序块
标号 continue |
|
Fortran77内部函数:
int(x) |
将数字串或数值x转换为整型数 |
real(x) |
将数字串或数值x转换为实型数 |
dbel(x) |
将数字串或数值x转换为双精度型数 |
cmplx(x) |
将数字串或数值x转换为复型数 |
char(x) |
将数值x转换为字符(0≤x≤255) |
ichar(x) |
将字符x转换为整数 |
aint(x) |
截去x的小数部分 |
anint(x) |
将x舍入到最接近的整数 |
nint(x) |
将x舍入到最接近的整型数 |
abs(x) |
返回x的绝对值 |
mod(x1,x2) |
返回x1/x2的余数 |
sign(x1,x2) |
取x2的符号,取x1的绝对值 |
dim(x1,x2) |
当x1>x2时,等于x1-x2,当x1≤x2时,等于0 |
dprod(x1,x2) |
双精度乘(x1,x2均为实数) |
aimag(x) |
返回字符串x的虚部 |
conjg(x) |
返回字符串x的共轭 |
max(x1,x2,x3,...,xn) |
返回x1,x2,x3,...,xn中最大值 |
min(x1,x2,x3,...,xn) |
返回x1,x2,x3,...,xn中最小值 |
sqrt(x) |
返回x的平方根(x≥0) |
exp(x) |
返回e的x次方 |
log(x) |
返回以e为底的x的对数即自然对数(x>0) |
log10(x) |
返回以10为底的x的对数即常用对数(x>0) |
sin(x) |
返回弧度值x的正弦值 |
cos(x) |
返回弧度值x的余弦值 |
tan(x) |
返回弧度值x的正切值 |
asin(x) |
返回弧度值x的反正弦值 |
acos(x) |
返回弧度值x的反余弦值 |
atan(x) |
返回弧度值x的反正切值 |
sinh(x) |
返回x的双曲正弦值 |
cosh(x) |
返回x的双曲余弦值 |
tanh(x) |
返回x的双曲正切值 |
len(x) |
返回字符串x的长度 |
index(x1,x2) |
返回字符串x2在字符串x1中的位置,不包含时返回0 |
lge(x1,x2) |
如果字符串x1≥x2则等于.true.,否则等于.false. |
lgt(x1,x2) |
如果字符串x1>x2则等于.true.,否则等于.false. |
lle(x1,x2) |
如果字符串x1≤x2则等于.true.,否则等于.false. |
llt(x1,x2) |
如果字符串x1<x2则等于.true.,否则等于.false. |
|
|
|
Fortran77语句函数规则:
1.当函数十分简单,用一条语句足以定义时(允许使用继续行)才用;
2.应该放在所有可执行语句之前和有关类型说明语句之后,是非执行语句;
3.只在其所在程序单位中有意义;
4.语句函数中的虚参就是变量名,不能是常量、表达式或数组元素等;
5.语句函数定义语句中的表达式可以包含已经定义过的语句函数、外部函数或内部函数。
6.语句函数通过表达式得一个函数值,此数值类型必须与函数名的类型一致。语句函数的使用同内部函数相同。
语句函数例子:
ymj(r)=3.14159265*r*r
zmj=ymj(5) |
Fortran77自定义函数:
定义格式:
类型说明 function 函数名(虚拟参数1,虚拟参数2,……,虚拟参数n)
程序块(可以含有return)
函数名=函数值
end
调用格式与内部函数相同。 |
Fortran77子程序:
定义格式:
subroutine 子程序名(虚拟参数1,虚拟参数2,……,虚拟参数n)
程序块(可以含有return)
end
调用格式:
call 子程序名(实在参数1,实在参数2,……,实在参数n)
数据块子程序:只是用来给有名公用区中的变量赋初值,格式如下:
block data 子程序名
data语句块
end
|