主程序开始:program 程序名
主程序结束:end
子程序开始:subroutine 程序名()
子程序结束:end
注:子程序可置于主程序之前或之后,一般置后
例:subroutine xuanzhuyuanfa(a,b,n)
end
注:a,b,n的值由主程序中导入而来
外部函数开始:function 函数名()
外部函数结束:end function
注:外部函数可置于主程序之前或之后,一般置后
例: function y(x)
real*8y,x
y=x**2
end functiony
注:x的值由主程序中导入而来
输入输出格式: format
例:format(5f5.2)前面的5表示一行输出5个数字,f表示输出结果类型为实型,5.2表示输出的数字长度(包括小数点)为5位,小数点后2位
format('a=',x) 如果输入的x的值为3.0,则输出结果为:a=3.0
format(1x,i2,2x) 表示首先输出一个空格,再输出一个长度为2的整型数字,最后再输出两个空格
implicit none 取消定义变量时的隐式声明规则。该规则为:在程序中,凡是变量名以字母
I,J,K,L,M,N,i,j,k,l,m,n开头的变量被默认为整型变量,以其他字母开头的变量被默认为
实型变量。
parameter(变量=表达式) 例:parameter(pi=3.1415)表示在程序中的所有pi的值都为3.1415
输入语句:read*,变量名从键盘输入数据给该变量
read k,变量名以k所限定的格式从键盘输入数据给该变量,k为任意数字 例:
read 10, a
10 format(f10.6) 表示以10所限定的格式输入数据到a中
read(*,*),变量名
例 open (1,file='wenjian.txt')
read(1,10),a
10 format(f10.6)表示将wenjian.txt中的内容以10所限定的格式输入给a
输出语句:print*,变量名输出该变量中的内容
print k,变量名以k所限定的格式输出该变量中的内容,k为任意数字 例:
print 20, a
20 format(f5.3) 表示将a以20所限定的格式输出
write(*,*),变量名 格式输出,
例1 open (1,file='out.txt')
write(1,10),a
10 format(f10.6) 表示将a以10所限定的格式输出到名为out的文本文件中
例2write(*,*),a表示输出a到界面上,没有格式限制
常用变量的定义:
整型变量:integer(或integer*4,或integer(4)) 常用
integer*1(或integer(1)),integer*2(或integer(2)),integer*8(或integer(8))
例: integeri,j,k定义整型变量i,j,k
实型变量:real(或real*4,或real(4)) 单精度,有效位数7位
real*8(或real(8)) 双精度,有效位数15位常用
例: real*8 a,b,x(n),c(n,n)定义双精度的实型变量a,b及一维数组x(n),二维数组c(n,n)
复型变量:complex(或complex*4,或complex(4)) 单精度
comple*8(或complex(8))双精度 常用
字符型变量:character*k(或character(k),或character(len=k))k表示字符串的长度
character 定义长度为一的字符型变量
逻辑型变量:logical*4(或logical(4)) 常用
logical*1(或logical(1))
logical*2(或logical(2))
logical*8(或logical(8))
常用函数:
abs(x) 求x的绝对值
mod(x,y) 求x/y的余数
max(x1,x2,x3,...) 求x1,x2,x3,...中的最大值
min(x1,x2,x3,...) 求x1,x2,x3,...中的最小值
exp(x) 求e指数
sqrt(x) 求x的平方根,结果类型同x,x为实数
log(x) 求自然对数,结果类型同x,x为实数
log10(x) 求以10为底对数,x为实数,结果类型同x
sin(x),cos(x),tan(x) 求x的正弦,余弦,正切,x取值弧度,结果类型同x
sind(x),cosd(x),tand(x),cotan(x) 求x的正弦,余弦,正切,余切,x取值度,结果类型同x
sinh(x),cosh(x),tanh(x) 求x的双曲正弦,双曲余弦,双曲正切,结果类型同x
precision(x) 查询x的有效数字位数
len(s) 求字符串s的长度
len_trim(s) 求字符串s去掉尾部空格后的字符数
选择语句:
if (条件) then
语句
else
语句
end if
或
if (条件) then
语句
else if (条件) then
语句
else if (条件) then
语句
.
.
.
else
语句
end if
循环语句:
do 循环变量
语句
end do
强制性终止循环过程的语句:
exit退出整个循环,转循环语句后的第一条语句执行,只能在do和do while循环语句内使用
cycle 终止本次循环,回到循环语句开始(do语句)继续执行
逻辑运算符的优先级:(高-低) .not.--.and.--.or.--.xor.--.eqv.--.neqv.
完整的程序举例:将区间(0,1)等分100个节点(99段),计算每个节点的值存入数组x(n)中,然后根据y=5x的法则,计算与每个节点相应的y的值存入数组y(n)中
programmain!main为程序名
implicitnone!取消定义变量时的隐式声明规则
integer i,j,k,m,n!定义整型变量i,j,k,m,n
parameter(n=100)!给n赋值,以下程序中出现的n的值为100
real*8a,b,h,x(n),f!定义实型变量a,b,h及数组x(n),y(n)及外部函数 f
a=0.d0!给a赋值
b=1.d0!给b赋值
h=(b-a)/(n-1 )!根据a,b的值计算h
x(1)=a;x(n)=b!将a,b的值分别赋给x(1),x(n)
do i=2,n-1
x(i)=x(1)+(i-1)*h !计算数组x(n)中除两端点之外的其它点的值
end do
do i=1,n
y(i)=f(x(i))! 对应给定的一个坐标x(i),调外部函数f,计算出与该坐标相应的y(i)的值
end do
open(1,file='shuchu.txt')!新建一个名为shuchu的文本文档
do i=1,n
write(1,10)y(i)!将y的值以10所规定的格式输出到名为shuchu的文本文档中
end do
10format(1f10.6)!一行输出一个值,每个数值的总长度为10位,小数点后为6位
close(1)!关闭文本文档shuchu
end
function f(x)!定义外部函数y,x由主程序中导入
implicit none
real*8 f,x
f=5.d0*x!函数y=5x
end function f