加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

FORTRAN77综述

(2012-05-17 10:25:24)
标签:

杂谈

分类: Other
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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有