Fortran语⾔基本语法
a、Fortran 之基本规定:
在Fortran的规定中,程序的开始需先宣告变量形式,接着才能⽤这些变量来写程序内容,再整个程序中的第⼀⾏必须空⽩,除⾮键⼊英⽂字母c或*⽤以表⽰那⼀列为说明项⽽⾮实际之计算式⼦。第⼆⾏⾄第五⾏为地址⾏,可⽤数字标⽰其地址,⽤以执⾏程序时控制之⽤。第六⾏⽤以填⼊⼀个⾮零的数字或字母表⽰连结上⼀列的式⼦。第7⾏⾄72⾏则为程序主体之所在,若不⼩⼼在72⾏之后键⼊程序Fortran将不于理会。再程序的最后⼀列⽤ end命令告知程序终了。
b、变量(Variable)
Fortran语法中的变量相当于函数上变量,但其种类则更多,举凡复数(complex)、整数(integer)、实数(real)、逻辑(logical)和字符串(character)等等。对于变量的规定是变量的第⼀个字母为英⽂字母,其长度最长为6个字,除刚刚说的第⼀个字之外,其余的可为数字或字母,以下为⼏个简单范例: Integer count,pg1
新生儿睡觉打嗝real time,po2p
c、运算符号与内定函数:
Fortran 基本的运算符号如下:
+加法;-减法;*乘法;/ 除法**平⽅;**(n) n次⽅除了上列之基本运算符号之外,数值计算上常⽤之函数如三⾓等等亦以写成内定含式,常⽤的以下⼏项:
log 对数函数;
exp 指数函数;
sin、cos、tan、cot、c和csc等三⾓函数;
abs 绝对值;
asin、acos、atan、acot、ac和acsc等反三⾓函数。
D、控制结构:
结构化Fortran有⼀些控制的结构,关系控制即是其中之⼀种,⽤以⽐较两变量之间关系,包含有:
.lt. 表⽰⼩于
.gt. 表⽰⼤于
.eq. 表⽰等于
.le. 表⽰⼩于或等于
.ge. 表⽰⼤于或等于
.ne. 表⽰不等于
另⼀种重要的控制为逻辑控制,包含有:
.not. .not. p => 若p为⾮真则为真
.and. p .and. q => p和q为真则为真
.or. p .or. q => p或q其⼀为真则为真
.eqv. p .eqv. q => p和q同为真或同为⾮真则为真
.neqv. p .neqv. q => p或q之中⼀为真⼀为⾮真则为真
e、输⼊与输出结构:
> Fortran 经常会有⼀些数值需要输⼊或计算的值需要输出,这时 Fortran 便提供了⼀些格式码好让使⽤者将欲输⼊或输出的数值针对其变量的特性作较佳的安排设计,兹举例如下,其中输出之资料格式完全相同:
a、write(*,10) i,j,k
10 format (1x,2I5,I3)
三令五申b、assign 10 to ifmt
10 format (1x,2I5,I3)
write (*,ifmt) i,j,k
c、write (*,'(1x,2I5,I3)') i,j,k
d、character*11 fmtch
fmtch='(1x,2I5,I3)'
write (*,fmtch) i,j,k
其中X表⽰空格之意,1x即是空⼀格, write为输出的指令,若改为 read 则为输⼊指令,I为整数的格式码, 2I5 表⽰输出的总位数为五,⽽这样的格式重复两次,其余尚有不同之各种格式码,常⽤的有:
1. F 格式码,⽤于实数变量,其⼀般型态为 rFw.d ,其中F表实数,r为重复次数,w为总位数,⽽d为⼩数字数。
2. E 格式码,为指数格式的输出,其⼀般型态为 rEw.d ,其中E表⽰输出型态为指数,其余的r、w和d的定义则和F格式码相同。
3. D 格式码,⽤于倍准度实数的输出⼊,基本型态为 rDw.d,使⽤规则与 E 格式码则完全相同。
4. G 格式码,其型态与 E 或 F 格式码相同,但其功⽤则不同,他是⽤在当我们⽆法预知实数的⼤⼩值时,使⽤ G 格式码后,计算机会
⾃动视数值的⼤⼩将 G 格式码转为 E 格式码或 F 格式码。
芒种诗句f、选择性结构:
当有两组或更多组程序中之⼀组要跑但却未能确定时,则必须有某种选择性的控制程序执⾏路线,这样的语法为选择性控制,在Fortran上为If 语法,其架构⼤致如下:
If (logical-expression)then
征信中心官网statement-1
.
.
statement-n
尼泊尔属于哪个洲
el
statement-1'
.
.
statement-n'
endif
上述的意思是If中的逻辑为真时则执⾏1⾄n这⼀组程序,不然则执⾏1'⾄n'这⼀组程序。若将⼀组程序简称为block,当上述的逻辑判断较为复杂时,常⽆法在⼀个条件中表达完成,故可有以下之另外两种形式:第⼀种为
If (logical-expression)then
block-1
If (logical-expression)then
block-2
endif
block-3
endif
第⼆种为
If (logical-expression-1)then
block-1
elIf (logical-expression-2)then
block-2
elif (logical-expression-3)then
block-3
endif
g:循环性(回圈)结构:
在数值上常会有收敛值的问题或有同样的程序需执⾏很多次的情形,这时都需要⽤到回圈的结构,其基本的语法与结构如下:⼀、
do n1 n2=n3,n4,n5
block
n1 continue
⼆、
do n2=n3,n4,n5
block
enddo
其中n1表⽰回圈执⾏该循环重新跑的地址,n2为控制的主要变量,n3为n2的起始值,n4为n2的极限值,也就是说当n2等于n4时回圈及停⽌,n5为每执⾏⼀次回圈n2所需做的增量,其中n5可不设定⽽由Fortran内定为1,或在block中执⾏某程序将n2做⼀定量的修正。另有⼀种融合选择性结构和回圈结构的语法如下:
while (logical expression) do
凉拌豆腐的做法statement 1
.
.
statement n朴的多音字组词
endwhile
苹果棋
或是
dowhile ( logical expression )
statement 1
.
.
statement n
enddo
h、函数(function)与⼦程序(subroutine)结构:
在数值计算上重复多次的计算亦可独⽴写成⼀个函数或⼦程序结构,⽽当主程序需要时即可随时叫⽤,
这样的⼀组程序称之为函数或⼦程序,函数或⼦程序在形式上亦需具备有类似主程序的架构,也就是说需有程序名称、变量宣告等等,其主要结构如下:
function fun-name(n1,n2,....)
宣告变量
statement 1
.
.
fun-name=......
.
return
end
subroutine subroutine-name(n1,n2,....)
宣告变量
statement 1
.
.
statement n
.
return
end
上述中n1、n2等等为变量,⼀般函数或⼦程序写在主程序的后⾯,在主
程序中叫⽤函数或⼦程序时⽤call的指令,形式如下:
call fun-name(n1,n2,...)
call subroutine-name(n1,n2,....)
其中n1,n2等变量在主程序中和函数程序中或⼦程序中的名称可以不同,但相对应的变量必须有相同的变量定义,⽽函数和⼦程序不同的地⽅在于函数本⾝代表⼀个函数值,在经叫⽤函数之后仅可得回⼀个函数值,但⼦程序中的变量是可以传回主程序的,也就是说经⼦程序可计
算多个数值之后传回主程序中。也就因为函数本⾝代表⼀个数值,所以在主程序中函数必须宣告他的定义。