|
次のプログラムを作成する。 例題5のフローチャートとプログラムの例を示します。
例題5のプログラム例について説明します。 プログラム全体の大きな流れは例題4と同じです。 このプログラムでは、新たに実変数s(平均との差),整変数i(実数値の入力数を数える変数),j(平均との差が正になる個数を数える変数),k(平均との差が負になる個数を数える変数)を使用しています。
real s
integer i,j,k
の型宣言文を記述するところですが、これらの変数は暗黙の型宣言の定義を満たしているので型宣言は必要ありません(これまでの例で記述してきた4行目の型宣言文も無くても構いません)。 次に、入力した実数の個数を数える部分に注目してみましょう。そのために挿入された行は 12行目 i=0 と 18行目 i=i+1 で、この部分に関係するプログラムの流れは次のようになっています。
i=0
┌→ 1001 continue
│ :
│ i=i+1
│ :
└── go to 1001
12行目の 今度は、入力した実数値と平均との差が正の場合の個数を数える部分に注目してみましょう。そのために挿入された行は 13行目 j=0 と 21行目 if(s.gt.0.0) j=j+1 で、この部分に関係するプログラムの流れは次のようになっています。
j=0
┌→ 1001 continue
│ :
│ if(s.gt.0.0) j=j+1 ←論理if文
│ :
└── go to 1001
13行目の 実数値と平均との差が負の場合の個数を数える部分の考え方は、正の個数を数える場合と同様で、そのために挿入された行は 14行目 k=0 と 22行目 if(s.lt.0.0) k=k+1 です。この部分に関係するプログラムの流れは
k=0
┌→ 1001 continue
│ :
│ if(s.lt.0.0) k=k+1 ←論理if文
│ :
└── go to 1001
となります。 論理if文 による判断の詳細はFortranの文法を参照してください。 実数値の入力が終わり(入力ファイルが終了)になったら、それぞれの個数 i, j, k を出力します。その部分は次のように記述します。 24行目 9001 continue 25行目 write(*,*) 26行目 write(*,*) '入力した実数値の個数 ',i 27行目 write(*,*) '平均との差が正の個数 ',j 28行目 write(*,*) '平均との差が負の個数 ',k 実数値の入力が終わりになったときには、変数 i, j, k にそれまでの個数が数えられていますので、実数値の入力が終わったときの飛び先の文(ここでは24行目の文番号 9001を持つ continue文)より後に出力するための実行文を記述します。 |


