論 文
初 級 プ ロ グ ラ ミン グ教 育 に お け る支 援 シス テ ム に関 す る研 究
〜 因 果 マ ップか らJavaソ ー ス の 自動 生 成 に つ い て 〜
DesignandImplementationofSupportSystemforBeginner'sProgramming Education
‑AutomaticgenerationofJavaProgramfromCause‑EffectMap一
堀 内 幸 造1)、 長 田 一 興2) KozoHoriuchi,KazuokiOsada
24
Abstract:"4VeaimedattheconstructionoftheintellectualCAIsysteminthebeginner'sprogrammingeducationand
studyaboutthedefinitionofprogramspecification[1][2][3].Weexpectitismechanicallydecidablethatstudents'programs arecorrectornotandwhichadvicesmustbegivenwhentheyareincorrectbycomparingthemtoit.Butitis
insufficientifthespecificationisonlycomprisedofthesolutiontorealizeourexpectation.Itmustbeassociatedwiththe commonsenseandknowledgetobeusedtobuildtheprogramtogiverelevantadvises[4].Toexpressthecommonsense
andknowledgeinadditiontothesolution,weproposedakindofdesigndiagramcombiningtheflow‑chartandthedata flowdiagram,theCause‑EffectMap[1][2].Conventionallytheflow‑chartisdrawnforhumanprogrammerstounderstand whatandhowtoprogramanditisnotdirectlymachine‑interpretable.Bycombiningthedata‑flowdiagramwithit,the objectsofeachprocesscanbeexplicitlyexpressed,butrigidnessamongtheorderofexecutionofprocessesstillremains intheflow‑chart.
Bycontrast,processesintheCause‑EffectMaparelooselycoupledbyjustspecifyingtheirstartconditionsand resultedstatechangesofdatawhichreflectsomecommonsenseorknowledge.Inthispaperwefullyexplainbothof themandconsideranexperimentalsoftwaretogenerateaprogramfromtheCause‑EffectMap.
キ ー ワ ー ド:プ ロ グ ラ ム の 自 動 生 成,知 的CAI,因 果 マ ッ プ Keywords:automaticgenerationofprograms,intellectualCAI,Cause‑EffectIVIap
1.は じめ に
我 々 は 初級 の プ ロ グ ラ ミン グ教 育 にお け る知 的CAIシ ス テ ム の構 築 を 目指 し、 プ ロ グ ラム 課題 の仕 様 化 に関 す
る研 究 を行 って きた[1][2][3]。 これ ら仕 様 が 与 え られ れ ば、
学 習者 が 作成 した プ ロ グ ラ ム(ソ ー ス コー ド)が課題 の仕 様 を満 た して い るか 判 断 で き る よ うに な り、学 習 者 に適 切 な 教授 を行 うこ とが で き る。 しか し、単 純 に仕様 化 し た 課題 と照 ら し合 わせ る だ けで は 有 用 なCAIシ ス テ ム と して は 不十 分 で あ る。 そ こで 、 学習 者 が プ ロ グ ラ ミ ン グ とい う行 為 を どの よ うに据 え 、 思 考 し解 を得 て い る か
「 プ ログ ラ ミン グ にお け る常識 と知識 」 とい う観 点 か ら 考 察 して き た[4]。こ れ らプ ロ グ ラム 課題 の仕 様 化 とプ ロ グラ ミン グ にお け常 識 と知識 を 表現 す る手 法 と して我 々 は 咽 果 マ ップ」 を提 唱 し、 この 因果 マ ップ を描 く こ と に よ り学習 者 へ の 効 果 的 な 教授 を 実現 す る こ と を 目標 と
す る。
プ ロ グ ラ ム を作 成 す るた め に従 来 か ら利 用 され て い る 図 に フ ロー チ ャー トが あ るが 、 フ ロー チ ャー トは あ くま で も1つ の解 を 表 現 す る図 で あ り、解 の 多様 性 に は 対応 で き な い。 そ こで フ ロー チ ャー トをべ 一 ス に個 々 の デ ー タ の状 態 や 処 理 の 前 後 関係 を考 慮 し、各 処 理 の 間 に 自由 な繋 が りを持 た せ た 図 が 因果 マ ップ で あ る。 同 種 の 図 に デ ー タ フ ロー 図 が あ るが 、 因果 マ ップ はデ ー タの 状態 を 3つ の 状 態 に分 け て 表 現 し、 そ れ らの状 態 に よ っ て 多様 な繋 が りを持 つ こ とが で き る点 で大 き く異 な っ て い る。
そ の た め学 習 者 に よっ て 異 な る多 様 な解 に も対応 で き 、 描 かれ た図 は 課題 の仕 様 を 可視 化 した もの とな る。 ま た デ ー タ の状 態 を見 な が ら処 理 が 行 わ れ る過 程 が 見 え る た め プ ロ グ ラム の 流れ の理 解 が容 易 に な り、 プ ログ ラ ミン グ教 育 にお い て は とて も有 用 で あ る。
1)産 業 技 術 研 究 科 電 子 情 報 工 学 専 攻 研 究 生[email protected] 2)産 業 理 工 学 部 情 報 学 科 教 授[email protected]
そ こ で 本 論 で は 因 果 マ ッ プ の 描 き 方 の 中 心 で あ る
「デ ー タ 状 態 の 変 化 」、 「起 動 条 件 」 に つ い て 解 説 し、 因 果 マ ッ プ か ら プ ロ グ ラ ム を 自 動 的 に 生 成 す る ソ フ トウ ェ ア に つ い て 考 察 す る。
2因 果 マ ッ プ の 構 成
因 果 マ ッ プ は 「タ ス ク 」 が 複 数 個 組 み 合 わ さ れ 構 成 さ れ て お り、 個 々 の タ ス ク は い く つ か の 「デ ー タ 」1つ の
「処 理 」 か ら 構 成 され て い る 。 2.1タ ス ク
図1は タ ス ク の 基 本 的 な 描 き 方 で あ る。 入 カ デ ー タ 描 画 エ リ ア に は 処 理 に 必 要 な 入 カ デ ー タ を 複 数 個 描 く こ と が で き 、 出 力 デ ー タ描 画 エ リ ア に は 処 理 後 に 出 力 され る デ ー タ を 描 く。
!
く,デ.朧.'Ji
タ ス ク ー、
、
処理
漕 データ細 リ レ
ノ
図1因 果 マ ッ プ の 構 成:タ ス ク
デ ー タ に は い く つ か の プ ロパ テ ィ が 存 在 す る。
●名 前:変 数 デ ー タ の 場 合 変 数 名 を 与 え る。
● モ デ ル:プ ロ グ ラ ム 内 に お け る 型 に 当 た る 情 報 。
●値:デ ー タ が 持 っ て い る 値 。
●デ ー タ 状 態:
一 状 態:値 が な い、 値 が 変 化 、 値 が 確 定 と変 化 。 一 使 用:未 使 用、 使 用 中 、 使 用 済 と変 化 。 一 確 認:未 確 認、 確 認 済 と 変 化 。
名 前 は 変 数 デ ー タ の 場 合 必 須 で 、 プ ロ グ ラ ム 内 で 使 用 す る 変 数 名 と な る 。
モ デ ル は 整 数 、 実 数 、 文 字 な ど の プ リ ミテ ィ ブ な 型 に 加 え ク ラ ス が 指 定 で き 、 デ ー タ が 持 っ て い る値 が ど の よ
うな 種 類 な の か 定 義 で き る。
値 は デ ー タ が 持 っ て い る 値 を 表 し、 モ デ ル に よ っ て 指 定 で き る 値 が 決 ま る 。 モ デ ル に ク ラ ス が 指 定 され て い る
と き は ク ラ ス 名 が 与 え ら れ る。
デ ー タ 状 態 に は3つ の 異 な っ た 状 態 が 存 在 す る 。 「状 態 」 は 値 に 対 し て 「値 が な い 」、 「値 が 変 化 」、 「値 が 確 定 」
と 変 化 し 、 「使 用 」 は デ ー タ 自体 に 対 して 「未 使 用 」,「使 用 中 」、 「使 用 済 」 と変 化 し、 「確 認 」 は 同 じ く デ ー タ 自体 に 対 し て 「未 確 認 」、 「確 認 済 」 と 変 化 す る 。 こ れ らデ ー
タ 状 態 の 変 化 は 基 本 的 に 処 理 ご とで 自 動 的 に 行 わ れ る が 、2' 値 が 確 定 、 使 用 済 、 確 認 済 に 関 し て は 作 図 者 が 意 図 的 に 与 え な い 限 り変 化 し な い 。
2.2デ ー タ
デ ー タ は 図2の よ うに 描 く。 デ ー タ に は 変 数 デ ー タ と 値 デ ー タ が あ り、 変 数 デ ー タ は 同 じ変 数 同 士 を 同 じ色 で 塗 りつ ぶ し て 表 現 し、 値 デ ー タ は 白 で 塗 りつ ぶ す 。 変 数 デ ー タ は1つ の 因 果 マ ッ プ 内 で 同 色 の も の は す べ て 同 じ デ ー タ で あ り、 値 デ ー タ は そ れ ぞ れ が 異 な っ た デ ー タ で あ る 。
1̲一 一 一̲̲デ ー タ ーi
,、1・ 名 前 \ \I
I:這 デルM
l\ ° 藩 の状制
1 、
ー̲̲̲一\ 一確認/ノ
図2因 果 マ ッ プ の 構 成:デ ー タ
2.3処 理
我 々 は 本 学 部 情 報 学 科 「オ ブ ジ ェ ク ト指 向 プ ロ グ ラ ミ ン グ 」 で 使 用 した 課 題 のe囲 に お け る 因 果 マ ップ の 定 義 を 行 っ た 。 そ の た め 想 定 さ れ る プ ロ グ ラ ミ ン グ 言 語 は Java言 語 で 、 課 題 内 容 か ら抽 出 した 処 理 は30種 類 と な っ
た 。 表1に 一 覧 を 掲 載 す る 。
表1処 理 一 覧
イ ン ク リ メ ン ト イ ン ス タ ン ス の 生 成 ゲ ッ タ ー の 呼 び 出 し ス レ ッ ドの 終 了 を 待 機
ス レ ッ ドー 時 停 止 ス レ ッ ド起 動 セ ッ タ ー 呼 び 出 し そ の 他 条 件 ブ ロ ッ ク の 開 始
デ ク リメ ン ト メ ソ ッ ドを 終 了 メ ソ ッ ド呼 び 出 し 繰 り返 し ブ ロ ッ ク 繰 り返 しブ ロ ッ ク の 開 始 繰 り返 し ブ ロ ッ ク の 終 了
繰 り返 しを終了 す る 計 算す る
条 件 ブ ロ ッ ク条 件 ブ ロ ッ ク の 開 始 条 件 ブ ロ ッ クの 終 了 親 の コ ン ス トラ ク タ 呼 び 出 し 親 の メ ソ ッ ド呼 び 出 し 他 の コ ン ス トラ ク タ呼 び 出 し
代 入す る 入 力す る
配列 呼び 出 し 表示 す る
例外 を受 け る 例外 を受 け るの 開始
例外 を受 けるの 終 了 例 外 を投 げ る
近 畿大 学 産 業理 工学 部 かや の も り11(2009)
図3一 般 的な タ ス ク 図4処 理:表 示 す る 図5処 理:計 算 す る 図6処 理:代 入 す る
26
本 項 で は30種 類 あ る処 理 の う ち 使 用 頻 度 の 高 い 「表 示 す る 」、 「計 算 す る 」、 「代 入 す る 」、 「条 件 式 」、 「繰 り返 し 文 」、そ し てJava言 語 と して 特 徴 的 な 「例 外 処 理 」 に つ い て 説 明 す る 。
2.3。1一 般 的 な タ ス ク の 描 き 方
タ ス ク を デ ー タ と 処 理 を含 め て 描 く と 図3の よ うに な る。 図3は 複 数 の 変 数 デ ー タ(入 カ デ ー タ1、 入 力 デ ー タ 2)を 使 っ た 処 理 を 行 い 、 値 デ ー タ(出 カ デ ー タ)を 出 力 す る タ ス ク を 表 して い る 。 こ の 一 般 形 を べ 一 ス に 個 々 の 処 理 に よ っ て 入 力 や 出 力 が 変 化 す る 。
2.3.2表 示 す る
処 理 「表 示 す る 」 は 文 字 列 や 変 数 の 値 を 標 準 出 力 へ 出 力 す る 処 理 で あ る 。 図4は 文 字 列(値 デ ー タ)と 変 数 num(変 数 デ ー タ)を 受 け 取 り表 示 す る 因 果 マ ッ プ の 例 で あ る。 図4か ら 得 ら れ る 具 体 的 な コ.̲̲.ドは 、C言 語 で は
「printf("文字 列%d",n㎜);」 、Java言 語 で は 「Systern.out.
print("文 字 列"+num);」 に な る。
プ ロ グ ラ ム 課 題 に お い て 結 果 を 表 示 し た り 、 入 力 促 進 メ ッ セ ー ジ を 表 示 した り と 頻 繁 に 使 わ れ る 処 理 で あ る 。 2.3.3計 算 す る
処 理 「計 算 す る 」 は 変 数 デ ー タ 同 士 又 は 値 デ ー タ 同 士 又 は そ れ ら 両 方 を 使 い 、 処 理 に 指 定 し た 計 算 式 を 実 行 す る 処 理 で あ る 。 図5は 変 数sum(変 数 デ ー タ)と 変 数 n㎜(変 数 デ ー タ)を 受 け 取 り指 定 され た 計 算 式 「A+B」
を 計 算 し 、 計 算 結 果 を 値 デ ー タ と し て 出 力 す る 因 果 マ ッ プ の 例 で あ る 。 図5か ら 得 ら れ る 具 体 的 な コ ー ドはC言 語 、Java言 語 共 に 「sum+n㎜ 」 に な る 。
指 定 す る 計 算 式 の 書 式 は 入 力 デ ー タ の 順 番 に 「A,B, C̲Z」 と し、 演 算 子 は そ の ま ま 記 述 す る 。
2.3.4代 入 す る
処 理 「代 入 す る 」は 入 カ デ ー タ1へ 入 力 デ ー タ2を 代 入 す る 処 理 で あ る 。 図6は 変 数sum(変 数 デ ー タ)と 変 数 num(変 数 デ ー タ)を 受 け 取 り変 数s㎜ へ 変 数numを 代 入
す る 因 果 マ ッ プ の 例 で あ る 。 図6か ら 得 ら れ る 具 体 的 な コ ー ドはC言 語 、Java言 語‑ーに 「sum=num;」 に な る 。
処 理 「計 算 す る 」 で は 計 算 を 行 い 結 果 を 出 力 す る だ け な の で そ の ま ま で は 結 果 を 変 数 に 代 入 す る こ と は で き な い 。 そ の よ う な 場 合 、 処 理 「代 入 す る 」 を 使 い 計 算 結 果 を 変 数 デ ー タ へ 代 入 す る こ とが で き る。
2.3.5条 件 文
条 件 文 はif文 を 実 現 す る 処 理 で あ る 。 因 果 マ ッ プ で 描 く場 合 に は 図7の よ うに 、 処 理 「条 件 ブ ロ ッ ク の 開 始 」、
「条 件 ブ ロ ッ ク 」、 「条 件 ブ ロ ッ ク の 終 了 」の3つ の 処 理 を 繋 げ て 描 く こ と で 表 現 す る 。 図7か ら得 られ る 具 体 的 な コ ー ドはC言 語 、Java言 語 共 に 「if(sum>100){〃 条 件 ブ ロ ッ ク の 処 理}」 に な る 。
条 件 文 は 複 数 の タ ス ク が 一 組 と な り実 現 して い る。 条 件 式 の 書 式 は 処 理 「計 算 す る 」 の 計 算 式 の 書 式 と 同 じ で
あ る 。
2.3。6繰 り 返 し文
繰 り返 し 文 を 実 現 す る 処 理 で あ る。 因 果 マ ッ プ で 描 く 場 合 に は 図8の よ う に 、 処 理 「繰 り返 し ブ ロ ッ ク の 開 始 」、
「繰 り 返 し ブ ロ ッ ク 」、 「繰 り返 しブ ロ ッ ク の 終 了 」の3つ の 処 理 を 繋 げ て 描 く こ と で 表 現 す る。 図8の よ うに3つ の 処 理 で 構 成 さ れ て い る場 合 は 、while文 に な り、 図9の
よ う に 、 処 理 「繰 り返 し ブ ロ ッ ク の 開 始 」、 「初 期 化 式 」、
「繰 り返 し ブ ロ ッ ク 」、 「繰 り返 し式 」、 「繰 り返 しブ ロ ッ ク の 終 了 」 の5つ の 処 理 を 繋 げ て 描 か れ て い る 場 合 はfor 文 に な る。 図8か ら得 ら れ る 具 体 的 な コ ー ドはC言 語 、 Java言 語 共 に 「while(s㎜>100){//り 返 しブ ロ ッ ク の 処
理}」 に な り、図9か ら得 られ る 具 体 的 な コー ドはC言 語 、 Java言 語 共 にrfor(inti=0;i<100;i++){〃 繰 り 返 し ブ
ロ ッ ク の 処 理}」 に な る 。
「繰 り返 しブ ロ ッ ク の 開 始 」、 「繰 り返 しブ ロ ッ ク 」、 「繰 り返 しブ ロ ッ ク の 終 了 」の3つ の タ ス ク は ど ち ら も 共 通 し て い る が 、 「初 期 化 式 」 も し く は 「繰 り返 し 式 」 ど ち らか
躍 炉噛 変数蜘"
嚢錘ダータ'撫 繊
条件 ブロ ックの開 始 A>100
条件 ブロック
処理
条件 ブロ ックの終 了
漉へ'欄.
r寂 数㎜
笈数 デー タ 無 ・麟"
罎 リ返 しブロ ソクの 開始 A>100
繰リ返 しブロック
処理
繰リ返しプロノクの終了
図7処 理:条 件 文 図8処 理:繰 り返 し文(while)
一 方 が 指 定 され て い る場 合 自動 的 に の繰 り返 し文 とな る。
2.3.7例 外 処 理
メ ソ ッ ドが 例 外 を送 出 した場 合 にそ れ ら を受 け 取 る処 理 で あ る。 因 果 マ ップ で描 く場 合 に は 図10の よ うに、例 外 を送 出す る対 象 の タス ク か ら矢 印 を伸 ば し、例 外 の種 類 ご とに処 理 「 例 外 を受 け るの 開始 」 、 「 例 外 を受 け る」、
「 例 外 を受 け る の終 了」 の3つ の処 理 をつ げ て描 く こ と で表 現 す る。
受 け取 る例 外 の数 だ け矢 印 を伸 ば し例 外 を受 け る必 要 が あ る。
2.4デ ー タ に 従 属 す る デ ー タ と処 理
2.22.3で は デ ー タ と 処 理 の 基 本 的 な 描 き 方 に つ い て 述 べ た 。 本 項 で は デ ー タ と 処 理 が デ ー タ に 従 属 し て い る 場 合 の 描 き 方 に つ い て 説 明 す る 。
2.4.1デ ー タ に 従 属 す る デ ー タ
図11は あ る デ ー タ に 従 属 す る 時 の デ ー タ で あ る。
デ ー タ の 隣 に 従 属 元 の デ ー タ を 指 定 す る 。 た と え ばJava 言 語 で 、 あ る ク ラ ス の プ ロ パ テ ィ を 利 用 す る 場 合 な ど が
こ れ に 当 た る 。
2.4zデ ー タ に 従 属 す る タ ス ク
図12は あ る デ ー タ に 従 属 す る 時 の タ ス ク で あ る。 処 理 の 隣 に 従 属 元 の デ ー タ を 指 定 す る 。 た と え ばJava言 語 で 、 あ る ク ラ ス の メ ソ ッ ドを 呼 び 出 す 場 合 な ど が これ に 当 た る 。
図9処 理:繰 り返 し文(for)
始開のるけ受を外例 ー るけ受を外例 ︑ノー理‑処
1
了終のるけ受を外例1
理処る}﹂起の外例/\
図10処 理:例 外 処 理
'デ ー タ に 従 属 す る タ ス ク ー 、
3デ ー タ 状 態 の 変 化
2.2で デ ー タ状 態 に つ い て 述 べ た が 、 そ れ ら デ ー タ 状
図11デ ー タ に 従 属 す る デ ー タ 図12デ ー タ に従 属 す る タ ス ク
態 の変 化 につ い て くわ し く説 明 す る。 通 常 デ ー タ状 態 の 変 化 は処 理 に よ り標 準 の動 作 が 決 ま って い る。 た とえ ば 処 理 「 代 入 す る」の場 合 、2っ の入 カ デ ー タ の うち1つ 目 の入 カ デ ー タは代 入 され る側 の デ ー タで 、 デー タ状 態 は 状 態 が 「 値 が 変化 」、使 用 が 「 未 使 用 」 、確 認 が 「 未確 認 」 に変 化 す る。2つ 目の 入 カ デ ー タは 代 入 す る側 の デ ー タ で 、 デ ー タ状 態 は使 用 が 「 使 用 中 」 に 変化 す る。 この よ うに 処理 ご とにそ れ ぞ れ 標 準 の 変 化 が あ る が 、作 図 者 が この標 準 の変 化 とは別 に 個 々 の デ ー タ に対 して デ ー タ状
2
28
近 畿大 学 産 業理 工学 部 かや の も り11(2009)
図13デ ー タ状態 の変 化 図14起 動 条件
態 の 変 化 を起 こす こ と も可能 で あ る。 特 に状 態 の 「 値 が 確 定 」、使 用 の 「 使 用 済 」、確 認 の 「 確 認 済」 につ い て は 作 図 者 が 意 図 的 に デ ー タ の変 化 を起 こ さな い と標 準 の 変 化 で は 起 こ らな い よ うに な っ て い る。
図13は デ ー タ状 態 の 変 化 の あ る タ ス ク を表 した 因 果 マ ップ で あ る。 状 態 変 化 フ ィー ル ド内 で状 態 の変 化 を列 挙 し、 各状 態 の変 化 にデ ー タ を入 力す る こ とで タス ク後 に、 個 々 のデ ー タの 状態 を変 化 させ る こ とが で き る。
4起 動 条件
起 動 条件 は最 終 的 に描 か れ た 因果 マ ップ 内の タス ク同 士 を どの よ うな順 序 で 繋 ぎ合 わせ る か を決 定 す る重 要 な 機 能 で あ る。 プ ロ グ ラ ミン グに お い て 、処 理 問 に前 後 し て は な らな い順 序 が 存 在 す る こ とが 多 くみ られ る。 た と え ば 、合 計 か ら平 均 値 を求 め る問題 の場 合 、 合 計 値 と入 力 した デー タ の個 数 が 確 定 して い な い の に平 均 値 を 出す 計 算 は行 うこ とが で きな い。 この場 合 必 ず 先 に 合 計値 を 求 め る処 理 を行 い 、 合 計値 とデ ー タ の個 数 が 確 定 す る こ とが平 均 値 を求 め る前 提 条 件 とな る。
こ の よ うな処 理 の 順 序付 け の根 拠 と して 、 因 果 マ ップ で は処 理 の結 果 をデ ー タ状 態 の変 化 、 処 理 の 起 こる原 因 を起 動 条 件 と して 表 現す る こ とで タ ス ク問 の 柔 軟 な繋 が りを実 現 して い る。
図14は 起 動 条 件 の あ る タ ス ク を表 した 因 果 マ ップ で あ る。 起 動 条 件 フ ィール ド内 で起 動 条 件 を列 挙 し、各 起 動 条 件 にデ ー タを 入 力す る こ とで この タス クを起 動 させ
る条 件 を指 定す る こ とが で き る。
5因 果 マ ップ の例 と 自動 生 成 ソフ トウ ェ ア
本 学 部 情 報 学 科 「オ ブ ジ ェ ク ト指 向 プ ログ ラ ミン グ」
で使 わ れ て い る 問題 か ら課題12‑1に つ い て 実 際 に作 成 し た 因果 マ ップ と因果 マ ップか ら 自動 生 成 した プ ロ グ ラ ム を確 認 し、課 題 の仕 様 か ら解 の生 成 につ い て検 証 す る。
現 在 の ソ フ トウェ ア に は因 果 マ ップ の 作 図機 能 が な い た め、 因 果 マ ップ と等 価 なプ ロ グ ラム を 手 入 力 で記 述 しそ のプ ロ グラ ム を実 行 す る必 要 が あ る。
5.1オ ブ ジ ェ ク ト指 向 プ ロ グ ラ ミ ン グ 課 題12‑1 5.1.1問 題
2つ の 例 外 ク ラ スCarException1、CarException2、Car
ク ラ ス 、TestCaxExceptionク ラ ス を 作 成 し な さ い 。 各 ク ラ ス の 仕 様 は 次 の 通 り で あ る 。
● ク ラ ス:CarException1 一 親 ク ラ ス:Exception
● ク ラ ス:CarException2 一 親 ク ラ ス:Exception
● ク ラ ス:Car
一 イ ン ス タ ン ス 変 数
*intnum;〃 車 の ナ ン バ ー
*doublegas;〃 ガ ソ リ ン 量 一 コ ン ス ト ラ ク タ:引 数 な し
、 処 理 な し 一 イ ン ス タ ン ス メ ソ ッ ド
*voidsetCar(intn,doubleg)
・ 例 外:CarException1
,CarException2
・ 弓i数1:intn
・ 引 数2:doubleg
・nとgで 、numとgasを 設 定 。 そ の 際 、n㎜
が4桁 の 数 で な い 場 合 に は 、CarException1を 送 出 。gasが 負 の と き に は 、CarException2を 送 出 。
*voidshow()
・ 引 数 な し
・numとgasを 表 示。
● ク ラ ス:TestCarException
‑mainメ ソ ッ ドで 行 う こ と:
①Carオ ブ ジ ェ ク トcarを 作 成
②setCarを 使 い 、 車 の ナ ン バ ー と ガ ソ リ ン 量 を そ れ ぞ れ 、12345と56.7に 設 定
③ 例 外CarException1を 受 け 取 り 、 エ ラ ー メ ッ セ ー ジ の 表 示
④setCarを 使 い 、 車 の ナ ン バ ー と ガ ソ リ ン 量 を そ れ ぞ れ 、1234と 一56.7に 設 定
⑤ 例 外CarException2を 受 け 取 り 、 エ ラ ー メ ッ セ ー ジ の 表 示
⑥setCarを 使 い 、 車 の ナ ン バ ー と ガ ソ リ ン 量 を そ れ ぞ れ 、1234と56.7に 設 定
⑦showを 使 い 、 車 の 状 態 を 表 示 一 実 行 例:
車 の ナ ン バ ー が 不 正 で す 。
初 級 プ ロ グ ラ ミ ング教 育 にお け る支 援 シ ステ ムに 関 す る研 究 〜 因果 マ ップ か らJavaソ ー ス の 自動 生 成 につ い て 〜
2::
uov馴ω
撫1
。9n灘 轟 抽
轍 鱒
暫旙7樋"7葦 仲
(5
メノンド辱【F出し
③ 蜘
盈る駒
㌔鞍
翠塾o「
凱壕
訟 メソ7ト噂σ出し
5ε血o 代入する メソ7ド呼U出し
轍⊂切
:〉;,,
例外を愛けるのO
C御 ㎝1 "舛琳 ナるの属麹
c繍 順1 例外ξ受けるの躍紬
ζ帥1
例外董愛けるの闘鋤
⊂血 叩伽oi
例外を受ける 例外を愛ける 例外を受ける 例外を受ける
ρ
寓審殉9パー炉石 τ 癖彌
P暑'バ ーが τ 糊
「̀,,̀一 で 「轟o.'亀Yid一炉 で
表 示 す る
「嵐
表示する 表示する 表示する
例界を愛けるの降了 f‑91i畳けるo浸了 働 を畳けるの縫了 例nesuaの 凝了
LE 94
噸 農酬 麹 物 溜 肌
置
謹 るす示表
例外脅愛けるの壕了
"臨 認轡
例外を受ける
.., ̲a.
表示する
偶外を凱ナるの終了
図15課 題12‑1因 果 マ ッ プ(mainメ ソ ッ ド)
Car
輿
脇蔀︑'
1 醐陸"メー 齢随"メ 1 齢陸"メ見認 るす示表 盤蟹鵬貯陸"メ
タρ︑願脚クラトスンコ OWO曲 聾
㍊
駿口 舗 轍誓
setCarQ
野 。,
メソッドを聞蛤
条件ブロック
灘 舗
磁鐸壇:」}最 件フロ7クの漣了
駅 圃"
穏
㌘翼 舳謡
膿
璋邸
臼腓の発生 例昇の発生 メソッドを鰹了
く郡t回
澱
繍 プロ7クのO Aく0.0
条件ブロ ック
朧鍛
纈置¢ 鷺2壽確91鍾仔プロ7クの腰7
t65wTsw e
21
図7b課 題12‑1因 果 マ ッ プ(Carク ラ ス)
ガ ソ リ ン 量 が 不 正 で す 。 車 の ナ ン バ ー は1234で す 。 ガ ソ リ ン 量 は56,7で す 。 丘1.2因 果 マ ッ プ
課 題12‑1を 因 果 マ ッ プ で 描 く と 図15、 図16の よ うに な る。
課 題12.1はmainで 行 う こ と が 順 序 立 て て 指 定 され て お り、 処 理 間 に 明 確 な 因 果 関 係 が な い 。 こ の よ うな 課 題 の 場 合 図15の よ う に タ ス ク の 上 部 に 起 動 順 番 を 与 え る
こ と で 順 番 通 り に 処 理 を 繋 ぐ こ と が で き る 。 起 動 番 号 を 与 え た タ ス ク と 起 動 条 件 に よ っ て 起 動 す る タ ス ク は 因 果 マ ッ プ 内 で 混 在 させ る こ と が 可 能 で あ る 。
5.1.3プ ロ グ ラ ム
図17、 図18、 図19、 図20は 因 果 マ ッ プ を 手 入 力 で オ ブ ジ ェ ク ト化 し、 そ こ か ら 自動 生 成 した 解 の プ ロ グ ラ ム で あ る 。
5.1.4考 察
生 成 さ れ た プ ロ グ ラ ム 図17を 実 行 す る と課 題 を 満 た
近 畿大 学 産 業 理 工学 部 かや の も り11(2009)
30
1:publi(classText⊂arEx(:eption{
2:publicstaticvoidmain(Stringargsp){
3:doublegas=0.0;
4:Carcar=null;
5:intnum=0;
6:car=newCar();
7:try{
8:car.setCar(12345,56.7);
9:}catch(CarExceptionle){
10:System.ot.println("車 の ナ ン バ ー が 不 正 で す 。");
11:}catch(CarException2e){
12:System.ot.println("ガ ソ リ ン 量 が 不 正 で す 。 °);
13:}
14:try{
15:car.setCar(1234,‑56.7);
16:}catch(CarExceptionle){
17:Sy5tem.ot.println("車 の ナ ン バ ー が 不 正 で す 。'「);
18:}catch(CarException2e){
19:Systems)t.println〔"ガ ソ リ ン 量 が 不 正 で す 。1');
20:}
21:try{
22:car.setCar(1234,56.7);
23:}catch(CarExceptionle){
24:Sytem.ot.println("車 の ナ ン バ ー が 不 正 で す 。"L 25:}catch(CarException2e){
26:System.ot.println("ガ ソ リ ン 量 が 不 正 で す ♂ 「);
27:}
28:car.showp;
29:}
30:}
図17課 題12‑1プ ロ グ ラ ム1丁es†CarExceptionク ラ ス)
した動 作 をす る。 ま た 、例 外 処 理 の課 題 はJavaを 学 ぶ学 習 者 に とって 難 解 な 課題 で あ り、 これ らの 処 理 が どの よ うに起 こ る のか が 因 果 マ ップ に よ り見 え るの で 理解 が容 易 に な る。 この 課題 の 出題 者 の意 図 に 「 例 外 処理 の動 作 確 認 を行 う」 こ とが あ る た め 図や 解 に冗 長 な 部 分 がみ ら れ 、 タス ク問 の 繋 が りに 明確 な意 図 が な い よ うな練 習 課 題 に よ く あ る タイ プ で も因果 マ ップ で 表 現 で き る こ とが 確 認 で きた。
1:publicclassCarExceptionlextendsException{
z:}
図18課 題12‑1プ ロ グ ラ ムIC(】rExcep†ion1ク ラ ス)
1:publicclassCarExceptionlextendsException{
z:}
図19課 題]2‑]プ ロ グ ラ ム(CarExcep†ion2ク ラ ス)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 77 18 19 zo 21 22
publicclassCar{
privatedoublegas=0.0;
privateintnum=0;
publicCar(」{
}
publicvoidshow(){
System.out.println("車 の ナ ン バ ー は"+num+"で 、 ガ ソ リ ン 量 は"
+ga5+"リ ッ トル で す 。 ㌦ }
publicvoidsetCar(intn,doubleg) throwsCarExceptionl,CarException2{
num=n;
gas=g;
if(num<100011num>=9999){
thrownewCarException1();
} if(gas<0.0){
thrownewCarException2();
}り } }
図20課 題12‑1プ ロ グ ラ ム(Carク ラ ス)
6ま とめ
我 々 は初 等 の プ ロ グ ラ ミン グ教 育 にお け る知 的CAIシ ステ ムの 構 築 を 目指 し、 プ ロ グ ラム 課 題 の仕 様 化 とプ ロ グ ラ ミン グ にお け る常識 と知 識 を表 現 す る方 法 と して 因 果 マ ップ を提 唱 した。 因果 マ ップ は 複 数 の タ ス ク か ら成 り、タ ス クは 複 数 の入 力 と出 力 、1つ の処 理 とい う基 本 構 成 をべ 一 ス に 、柔 軟 な繋 が りを持 た せ るた め タ ス ク後 に 起 き るデ ー タ状 態 の変 化 、 タス ク同 士 を繋 ぐ根 拠 と な る 起 動 条 件 を 同 時 に描 こ とが で き る。 こ ら らの仕 様 に よ り 学 習者 に よ っ て異 な るプ ログ ラ ム に も柔 軟 に 対応 がで き、
ま た デ ー タ の流 れ を容 易 につ か む こ とが で き る た めプ ロ グ ラ ミン グ教 育 にお い て とて も有 用 で あ る こ とを示 した。
そ して 、 実際 に本 学 部 情 報 学 科 「 オ ブ ジ ェ ク ト指 向 プ ロ グ ラ ミ ング」 で使 わ れ て い るプ ログ ラ ム課 題 を用 い て 因果 マ ップ を描 き 、そ こか らプ ログ ラ ム を 自動 生 成 で き る こ とを確 認 した。 これ に よ りプ ログ ラ ム課 題 を仕 様 化 し解 を得 る とい う方 向 に っ いて は完 成 した もの とす る。
今 後 は 因果 マ ップ の 作 図機 能 と解 か らプ ロ グ ラム 課題 の仕 様 を得 て因 果 マ ップ に す る 方 向 につ いて 研 究 を行 っ て い く予 定 で あ る。
参 考 文 献
[1]堀 内 幸 造 、 長 田 一 興
モ バ イ ル エ ー ジ ェ ン ト技 術 を 用 い た 教 育 支 援 シ ス テ ム ー 常 駐 ア プ リケ ー シ ョ ン に よ る キ ー ボ ー ドデ ー タ の 収 集 一
近 畿 大 学 産 業 理 工 学 部 研 究 報 告,VbLO2,pp。1‑7,2004 [2]堀 内 幸 造 、 長 田 一 興
初 級 プ ロ グ ラ ミ ン グ 教 育 に お け る 支 援 シ ス テ ム に 関 す る 研 究 〜 因 果 マ ッ プ を 利 用 す る仕 様 の 定 義 〜 近 畿 大 学 産 業 理 工 学 部 研 究 報 告,Vo1,03,pp.21‑26,2005 [3]堀 内 幸 造 、 長 田 一 興
初 級 プ ロ グ ラ ミ ン グ 教 育 に お け る 支 援 シ ス テ ム に 関 す る 研 究 〜 因 果 マ ッ プ を 利 用 し た プ ロ トタ イ プ に つ
い て の 考 察 〜
近 畿 大 学 産 業 理 工 学 部 研 究 報 告,Vol.04,pp.27‑32,2006 [4]堀 内 幸 造 、 長 田 一 興
プ ロ グ ラ ミ ン グ に お け る も の の 見 方 と常 識 に つ い て 近 畿 大 学 産 業 理 工 学 部 研 究 報 告,Vo1.05,pp.45‑49,2006