無理に階層構造型にしたプログラム例(エラーの場合)
全生徒数分のレコードが入ったファイルは、予め、教室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 のループを上位のループの中に包含する構造にする。
| |