FORTRANプログラム採点ツール
(昭和60年5月31日 原稿受付)
情報処理教育七ンター中山泰雄
日立製作所大 高 政 浩
情報処理教育センター矢鳴虎夫
AGrading tool for FORTRAN Programming Style
by Yasuo NAKAYAMA
Masahiro OTAKA Torao YANARU
Ab5tr阻et
h・・mp・・e・p・・9・am ht・・acy」・i・・e・y imp。・t・nt h。w t・・町i・・a・・ad・bl・p・・9・am. R,、d、bility i,
m田tly related with programming style.
We have developed a toDl to mea5ure programming style, which is bascd on the theory wHlten in the bo⑪k The elements of programming 5tylピby B、 W. Kernighan.
Alarge amount of program groups such as IMSL Subrouline Packagピ, popular programming text s
excises, and studenゼs program are illvestigated by the tool, when the items of evaluation are set as fo].
1。wing, e.9.,
ωindentation in DO bop,②number50f eommem he.
1ti・…d岨t・dth・tth・d・Ψd・P・dp・・g・・m・v・1・・ti。・t。。い・…f・h・m・・・…g・・d・・…fp・。9・
ramming and programming education.
の適用結果について述べる。
1。まえがき
2.評価方法 プログラミング入門教育では,演習の比重が大きい。 .
演習レポートの適切な評価と,迅速な学生へのフィード 2.1 評価項目
バックは教育上不可欠である。しかしながら多人数教育 一応の目安として次の12項目を選んだ。
では出題者にとりかなりの負担となる。このためレポー 〔11プログラムの長さ
トのプログラムの一部を計算機により自動的に採点出来 プログラムの行数,即ちカードイメージならばカード るならば.採点者の負担は軽減される。プログラムの良 の枚数と同じものである。
さの評価では,先ずプログラム内容の理解が容易である ②注釈行の割合
ことが第一であろう。この面での教育を重視するならば, プログラムの長さに対するコメント行の割合である。
プログラムスタイルをいくつかのパラメータで計測する コメント行は,プログラムを説みやすくするうえで.重 ことにより,或る程度の評価力呵能となる。この目的で 要な要素である。これは多い方が良いが,あまり多過ぎ カーニハン「プログラム書法」の提案を基盤として, るとプログラムが読みづらくなる場合がある。
FORTRANプログラムのスタイル面の計測ツールを開 {3}空行の罰合
発した。各計測項目パラメータの統計結果,及びツール プログラムの長さに対する空行の割合である。空行と
108 中山泰雄・大高政浩・矢鳴虎夫
は.第1カラム以外がプランクであるコメント行である。 ㈹ラベルのシーケンス
空行はプログラムを処理単位ごとに区切るときに.視覚 文番号が小さい順序になっているかどうかのチェック 的に非常に分かり易くする。 を行う。]モジュール中で文番号がシーケンスになって
(伽0文に対す碑下げ いオuまLシーケンスになっていなけオuエoとする・全
プログラム中でDO文が出現したとき,その次の行 モジュールについて調べ・次の計算で求める。
を1カラム以上5カラム以下の字下げを行っている船 シーケンスになっているモジュール数 でを示す. モジュール数
字下げをしている行の数
DO文の数 文番号がシーケンスになっていれば,必要な文番号を探 DO文の範囲が嚇であれば内容の理解度は大きい為 す場合,鰍な馴をとらずデパ・グの効率が良い・
この堀の重要度縮いこと1娘椥られて・・る. FORMAT文は大き嫌にする例が多いが・この場合は 固サブルーチン,ファンクシ・ンの割合 まとめてプ・グラムの最後に置くと郎 ・
全モジュール数に対するサブルーチン,ファンクショ 112)1行の平均長
ンの割合を示す。ここでモジュール数とは,END文の プログラムの1行の文の長さの平均を示す。これは従 数に等しいものとする.例えば・イン・レーチンと3つの 来のカードイメージで考えたとき・カードの何カラム目 サプルーチンから構成されるプログラムは.モジュール まで文字があるか,ということである。
数・となる・長いプ゜グ弘では出来るだ肘ブノレーチ
@3.評価囎の酬ン化することが肝要であることを示す。
噛込融の敷 3一酬の対象
コンパイラーが内部間数と判断した間数の数である。 各の翻について評価するため目よ魂切な騨値が 但しここでは肥LC・MのF・RTRAN Wを対象とし必要となる・そのため・幾つカ のサンプル1こより紺を ている.こ旭組込閲数があるとき1よ,出軽だけ利用 求めた・サンプルとして次のグルづを支橡とした・
すべきことを示す。 8.IMSLサプルーチン
最も良く知られた科学技術計算用のソフトウエア
{7}変数の長さ
使用されている類名の長さ押均したものである. である・この中か服初の1°°フ・イルを用し た・
変数名喘い叱その鰍が分力・暢い.ここでは. b・演習問題の模範解答
6文字乃至8文字【、近い程よいとしてある。 国内でF・RTRANの教縛として比酬多く使
〔、}難名の数 用されて・・る・浦昭二「F°RT貼N入11『・の模
使肌た獺名の種類の数であるに般1・麟名が多 範瀦である・76フ・イルカ{士橡である・
い程,処理内容が分か牌すいと・・える. ・・比較例題
カーニハン「プログラム書法」中の例題である。
{9)自OTO文の数
無条件GOTO文の数である。 GOTO文が交錯する d・演習レポート1
と,プ。グラムは耕1・継づらくなる.F・RmAN 昭和59鞭鍼る学手斗のプ゜グラミ 酷醐
ではG。T。文を全く使肌ないことは撫理であるが. 習レポートであるが・学期の最初の頃の簡単な出 昧るだけ使用齢いを剛すこと力哩ましい。こ醜 題の内容であり・37フ・イルが対象である・
目は減点冒櫛を行う。 f・演習レボート2
耐。グラムの鞠長さ 同じく・9鞭の3学科欄象で酬85フ・イル・学
,引で説明したモジュールの長さの平均値である.つま 期の中程での出題である・
りプログラムの全行の長さをモジュール数で割った値で 3.2統計結果
ある.TSS入力の場合1モジュー・・がせ・・ぜい2.3 これらの5つのグ・・一プごと統計処理を行った・勅 画面胴であることがデパ。グ上で臨まし・・といえる.たもの服大値,最小値・鞠値撹び酬酷である・
表一1にその結果を示す。
これから各評価項目について検討すると, eは0.04個である。一般に使用回数は少ないがプログ
(1)プログラムのながさはaがかなり大きい。この項目で ラムが長くなると大きくなる。
は.ばらつきが大きいが内容上当然であろう。 {7)変数の平均畏は,L2から2,5でありいずれも短すぎる。
(2)コメント行の割合はaの場合、20%〜80%であり,平 DO文での制御変数が1文字の場合が多いのが原因の 均で50%程度である。その他は平均で10%程度である。 1つであろう。
コメント行は50%程度必要とみなせる。 (8}変数の種類は,aが30個程度である坑他は10個程度
㈲空行の割合は.b. cでは2%程度dは0.1%と極端に である。これはプログラムが長い程,大きくなる。
低い。a. eは8−−11%である。 〔9)GOTO文の数では,旦, cは55個, b, dは1個、
(4)DO文での字下げでは. a, eは80%以上. bは eは2.5個である。プログラムが大きくなると多くな 60%が字下げを行っているがc,dは0である。 る傾向となる。
(5}サプルーチン等の割合では,aは全てサブルーチンで OOプログラムの平均長は. aが190行, b, dでは20行,
あるからユ00%である。c. eはメインプログラムだ cが40行, eは60行程度である。 aは少し長すぎると けであるから0となる。bは16%. dは50%と対象 いえよう。
で値は異なる。 {11)ラベルのシーケンスでは,aは殆ど100%でありb,
(6}組込閲数の数はa,c, dが2個程度, bは0.5個, c, dは50%, eは4%である。 eのグループでは
表一1 評価項目の統計結巣
1息}
〔d〕
HA巨 H川 HEAN S・o・ HA買 H川 HE畑 S.D
1 482・00 4」0・00 187・88 113・三1 1 83.00 37.00 40■86 8.56
2 0』2 0・22 0・53 0・14 2 0.08 0』2 0』6 0』1 3 027 0・03 0・11 0・06 3 0.03 0』0 0』0 0』1 4 1・00 0・00 M〜 0・ヨ3 4 0.00 0』0 0』0 0』0 5 1・00 1・00 1』0 0』0 5 0.67 0.50 0.51 0』
6 12』0 0』0 ¶・76 2』8 6 3.00 2』0 2』ヨ 0.17 7 昌27 †・75 〜・82 0・51 7 1.93 口6 1.5凸 0コ0 8 86』0 7・o° 2且・oo 18・2? 葛 21.oo 12.。0 1輪.有2 2』5 9 42』0 0』0 5・56 7・19 9 1、00 1』0 1』0 0.00
10 482■00 40・00 1邑7●88 」目ヨ・21 10 28.00 18・50 19.77 2.03
11 1』0 0』0 0・四 〇・rO 11 1』0 0.50 0.52 0』9
12 51.24 3L15 38.36 3.
1三 20.88 1?・71 18.70 0・6ア
{bl (司
Hj」寓 HIN HEAN S白D・ HAX HIH HEAN S.D.
† 122.00 6.00 三5』4 20.56 1 U5』〇 三7』0 59.92 17.09
2 0.21 0』3 0.07 0.0 2 0.31 0.00 0.11 0』8 3 0.15 0.00 0.16 0.03 3 0.臼 0.00 0.08 0.06 4 1』0 0.00 0.61 0.49 陥 1.00 0.00 0.85 0.27 5 1』0 0.00 0.16 0.36 5 0.00 0.00 0.00 0.00 6 凸.00 0』0 0.49 0.86 6 2.00 0.OO O』4 0.257 5白75 1・00 2.50 1.16 7 3● 6 1・1{i 〜.10 0・52
8 2 .00 Z』0 8.36 4.41 8 21.00 6』0 12.78 ;.01 9 10.0 0』0 0・?2 1・言1 9 28.00 0.00 2.51 5.16
10 105.00 8』0 25.臼 15.〒4 10 135』0 27.00 59.92 1?.09
11 1』0 0』0 0. 4 0.49 11 1』0 0.00 0.04 0.19 12 30.15 14.06 ZO.92 2.72 12 52.10 20.35 22.78 2.25{e}
HM H川 HEAN S.o.
¶ 砧.00 38.OO 4ヨ.00 7』7
2 0.17 0.05 0.11 0』8
3 0.03 0.02 0.02 0.00
4 0.00 0.00 0』n o.00
5 0』0 0.00 0.00 0.00
6 2』0 2.00 2』0 0.00
7 2. 4 1.56 2』0 0.65
B 9.00 9.OO 9.00 0.00
9 6.00 5.00 550 0.71
10 偲.00 38.00 45』0 7.0711 1.00 0.00 0.50 0.71
12 29.92 25.60 η.76 コ.05
110 中山泰雄・大高政浩・矢鳴虎夫
FORMAT文をまとめてプログラムの最後に書くよう 1|「 ・「一川 11…… II l:llll;1
こ ア パけロロ ロヨロ エ ロエ ロ アヤ セ コニニじコじコバ
に指導するとよい。 1・一・・ ・・・…一二 言:1器1
ぺ じロコむいぱ ヒ ロ ほヨロホづけコい ロ よ ロふリ ハロ カロ にりじロロ 個1行の平均畏さはaで40カラム,cが30カラム、 b, 1_H 〔.、一、自…、II、,.,、.,、、._1、.,、、…ll:11;ll エ ちこ いニニ
d,・は20カラム醗である・コ・ントカ「丁寧である i ……: :ll:㍑㍑lll iiiiiiii
ヒ らにロ いほ ビロ ロロ ロ れ けニレロじロ にブロはじ と畏くなる。尚TSS端末からの平均入力調査でもこ ; 1、1川、 .1.1、一.,。..、.、_、_,..,、、 ll:跳 ヒ てロ りいほらパ け けエれまロけ リ オ ロい ぼ じぴ ロロぼ の値は40カラム程度であった。 l l m巳 Ll1二叫 亀II咀 uc い訓㎏【LH【t lll治l l [5臼■ 1 1・,85U 膓」一呵 ♪ ・° {哨岨餉・tコ・ 【:匂1。7臼
じ」白」口〜10
に ルロ ノむべ ロ ゆしトパリ ヒネし ロい ロ モ い ロリ のもコ ユロほほコじロはねロ
4.評価採点 i 烈;ぽ瓢1・1:跳ぽ∵iiiiiii
こ一1.‥7「 °− 「− 「 ト・・一・一凸 凸一 ㊥←一一7・… ・… ‥・一・一・・一一一・一一・一一一一、≒ nC} む
に ロロはバリ
4.1怖騨 ・::1:::∵1…∵Lf 』° ll;一・一・・− iiiiiiii
びロ エ えば チゆいいエ コ ロ ロ いコ ロ ユ 前章で示した統計結果等を考慮し,採点条件の重み, く ,、、1、 ,、.眠, 、il1llll拙言ll,1㍑1織1;ll;:ll!・llll賠1 しロ よロリユの いロペエユヤユハコ ロばよしゃロソピ ロいロフトロ
許容債限界値等のパラメータを漣した。それらの値 」:1:1 鰐ii:。___..。_1、 iiiiiiii
ヨ じ ロゆ じにロ ロはロ を表2に示す。 , °問゜已 L 輌 ;三:謂1:i漂::lll;:1漂㍑:;;:1ゴ;;言識言㌫ 1跳i認 ホ か ロエロドピ ほユエロロロパエトロナリユ ロ ロばれエロセコ むフ ゆえゆ
4.2採点例 一_.1,.〔…一・…一・− iiiiiiii
ロロロい ヨ パコかパ ロじ いロ
表2の基準により学生の採点を行うが,ここである学 、即別勒1 ,、1、M、_,、、,掴1、__,、llllllll
に ロユしロけ ぽ べ じロ ま ほタロけユ りしロ いコはトコロ
生のスタイル上良好とはいえないレポートブ・グラムと i i:{il懸il:1;1蕊::1:iiiiiiii
に ロロ エコパエトオロリロロ ぽトコリ マドパ ロロコロぼ
IMSLの1サプルーチンを対象としての採点を示す。プ 1 h・。・L・、, ll:il;ll
こ ロト よ いロ ロ り オ い ヨノ おロコゆハは
・グ弘を比較すると.レポートではコメントカ・僅か2 1__, 一一1:!・一… iii罵
ニ しセむロ ヨ コヨよれ うニリ トほ
行であり.IMSLではプログラムの頭部に内容の説明 ;;;∴自.、.、 [1:llllI
ス エ エ コエ ロヘロ ロかよユ
があり注な処理単位ごとにそれぞれコメントがつけて 1。::.患・ ;㌦一一 iiiiiiii
コユ にいロコ ロエ かロ ロ り
ある。DO文についてみると,前者は全く字下げがな 1ll由 1;:lllll く・後者ではきちんと字下げが行われている。又ラベル 図_1 1MSLサゴルーチンソース
のシーケンスもレポートでは不十分である。変数名の長 プログラムの例 さもレポートでは1.54,IMSLでは3.64と大きく差が
生じている。
図・−1がIMSLサプルーチンの1例,図一2がレ の間である。空行の割合もaが4・1点, bが0・9,その ポートの例である。図一3が1MSLの採点結果,図一4 他は0.4前後である・
はレポートの採点結果である。 DO文での字下げではa, eが18点bが12点, c, d 4.3評伍の統計 では0である。組込関数では.c, dでは2点aは1.6 5つのグループについて,この採点基準を適用した1 点bは0.5点,eは0点であり.いずれも組込閲数を余 例を図一5,6に示す。IMSLでは大半が80点前後で り使用していない。変数名の長さでは, aが9.1点. b あるがテキストの解答例では,かなり低い値である。 が7.0点,c, eが5.5点前後, dが2.8点である。ラペ
これは,最初の非常に短い解答も全てデータとしたのが ルのシーケンスではaは満点(5.mであるがb, c,
大きな理由である。各項目の得点でみると,コメント行 dでは2.2点前後である。eは0.2点でほとんど得点がな の割合では,aが平均12点であり,その他は0から0.4 い。総合得点ではaは71点, bは31点, cは28点. d は17点eは48点である。この差の要因は項目2.4.7.10.
表・−2 評価基準 である・したがって充分にコメントをつけlDO文で
卵 重み下四 許醐 上限 の字下ぽ変数名を意味のあ鑓さとする・知グラム
1・蝋 川.、 ・。・ 5・.。o ・弧oo 500.ロ0 5・・.卯 の1つのモジュールを短くする等、で高得点となる。即
コ ロパロこロリロの うハロコロ ロロオロ ロコらロ ロコらロ ロぐヨロ
i:1;i!:ll:: コ謡: 1:器 呂濫 継1 1:器 ちプログラムのスタイル上での改良が行える事となる。
ち エアロロサコ ロ ニ ロ ロロきロ ロロちロ オ ロ ロ
;1瓢織;:l i;:器 !:ll ll闘 1紹l ll:器 尚全体の総平均は,40点,最低点は4.3点であった。
8 則岡VA ... .口0 5』0 }0』0 うO・OO 叩 帥
9 O〒0卓..,. ●m.叩 印.OO 70』0 500.00 500』0
1コ VL【●F問.. 1,.口 20.OO 50.OO ,回0.00 ?OO OO キ1 i晶〒匡巽0,.. 5』O O. O O.,0 1.ロロ 1.00 η 川」…向亡Lr.. う.OC 1 .00 15.00 口・ロロ 50・00CEX口 HEASURE PO川丁5
c;;灘1離illl二幽……ミ1灘;講lil iil
10 L(1)=O
DO ll l.1,N TOIAL POエ1↓T・ 15.72
CALL GR
A=FLOAT(川 ∫10000.0 図一4 図一2のプログラムの採点
SUI仁SUI軒A 結果J=10毒A41 L(J)=L(J)†1
11 cor」丁INUE
.DOO
− 5_ロoo エ0 1 H二SUト1/FLOAτ(H) 5.000− 10.000 工 0 1 L!RITE(6,601) H lo.000− @15.ODD I O I
601F・R・・1^τ(1H,・HEIKIH・・,FIZ.6) ;;二;8;:;;:lll}1{URITE(6,620) 25・000− 30.OOO 1 凸
162・F。Rl帽(1・い・BUI1・ATSU B田・PUI) i;1;ll:i;:;8;1;}
1r∫RITE(6,602) L c.ooo − 45.ooo 1 1 1.
60Z FonHA丁{111 ,10工5) 〔L5.000 − 50.000 1 3 1■●・
GOTO1 ;呈:呂器:三呂:呂81{ ;i::::::°
EHD 60・Oロo − 65・000 1
8 1.■且;亘1亀■SUBROUTINE 6R 65・ooo − 70唱000 1 1D I●・■■宜重・享・■
CO刊卜10r↓田〆Nr1 ;1:呂呂8:;言:呂器li}{:::::::::::::1::::::::. 、.
ト1=2主n1 日O.OOO − 85・O〔]0 1 8 1■田章・.・■■
nlJ=140D【H,10皐倉4) 日5・OOO − 00・OOO I 8 1・.■・工島●■
N1=国r{ ;!:1}91 :1:;:呂呂8 : 8 {