階層構造型プログラム例          トップ | ←前 | 次→
無理に階層構造型にしたプログラム例(エラーの場合)

全生徒数分のレコードが入ったファイルは、予め、教室AB>性別>生徒コード>月> 順に並べておく。
   年間合計点数合計B=0
B  While((教室AB=A)&(Not(End Selection)))
      月=1
   A  While((性別=男)&(月<=12))
ル      年間合計点数合計A=年間合計点数合計A+年間合
   ル   計点数
      SAVE RECORD
   |  NEXT RECORD
|      月=月+1
   プ  End while
    年間合計点数合計B=年間合計点数合計B+年間合計
    点数合計A
プ  End while

上例では、年間合計点数合計Bには、教室Aの女性は加算されなくなってしまう。

((注)ここでは敢て、使用するコマンドをWhileコマンドだけに制限した条件下でプログラミングしている為、エラープログラムになっている。条件判定分岐コマンドや抽出コマンドも使用すれば、よりシンプルなエラーの無いプログラムになる。プログラムは使用するコマンドや構造次第で、種々のプログラムが幾らでも作成できる。この自由さが、プログラムに優劣を与える事にもなる。)
この様に、敢えて使用するコマンドをWhileコマンドだけに制限した、反復処理では、無理して1ヶの階層構造にするより、別々の反復処理を2ヶ別々に実行せざるを得ない。

無理に階層構造型にしたプログラム例(エラーでは無い場合)

(処理A)
先ず性別>生徒コード>月> 順に並べておく。
   月=1
   年間合計点数合計A=0
A  While((性別=男)&(月<=12)&(Not(End Selection)))
    年間合計点数合計A=年間合計点数合計A+年間合
ル   計点数
    SAVE RECORD
|   NEXT RECORD
    月=月+1
プ  End while


(処理B)
先ず教室AB>生徒コード>月> 順に並べておく。
   年間合計点数合計B=0
B  While((教室AB=A)&(Not(End Selection)))
     月=1
     年間合計点数合計A=0
   A  While(月<=12)
ル      年間合計点数合計A=年間合計点数合計A+年間合
   ル   計点数
      SAVE RECORD
   |  NEXT RECORD
|      月=月+1
   プ  End while
    年間合計点数合計B=年間合計点数合計B+年間合計
    点数合計A
プ  End while

つまり、処理B を女生徒も加算出来る様に記述し、処理B のループを上位のループの中に包含する構造にする。