主程序開始:program 程序名
主程序結(jié)束:end
子程序開始:subroutine 程序名()
子程序結(jié)束:end
注:子程序可置于主程序之前或之后,一般置后
例:subroutine xuanzhuyuanfa(a,b,n)
end
注:a,b,n的值由主程序中導(dǎo)入而來
外部函數(shù)開始:function 函數(shù)名()
外部函數(shù)結(jié)束:end function
注:外部函數(shù)可置于主程序之前或之后,一般置后
例: function y(x)
real*8y,x
y=x**2
end functiony
注:x的值由主程序中導(dǎo)入而來
輸入輸出格式: format
例:format(5f5.2)前面的5表示一行輸出5個(gè)數(shù)字,f表示輸出結(jié)果類型為實(shí)型,5.2表示輸出的數(shù)字長(zhǎng)度(包括小數(shù)點(diǎn))為5位,小數(shù)點(diǎn)后2位
format('a=',x) 如果輸入的x的值為3.0,則輸出結(jié)果為:a=3.0
format(1x,i2,2x) 表示首先輸出一個(gè)空格,再輸出一個(gè)長(zhǎng)度為2的整型數(shù)字,最后再輸出兩個(gè)空格
implicit none 取消定義變量時(shí)的隱式聲明規(guī)則。該規(guī)則為:在程序中,凡是變量名以字母
I,J,K,L,M,N,i,j,k,l,m,n開頭的變量被默認(rèn)為整型變量,以其他字母開頭的變量被默認(rèn)為
實(shí)型變量。
parameter(變量=表達(dá)式) 例:parameter(pi=3.1415)表示在程序中的所有pi的值都為3.1415
輸入語句:read*,變量名從鍵盤輸入數(shù)據(jù)給該變量
read k,變量名以k所限定的格式從鍵盤輸入數(shù)據(jù)給該變量,k為任意數(shù)字 例:
read 10, a
10 format(f10.6) 表示以10所限定的格式輸入數(shù)據(jù)到a中
read(*,*),變量名
例 open (1,file='wenjian.txt')
read(1,10),a
10 format(f10.6)表示將wenjian.txt中的內(nèi)容以10所限定的格式輸入給a
輸出語句:print*,變量名輸出該變量中的內(nèi)容
print k,變量名以k所限定的格式輸出該變量中的內(nèi)容,k為任意數(shù)字 例:
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
實(shí)型變量:real(或real*4,或real(4)) 單精度,有效位數(shù)7位
real*8(或real(8)) 雙精度,有效位數(shù)15位常用
例: real*8 a,b,x(n),c(n,n)定義雙精度的實(shí)型變量a,b及一維數(shù)組x(n),二維數(shù)組c(n,n)
復(fù)型變量:complex(或complex*4,或complex(4)) 單精度
comple*8(或complex(8))雙精度 常用
字符型變量:character*k(或character(k),或character(len=k))k表示字符串的長(zhǎng)度
character 定義長(zhǎng)度為一的字符型變量
邏輯型變量:logical*4(或logical(4)) 常用
logical*1(或logical(1))
logical*2(或logical(2))
logical*8(或logical(8))
常用函數(shù):
abs(x) 求x的絕對(duì)值
mod(x,y) 求x/y的余數(shù)
max(x1,x2,x3,...) 求x1,x2,x3,...中的最大值
min(x1,x2,x3,...) 求x1,x2,x3,...中的最小值
exp(x) 求e指數(shù)
sqrt(x) 求x的平方根,結(jié)果類型同x,x為實(shí)數(shù)
log(x) 求自然對(duì)數(shù),結(jié)果類型同x,x為實(shí)數(shù)
log10(x) 求以10為底對(duì)數(shù),x為實(shí)數(shù),結(jié)果類型同x
sin(x),cos(x),tan(x) 求x的正弦,余弦,正切,x取值弧度,結(jié)果類型同x
sind(x),cosd(x),tand(x),cotan(x) 求x的正弦,余弦,正切,余切,x取值度,結(jié)果類型同x
sinh(x),cosh(x),tanh(x) 求x的雙曲正弦,雙曲余弦,雙曲正切,結(jié)果類型同x
precision(x) 查詢x的有效數(shù)字位數(shù)
len(s) 求字符串s的長(zhǎng)度
len_trim(s) 求字符串s去掉尾部空格后的字符數(shù)
選擇語句:
if (條件) then
語句
else
語句
end if
或
if (條件) then
語句
else if (條件) then
語句
else if (條件) then
語句
.
.
.
else
語句
end if
循環(huán)語句:
do 循環(huán)變量
語句
end do
強(qiáng)制性終止循環(huán)過程的語句:
exit退出整個(gè)循環(huán),轉(zhuǎn)循環(huán)語句后的第一條語句執(zhí)行,只能在do和do while循環(huán)語句內(nèi)使用
cycle 終止本次循環(huán),回到循環(huán)語句開始(do語句)繼續(xù)執(zhí)行
邏輯運(yùn)算符的優(yōu)先級(jí):(高-低) .not.--.and.--.or.--.xor.--.eqv.--.neqv.
完整的程序舉例:將區(qū)間(0,1)等分100個(gè)節(jié)點(diǎn)(99段),計(jì)算每個(gè)節(jié)點(diǎn)的值存入數(shù)組x(n)中,然后根據(jù)y=5x的法則,計(jì)算與每個(gè)節(jié)點(diǎn)相應(yīng)的y的值存入數(shù)組y(n)中
programmain!main為程序名
implicitnone!取消定義變量時(shí)的隱式聲明規(guī)則
integer i,j,k,m,n!定義整型變量i,j,k,m,n
parameter(n=100)!給n賦值,以下程序中出現(xiàn)的n的值為100
real*8a,b,h,x(n),f!定義實(shí)型變量a,b,h及數(shù)組x(n),y(n)及外部函數(shù) f
a=0.d0!給a賦值
b=1.d0!給b賦值
h=(b-a)/(n-1 )!根據(jù)a,b的值計(jì)算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 !計(jì)算數(shù)組x(n)中除兩端點(diǎn)之外的其它點(diǎn)的值
end do
do i=1,n
y(i)=f(x(i))! 對(duì)應(yīng)給定的一個(gè)坐標(biāo)x(i),調(diào)外部函數(shù)f,計(jì)算出與該坐標(biāo)相應(yīng)的y(i)的值
end do
open(1,file='shuchu.txt')!新建一個(gè)名為shuchu的文本文檔
do i=1,n
write(1,10)y(i)!將y的值以10所規(guī)定的格式輸出到名為shuchu的文本文檔中
end do
10format(1f10.6)!一行輸出一個(gè)值,每個(gè)數(shù)值的總長(zhǎng)度為10位,小數(shù)點(diǎn)后為6位
close(1)!關(guān)閉文本文檔shuchu
end
function f(x)!定義外部函數(shù)y,x由主程序中導(dǎo)入
implicit none
real*8 f,x
f=5.d0*x!函數(shù)y=5x
end function f
愛華網(wǎng)



