FORTRANでは実数と整数を区別して変数に格納します. 正しい型の変数を用意しておかないと計算結果がおかしくなります. 変数の型には注意をはらうこと!
implicit none
integer m,n,l
real*8 a,b,c,d
l=5/2
a=5/2
m=5.D0/2.D0
b=5.D0/2.D0
n=5/2.D0
c=5/2.D0
write(6,*) l,a,m,b,n,c,d
end
結果はどうなったであろうか? dの値は?
1.D0 2.D0 3.D0 4.D0 5.D0と縦に並んだデータをファイル(retsu.datとする)から読み, 配列a(5)に格納するプログラム例:
implicit none
integer i
real*8 a(5)
open(1,file='retsu.dat')
do i=1,5
read(1,*) a(i)
write(6,*) a(i)
enddo
end
1.D0 2.D0 3.D0 4.D0 5.D0と横に並んだデータをファイル(gyou.datとする)から読み, 配列a(5)に格納するプログラム例:
implicit none
real*8 a(5)
integer i
open(1,FILE='gyou.dat')
read(1,*) (a(i),i=1,5)
write(6,*) (a(i),i=1,5)
end
real*8 a(10,10)a(1,1)からa(10,10)まで要素を100個持つ倍精度実数型二次元配列を宣言
integer i(2,-1:8)i(1,-1)からi(2,8)まで要素を20個もつ実数型二次元配列を宣言
1.D0 2.D0 3.D0 4.D0 5.D0 6.D0
変数,配列を初期化する際に用いる.配列の場合,値の格納順序に注意(下の例を参照)
| data文 | data 変数名のリスト/値のリスト/,... |
implicit none
integer i,j
real*8 a(10),c(2,5),pi,e
data pi,e/3.14159625D0,2.7182818D0/
data a/8*0.D0,1.D0,5.D-1/
data c/3*1.D0,7*1.D2/
write(6,*) 'pi=',pi,'e=',e
do i=1,10
write(6,*) i,a(i)
enddo
do i=1,2
do j=1,5
write(6,*) i,j,c(i,j)
enddo
enddo
end
3.0節のデータファイルretsu.datと, 列ベクトルを読み込むプログラムを今日のディレクトリにコピーする. そのプログラムを書き換え, データの総和, 平均値, 分散を求めるプログラムを作成せよ.
2.D0 3.D0 4.D0をvec1.dat,
5.D0 6.D0 7.D0をvec2.datとする.
2.D0 3.D0 4.D0 1.D0 2.D0 3.D0 5.D0 6.D0 7.D0 4.D0 5.D0 6.D0 8.D0 9.D0 10.D0 2.D0 4.D0 6.D0上の二つの3行3列の行列をそれぞれ hai1.dat,hai2.dat とする.