3つの実数の値を読み込んで、その平均を求めるプログラムを作成する。3つのデータの組を繰り返し読み込んで計算できるようにする。
例題2のプログラム例 は、3つの実数を1組だけ読み込んでその平均を求めるものです。別の数値について計算したい時には、改めて実行しなければなりません。
プログラム例を「3つ実数値について、何回か計算できるようにする」には、1組の計算が終わったら、もう一度データを読み込むところに戻り、データが無くなったらプログラムの実行を終わるようにします。
例題3のフローチャートとプログラムの例を示します。
 |
行 | プログラム |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
c Example 3 データを繰り返し読む
c 機械工学科 1年 xxxxxxx my name
c Filename = reidai03.f
real a1,a2,a3,asum,av
write(*,*) ' 3つの実数の平均を求める '
1001 continue
write(*,*) ' 実数を3つ、カンマまたはブランク'
* ,'で区切って入力する'
read(*,*,end=9001) a1,a2,a3
asum=a1+a2+a3
av=asum/3.0
write(*,*) ' a= ',a1,a2,a3,' 平均 ', av
go to 1001
9001 continue
write(*,*) ' 計算終わり '
stop
end
|
|
例題3のプログラム例について説明します。
入力した一組のデータについて計算や出力などの一連の処理を終えたら、次のデータを読み込むように実行の流れを戻します。このために挿入された行が6行目と13行目です。
13行目の go to文は、実行の流れを指定された文番号(ここでは 1001)を持つ文に無条件に移動します。6行目は go to文の戻り先(ここではデータを読み込むところ)を示すcontinue文です。
この2行を挿入しただけですと、プログラムの実行はデータを入力するところへ必ず戻るので、プログラムの実行を終えるには強制終了しなければなりません。そこで、データが終わりの時は通常の計算をせずに、「 計算終わり 」と表示して終わるようにしたのが9行目と14,15行目です。
9行目 read(*,*,end=9001) a1,a2,a3
と
14行目 9001 continue
15行目 write(*,*) ' 計算終わり '
9行目のread文は、プログラム例 2 の read(*,*) a1,a2,a3 にファイル終了指定子 end=9001 をつけ加えたもので、データの入力が終わりの時は指定された文番号(ここでは 9001)を持つ文に実行の流れを移します。キーボードからデータ入力の終わりを示すには Ctrl + D を押します。14行目は文番号 9001 を持つ文で、入力が終わりの時の飛び先になります。ここではcontinue文ですが、次のwrite文で「 計算終わり 」と画面に出力します。
|