Skip to content

Latest commit

 

History

History
94 lines (79 loc) · 4.58 KB

File metadata and controls

94 lines (79 loc) · 4.58 KB

問題の分割と関数設計


  • シラバスの達成目標の6「プログラミングの概念と 設計方法 を理解し, KISS原則 を意識した構造化プログラミング(100行程度)を実践することができる。(小作品制作)」
    • 問い: システムの仕様が提示された時、どのようにシステムを組み上げていけば(プログラミングしていけば)良いだろうか?
      • A1: KISS原則やDRY原則に則って開発する。一度に全体を実装するのではなく、問題を機能単位に分割して個別に仕上げる。
      • A2: 機能を洗い出す。対象知識の無い人に、実装すべき作業をやってもらうにはどう伝えたら(指導したら)良いか検討することで必要な機能を洗い出す。
  • 関連
    • 授業5回目の「取り組み方」
      • (1) 問題を分割する。
        • 分割して分かるところから手を付ける(土台を作る)
        • 分からないところは、更に分割できないか考える
      • (2) 個々のサブ問題を個別に解く。
        • これ以上分割できない≒最小の部品なら、教科書・授業で習っているはず(該当部分を復習)
        • 今回追加: 分割した要素を関数として設計する。(=関数名、入力、出力を検討する)
      • (3) それらの組み合わせ方を考える。
    • 別の視点
      • シラバスの「授業内容と方法」
        • 言語仕様を学ぶだけではなく,「実現したいことを理解し,説明できるレベルまで整理し,コンピュータが処理できる形に翻訳する」というプログラミング開発一連の流れを体験する。
        • いきなりコードを書くのではなく、やりたいタスクを人に説明してみる。(他人にタスクを依頼できるぐらい、やりたいことを理解する必要がある)

  • 下記の書式でオセロの対戦ログが用意されているとする。

    • 書式
      • 1行目: ログファイルに掲載されてる手数。
      • 2行目以降: 1行に1手分の記録が掲載さている。例えば黒が6-5に指した場合「B 6 5」、白が4-6に指した場合「W 4 6」が記録されている。なお、「B 6 5」は「縦6、横5」とする。
    • ログファイルの例
      • 下記log1.txt参照。
    • 補足
      • ログファイルには記載されていないが、プレイ開始時には中央に黒と白が2個ずつ置かれているものとする。
      • ログファイルには「白黒どちらがどこに指したか」しか記録しておらず、白黒反転処理は自前で処理する必要がある。
  • プログラム目標

    • ログファイルを読み込み、勝敗を判定せよ。
  • 初期配置

1 2 3 4 5 6 7 8
1
2
3
4 W B
5 B W
6
7
8
  • ログファイル1(log1.txt)
2
B 6 5
W 4 6
1 2 3 4 5 6 7 8
1
2
3
4 W W W
5 B B
6 B
7
8

  • 考え方の例
    • どんな機能が必要だろうか?
    • オセロを知らない人に、ログファイルからゲームを再現させるにはどうしたら良いだろうか?

  • 授業メモ
    • ホワイトとブラックの数の大小関係を比較する機能が必要。
      • compare_black_white(board)
    • 同じ色で挟んだら、間の部分が反転する機能
    • 間で挟めない場合は、手を打てない(パス)する機能
    • ブラックだったら、ホワイトを挟めるように。ホワイトだったら、ブラックを挟めるようにうつプログラム。
    • 既に置かれている場所に上書きしないプログラム