以下は先週コンパイルしたプログラムです.これをまず分析します.
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文字以内の任意の英数字)には型が定められています. 常に型を意識して変数および定数を使用してください. 当面登場する型は次の三つです. そのうち使用するのは始めの二つとなります.
注意:宣言文はプログラムの先頭に置いてください!
再度注意点をまとめると:
以上二点をいつも守るように心がけて下さい.
ファイル 211021_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月26日(火曜日)