以下は先週コンパイルしたプログラムです.これをまず分析します.
c program 14/10/09 implicit none real*8 a,b,c a=1.D0 b=2.D0 c=a+b write(*,*) a,b,c end
まず覚えてほしいフォートランのきまり:
FORTRANでは定数(1.D0などの具体的な数)および変数(a, bなど定数を格納できる文字:英字から始まる6文字以内の任意の英数字)には型が定められています. 常に型を意識して変数および定数を使用してください. 当面登場する型は次の三つです. そのうち使用するのは始めの二つとなります.
注意:宣言文はプログラムの先頭に置いてください! 次のプログラムを実行してください.
c program 2 14/10/09 implicit none real*8 a,b real c integer n a=2.1D0 b=2.1 c=2.1 n=2.1 write(*,'(D24.16,1x,D24.16,1x,D24.16)') a,b,c write(*,'(I3)') n end
モニタ上の表示はどうなったでしょうか? 何桁目まで正しく表示されていますか? nの表示はどうなっていますか?
再度注意点をまとめると:
以上二点をいつも守るように心がけて下さい.
前節では画面に結果を出力させました.キーボードから入力もしたいと思います.入力は read文を使って行われます.先ほどのプログラムを
c program 2 14/10/09 implicit none real*8 a,b,c,d a=1.D0 b=2.D0 c=a+b read(5,*) d write(6,*) d write(6,*) a,b,c endと変更して実行してみよう.
open(1,FILE='test.dat')を追加してください. こうするとその後write(1,*)とすることによりtest.datに結果が 出力されます.番号に6(モニタ),5(キーボード)は使ってはいけない.これは標準入出力の番号です.
まず, 内容が次のファイル141009_1.datを作成してください.
2.1D0 5.4D0
注意:5.4D0の後で改行してください.しないと読み込みでエラーになります.
次のプログラムを書いてみよう.
implicit none real*8 a,b,c open(1,FILE='141009_1.dat') open(2,FILE='141009_2.dat') read(1,*) a,b c=a+b write(2,*) c end
以上二つのファイルが作成できたらコンパイル後実行してください.
プログラムから数値を読み込む場合, 通常はファイルから読み込ませます. キーボードから読み込ませることもできますが, そうすると入力した数値が後で判らなくなってしまうことが多いからです. また, 計算結果も通常はファイルに書き込ませます. ファイルを開くには上の例のようにopen文を用います. 書式は次の通り.
open文 | open(n,FILE='ファイル名') |
n | 外部装置識別子(5,6を除いた整数を使う) |
---|
次のプログラムを書いてみよう.
implicit none real*8 a,c integer n,i a=1.D0 c=0.D0 n=10 do i=1,n c=c+a enddo write(*,*) c,n end
これは,整数iを1からnまで一つづつ増やしつつenddo文までを反復しなさいというプログラムである.フォートランでは反復計算をDOループを用いて行なう. 基本的な書き方は次の通り:
DOループ | do i=m1,m2,m3 .......... enddo |
i | 制御変数(整数型を使う) |
---|---|
m1 | 制御変数の初期値 |
m2 | 制御変数の終値 |
m3 | 制御変数の増分(省略すると1になる) |
増分を1以外の数にとったのが次の例:
implicit none integer i do i=0,11,2 write(*,*) i enddo end別の例:
implicit none integer i do i=10,0,-1 write(*,*) i enddo end
DOループは重ねてつかうことができる. 例として:
implicit none integer i,j do i=1,10 do j=1,5 write(*,*) i,j enddo enddo end
プログラムを作成し実行せよ. iとjがどのように増えていくか着目すること.
1 11 111 1111 11111 111111 1111111 11111111 111111111 1111111111
問題のプログラム及び解答(数値)を城野,諸田,野上(アドレス変更です.nogami.tatsuhiko@g.mbox.nagoya-u.ac.jp )にメールで送ること.
〆切:10月14日(火曜日)