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

050-ICAI_2 へのリンク