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 とする.