1 / 25

変数のスコープの設計判断能力 を育成するプログラミング教育

変数のスコープの設計判断能力 を育成するプログラミング教育. 政策・メディア研究科 修士課程 1 年 杉浦 学 manabu@sfc.keio.ac.jp gackt@crew.sfc.keio.ac.jp. 発表の流れ. 本教育の概要 問題意識 教育手法 授業例 まとめ. 1. 本教育の概要. 教育の概要. 変数のスコープについての設計判断能力を育成するための教育 プログラミングの初学者を対象とする 教育手法 HCP チャートからデータ設計を導出する 受講者間でソースコードレビューを行う. 2. 問題意識. 重要と考える能力.

prentice
Download Presentation

変数のスコープの設計判断能力 を育成するプログラミング教育

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 変数のスコープの設計判断能力を育成するプログラミング教育変数のスコープの設計判断能力を育成するプログラミング教育 政策・メディア研究科 修士課程1年 杉浦 学 manabu@sfc.keio.ac.jp gackt@crew.sfc.keio.ac.jp

  2. 発表の流れ • 本教育の概要 • 問題意識 • 教育手法 • 授業例 • まとめ

  3. 1.本教育の概要

  4. 教育の概要 • 変数のスコープについての設計判断能力を育成するための教育 • プログラミングの初学者を対象とする • 教育手法 • HCPチャートからデータ設計を導出する • 受講者間でソースコードレビューを行う

  5. 2.問題意識

  6. 重要と考える能力 • プログラムの設計判断能力 • 構造化プログラミングでいえば • 変数 • メソッド化 • オブジェクト指向プログラミングでいえば • クラス設計

  7. 既存の教育の問題点 • ソースの読解能力のみに注目 • 文法エラーのないプログラムは書けるようになる • どのように変数のスコープを設計するかについては議論されない 図:ブロックについての解説例

  8. 既存の教育の弊害 • 理由のないグローバル変数化 • コンパイルエラーの場当たり的解決 • 結果,動的エラーの原因になる inti=0; ・・・ ・・・ ・・・ ・・・ for(i=0;i<10;i++){ ・・・・・・・ } ソース:イテレーターの変数が局所化されていないソースコードの例

  9. 問題の原因分析 • プログラミングの初学者は, • プログラムを設計せずに実装してしまう • 有効な手法が教育されていない • 必要性の認識が低い • データ設計を効率的に行う手法が教育されない • 変数の型にこだわってしまう • 細かい技術の知識を習得しようとする

  10. HCPチャート • Hierarchical and Compact Description Chart (階層化コンパクトチャート) • NTTで開発された • プログラムの目的を階層化して表現する図法 • 記述された目的はそのままソースのコメントへ • 処理の構造を記述する記号 • 繰り返し • 条件分岐

  11. 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の名前を入力してください"); System.out.print(">>"); System.out.flush(); 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(); }   ・・・・・(以下略)

  12. 3.教育手法

  13. HCPチャートの使用法 • 基本設計はデータを記述しないで行う • チャートを元にデータと使用範囲を導出 • それを設計の指針にする

  14. 設計作業の手順 • HCPチャートを作成する • チャートを見ながら、プログラムに必要かつ重要であると考えられるデータとその目的をピックアップする • チャートの各項目とその目的達成に必要なデータを線で結ぶ • チャートの階層構造を見ながら、各データが必要な範囲を線で囲む

  15. 1.HCPチャートを作成する

  16. 2.データと目的をピックアップする 単語 • アプリケーションに登録されているデータを保存しておくため • 入力されたコマンドを保存しておくため つづり 意味 コマンド

  17. 3.各項目とデータを線で結ぶ

  18. 4.データが必要な範囲を線で囲む

  19. 相互ソースコードレビュー • 内容 • お互いに同じ課題を実装して,議論を行うプラクティス • 効果 • 設計に正解はないという認識を育てる • 様々な可能性を認識する効果 • 相手に理由が説明できることが重要 • 可読性の高いソース作成へのきっかけ

  20. 採用手法の効果とねらい HCPチャート→ • 設計判断のひとつの指針となる • 設計に正解はない • 初学者にとっては指針が必要 • Ex). メソッドのインターフェース設計の指針 ソースレビュー→ • 理由を考えて設計する能力を育成する • グローバル変数にする利点,欠点 • 設計の理由を考えて実装を行うことができる

  21. 4.授業例

  22. 具体的な授業例 • 前提知識 • 仕様書からある程度のHCPチャートが作成できること • 変数の束縛範囲がどうなるかという知識があること • 用意するもの • データ記入演習用のHCPチャート • 課題用のプログラムの仕様書 • 授業展開 • HCPチャートにデータを記入する演習 • 教師が用意したHCPチャートに必要なデータを書き込む • HCPチャートを交換し、生徒同士が意見を交換する(データ設計の理由を述べる) • 自分でデータを設計して実装する演習 • 課題のプログラムを提示し、HCPチャートを作成させる • 自作したチャートに必要なデータを記入する • 実装を行う • 実装過程で、チャートに記入したデータとの関連を変更した場合、その理由を記入させておく。 • 実装した課題のソースを授業の受講者の前でソースコードレビューを行い、(4)で記入しておいた理由を同時に発表させる。

  23. 5.まとめ

  24. まとめ • 設計判断能力を育成する教育 • HCPチャートからのデータの導出 • 初学者にとっては,設計判断の指針が必要 • 相互ソースレビュー • 設計判断の議論が有益

More Related