140 likes | 211 Views
skill-net ( MILESTONE CAI ,笈川他, 1982) [ Fortran の課題選択など]. PROUST ( Johnson, W.L. & Soloway, E. ,1987). 初級プログラマが書いた Pascal プログラムを, 課題記述ライブラリやプログラミング知識を用いて理解し, バグ(誤り)があればバグ知識を用いてバグの発生箇所やバグの説明を行う. 課題の例. 正の実数値を入力し,入力した値の平均値を計算する Pascal プログラムを作成しなさい。
E N D
skill-net(MILESTONE CAI,笈川他,1982)[Fortranの課題選択など]
PROUST(Johnson, W.L. & Soloway, E. ,1987) • 初級プログラマが書いたPascalプログラムを, 課題記述ライブラリやプログラミング知識を用いて理解し, バグ(誤り)があればバグ知識を用いてバグの発生箇所やバグの説明を行う
課題の例 • 正の実数値を入力し,入力した値の平均値を計算するPascalプログラムを作成しなさい。 但し,データの入力は「99999」が入力されたら終了すること。また,この「99999」は平均値の計算には含めないこと。
平均値を求めるプログラムのgoalの例 • 値を入力する,但し,終了値99999が入力されたら終了する。 • 入力値が0以下ならば,再入力 • 平均値を計算 • 計算した平均値を出力
5 –5 99999が入力されると,終了値である99999がデータとして計算されてしまうプログラム
平均値を求めるプログラムのゴールを用いた表現平均値を求めるプログラムのゴールを用いた表現
goal:値を入力する,但し,終了値99999が入力されたら終了する。goal:値を入力する,但し,終了値99999が入力されたら終了する。
plan:値を入力する,但し,終了値99999が入力されたら終了する planの一例plan:値を入力する,但し,終了値99999が入力されたら終了する planの一例
システム側のplanと一致するかを検査し,一致すればそのplanが使用されたと判断する。(使用されたplanとその構成が作成者の考え)システム側のplanと一致するかを検査し,一致すればそのplanが使用されたと判断する。(使用されたplanとその構成が作成者の考え)
Bugルールの例 (Defile WHILE-for-IF Statement-Type IF Error-Pattern (IF WHILE) ←IFをWHILEで置き換えると Planが正しく動作する Bug (WHILE-for-IF-Confusion (FoundStmt, *MRet*) (Histlnst, *HistoryNode*))) ←HistoryNode:どういう状態で発生したか
学習者作成のプログラムを理解するために (a) プログラミング言語の文法(構文) (b)技能: プログラムの概念と文との関係(構造) [構成要素,従属,困難さ・複雑さ(複合度)) (c)プログラムの構成や誤り 求めるプログラムを構成するサブ・ゴールとその実現方法,誤りのルール 実現方法は,例えば, 「終了値制御の入力」の方法(手続きのパターンと考えると良いかも) (d)???
次のプログラムはどの様な知識が使われているか考えて下さい。次のプログラムはどの様な知識が使われているか考えて下さい。 #include <stdio.h> Void main(){ int a,b; scanf(“%d”, &a); b=a+2; printf(“b=%d\n”, b); }