以下は先週コンパイルしたプログラムです.これをまず分析します.
program example1 ! プログラムの開始 implicit none ! 暗黙の型宣言を使わない double precision a,b,c ! 倍精度型実数a,b,cを宣言 a = 1.D0 ! aに倍精度の1を代入 b = 2.D0 ! bに倍精度の2を代入 c = a + b ! cにaとbの和を代入 write(*,*) a,b,c ! a,b,cに格納されている数値をモニタに出力 end program example1 ! プログラム修了
FORTRANでは定数(1.D0などの具体的な数)および変数(a, bなど定数を格納できる文字:英字から始まる31文字以内の任意の英数字)には型が定められています. 常に型を意識して変数および定数を使用してください. 当面登場する型は次の三つです. そのうち使用するのは始めの二つとなります.
注意:宣言文はプログラムの先頭に置いてください!
再度注意点をまとめると:
以上二点をいつも守るように心がけて下さい.
ファイル 201015_1.dat をエディタで新規作成し,以下の数字をコピーしてください.
2.1D0 5.4D0
注意:5.4D0の後で改行してください.しないと読み込みでエラーになる場合があります.
次のプログラムを書いてみよう.
implicit none double precision a,b,c open(1,FILE='201015_1.dat') open(2,FILE='201015_2.dat') read(1,*) a,b c = a + b write(2,*) c end
以上二つのファイルが作成できたらコンパイル後実行してください.
プログラムから数値を読み込む場合, 通常はファイルから読み込ませます. キーボードから読み込ませることもできますが, そうすると入力した数値が後で判らなくなってしまうことが多いからです. また, 計算結果も通常はファイルに書き込ませます. ファイルを開くには上の例のようにopen文を用います. 書式は次の通り.
open文 | open(n,FILE='ファイル名') |
n | 外部装置識別子(5,6を除いた整数を使う) |
---|
次のプログラムを書いてみよう.
program loop implicit none double precision a,c integer n,i a = 1.D0 c = 0.D0 n = 10 do i=1, n c = c + a end do write(*,*) c,n end program loop
これは,整数iを1からnまで一つづつ増やしつつenddo文までを反復しなさいというプログラムである.フォートランでは反復計算をDOループを用いて行なう. 基本的な書き方は次の通り:
DOループ | do i=m1,m2,m3 .......... enddo |
i | 制御変数(整数型を使う) |
---|---|
m1 | 制御変数の初期値 |
m2 | 制御変数の終値 |
m3 | 制御変数の増分(省略すると1になる) |
増分を1以外の数にとったのが次の例:
program loop2 implicit none integer i do i=0,11,2 write(*,*) i end do end program loop2別の例:
program loop3 implicit none integer i do i=10,0,-1 write(*,*) i end do end program loop3
DOループは重ねてつかうことができる. 例として:
program loop4 implicit none integer i,j do i=1,10 do j=1,5 write(*,*) i,j,i+j end do end do end program loop4
プログラムを作成し実行せよ. iとjがどのように増えていくか着目すること.
1 11 111 1111 11111 111111 1111111 11111111
問題のプログラム及び解答(数値)を城野,濱本にメールで送ること.
〆切:10月20日(火曜日)