Download presentation
Presentation is loading. Please wait.
1
変数のスコープの設計判断能力 を育成するプログラミング教育
政策・メディア研究科 修士課程1年 杉浦 学
3
発表の流れ 本教育の概要 問題意識 教育手法 授業例 まとめ
4
1.本教育の概要
5
教育の概要 変数のスコープについての設計判断能力を育成するための教育 プログラミングの初学者を対象とする 教育手法
HCPチャートからデータ設計を導出する 受講者間でソースコードレビューを行う
6
2.問題意識
7
重要と考える能力 プログラムの設計判断能力 構造化プログラミングでいえば オブジェクト指向プログラミングでいえば 変数 メソッド化
クラス設計
8
既存の教育の問題点 ソースの読解能力のみに注目 文法エラーのないプログラムは書けるようになる
どのように変数のスコープを設計するかについては議論されない 図:ブロックについての解説例
9
ソース:イテレーターの変数が局所化されていないソースコードの例
既存の教育の弊害 理由のないグローバル変数化 コンパイルエラーの場当たり的解決 結果,動的エラーの原因になる int i = 0; ・・・ for (i = 0; i < 10; i++) { ・・・・・・・ } ソース:イテレーターの変数が局所化されていないソースコードの例
10
問題の原因分析 プログラミングの初学者は, プログラムを設計せずに実装してしまう データ設計を効率的に行う手法が教育されない
有効な手法が教育されていない 必要性の認識が低い データ設計を効率的に行う手法が教育されない 変数の型にこだわってしまう 細かい技術の知識を習得しようとする
11
HCPチャート Hierarchical and Compact Description Chart (階層化コンパクトチャート)
NTTで開発された プログラムの目的を階層化して表現する図法 記述された目的はそのままソースのコメントへ 処理の構造を記述する記号 繰り返し 条件分岐
12
HCPチャートとソースの例 /** * じゃんけんアプリケーション */ void main() { //アプリケーションの説明をする
//アプリケーションの説明をする System.out.println("じゃんけん♪アプリケーション"); System.out.println("(プレイヤーAの手に0を入力すると終了します)"); //一人目の名前を入力する System.out.println("プレイヤーAの名前を入力してください"); System.out.print(">>"); System.out.flush(); playerNameA = Input.getString(); //二人目のの名前を入力する System.out.println("プレイヤーBの名前を入力してください"); playerNameB = Input.getString(); //じゃんけんをする while (true) { //一人目の手を入力する System.out.println(playerNameA + "さんの手を入力してください"); System.out.println("1.グー, 2.チョキ, 3.パー (0.終了)"); System.out.print(">>"); System.out.flush(); playerHandA = Input.getInt(); //終了コードであるか調べる if (playerHandA == 0) { //終了コードなら break; //アプリケーションを終了する } //相手の手が見えないようにする for (int i = 0; i < 100; i++) { System.out.println(); ・・・・・(以下略)
13
3.教育手法
14
HCPチャートの使用法 基本設計はデータを記述しないで行う チャートを元にデータと使用範囲を導出 それを設計の指針にする
15
設計作業の手順 HCPチャートを作成する チャートを見ながら、プログラムに必要かつ重要であると考えられるデータとその目的をピックアップする
チャートの各項目とその目的達成に必要なデータを線で結ぶ チャートの階層構造を見ながら、各データが必要な範囲を線で囲む
16
1.HCPチャートを作成する
17
2.データと目的をピックアップする アプリケーションに登録されているデータを保存しておくため 入力されたコマンドを保存しておくため 単語
つづり 意味 コマンド
18
3.各項目とデータを線で結ぶ
19
4.データが必要な範囲を線で囲む
20
相互ソースコードレビュー 内容 効果 お互いに同じ課題を実装して,議論を行うプラクティス 設計に正解はないという認識を育てる
様々な可能性を認識する効果 相手に理由が説明できることが重要 可読性の高いソース作成へのきっかけ
21
採用手法の効果とねらい HCPチャート→ 設計判断のひとつの指針となる ソースレビュー→ 理由を考えて設計する能力を育成する
設計に正解はない 初学者にとっては指針が必要 Ex). メソッドのインターフェース設計の指針 ソースレビュー→ 理由を考えて設計する能力を育成する グローバル変数にする利点,欠点 設計の理由を考えて実装を行うことができる
22
4.授業例
23
具体的な授業例 前提知識 用意するもの 授業展開 仕様書からある程度のHCPチャートが作成できること
変数の束縛範囲がどうなるかという知識があること 用意するもの データ記入演習用のHCPチャート 課題用のプログラムの仕様書 授業展開 HCPチャートにデータを記入する演習 教師が用意したHCPチャートに必要なデータを書き込む HCPチャートを交換し、生徒同士が意見を交換する(データ設計の理由を述べる) 自分でデータを設計して実装する演習 課題のプログラムを提示し、HCPチャートを作成させる 自作したチャートに必要なデータを記入する 実装を行う 実装過程で、チャートに記入したデータとの関連を変更した場合、その理由を記入させておく。 実装した課題のソースを授業の受講者の前でソースコードレビューを行い、(4)で記入しておいた理由を同時に発表させる。
24
5.まとめ
25
まとめ 設計判断能力を育成する教育 HCPチャートからのデータの導出 相互ソースレビュー 初学者にとっては,設計判断の指針が必要
設計判断の議論が有益
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.