論理思考とプログラミング 第9回

  • 371 views
Uploaded on

 

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
371
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 論理思考とプログラミング#09
    清水智公
    chiko at sfc.keio.ac.jp
    1
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 2. 一定期間で消えるようにしよう
    一定期間
    経つと
    2
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 3. 円を二つにしてみよう
    今のもの
    円は二つ以上描ける
    消えるタイミングは一緒
    改良後
    描ける円は二つ
    消えるタイミングは別
    3
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 4. 変数を宣言しよう
    4
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 5. 変数の役割
    5
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 6. 実行してみよう
    6
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 7. 3つの円を・・・
    もう勘弁してください
    7
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 8. 同じような処理はまとめたい
    二つの円を表すのに使った変数
    位置(x1, y1とx2, y2)
    大きさ (r1とr2)
    生存期間(ttl1とttl2)
    円を描く処理
    徐々に消していく処理
    8
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 9. クラスにまとめましょう
    9
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 10. クラス?
    変数の型
    構成要素
    状態を表すいくつかの変数
    状態に基づいて動くいくつかのメソッド
    10
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 11. クラスの定義
    11
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 12. クラスの定義
    12
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
    “class” から始まる
  • 13. クラスの定義
    13
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
    “class” から始まる
  • 14. クラスの定義
    14
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
    クラスの名前
  • 15. クラスの定義
    15
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
    ここに構成要素を列挙
  • 16. 変数を追加しよう
    16
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 17. クラスを使って変数を宣言しよう
    17
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 18. 実際の値を代入しよう
    ・・・値?
    18
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 19. 円を作ってc1, c2に代入
    19
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 20. Circleとc1, c2との関係
    Circle :クラス
    「円とは何か」
    定義
    c1, c2 :オブジェクト
    一つ一つの円
    クラスによって定義される具体的なもの
    20
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 21. 値を使ってみよう
    21
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 22. がんばって置き換えよう
    22
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 23. がんばって置き換えよう
    23
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 24. Edit -> Find
    24
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 25. 動かしてみよう
    25
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 26. AとBはほとんど一緒の処理
    A
    B
    26
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 27. クラスの中にまとめよう
    メソッドとしてまとめる
    名前を決める
    クラス定義の中に書く
    27
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 28. まとめてみた
    28
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 29. 書いた場所
    29
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 30. 使ってみよう
    30
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 31. drawの中での処理
    C
    D
    31
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 32. まとめよう
    2009.12.10
    論理思考とプログラミング #09 N.Shimizu
    32
  • 33. 書いた場所
    33
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 34. 呼び出す
    2009.12.10
    論理思考とプログラミング #09 N.Shimizu
    34
  • 35. 実行してみよう
    35
    論理思考とプログラミング #09 N.Shimizu
    2009.12.10
  • 36. じわじわと消えるようにしよう
    ttlの値に応じてじわじわ消える
    E.g.
    最初の1秒はくっきりうつる
    次の1秒は少し薄くなる
    最後の1秒はさらに薄くなる
    ttlが0の時に消える
    2009.12.10
    論理思考とプログラミング #09 N.Shimizu
    36
  • 37. 私の実装
    2009.12.10
    37
    論理思考とプログラミング #09 N.Shimizu
  • 38. まだメソッドにまとめられます
    2009.12.10
    38
    論理思考とプログラミング #09 N.Shimizu
  • 39. どうまとめられるの?
    どの部分も円を消している
    違い:消える程度
    fill(0, 0, 0, 255);
    fill(0, 0, 0, 60);
    この違いを吸収できればまとめられる
    2009.12.10
    39
    論理思考とプログラミング #09 N.Shimizu
  • 40. 引数をつかおう
    引数
    メソッドを実行する時に渡す値
    渡される値は名前を持つ
    メソッド内では変数として扱える
    メソッドが動くときのパラメータ
    2009.12.10
    論理思考とプログラミング #09 N.Shimizu
    40
  • 41. どういうメソッドにするか考える
    メソッドの役割
    名前
    内部で行う処理
    引数
    数、名前、型
    役割
    2009.12.10
    41
    論理思考とプログラミング #09 N.Shimizu
  • 42. 今回
    メソッドの役割
    名前
    引数
    数、名前、型
    役割
    2009.12.10
    42
    論理思考とプログラミング #09 N.Shimizu
  • 47. 実装してみた
    2009.12.10
    43
    論理思考とプログラミング #09 N.Shimizu
  • 48. &&
  • 49. 条件分岐の意味
    不透明率が0%〜100%
    であることを保証している
  • 50. 呼び出してみよう
  • 51. 実引数と仮引数
    仮引数
    実引数
  • 52. 円を3つに増やしてみよう
  • 53. 簡単じゃね?
    変数を3つにふやして
    setupメソッドの中で、代入して
    drawメソッドでupdateメソッドを呼んで
    mouseReleased()メソッドでsetPosition()メソッドを呼んだらいいんでしょ?
    あ?ttlが一番小さいものを探さなきゃ
  • 54. ttlが一番小さいものを探す
    戦略1:if文を駆使してがんばる
    pros 今知っている知識で実現可能
    cons 条件式が複雑になる
    戦略2:円の集まりをつくる
    pros 最小値の探し方が単純になる
    cons 「円の集まり」の作り方をしらない
  • 55. 配列で「集まり」を実現しよう
  • 56. 配列は同じ型の変数の集まり




    配列
  • 57. 各変数のことを要素と呼びます
    要素
    要素
    要素
    要素




    配列
  • 58. 配列内での位置があります
    0番目
    3番目
    1番目
    2番目




    配列
    2009.12.10
    54
    論理思考とプログラミング #09 N.Shimizu
  • 59. 配列には長さがあります




    長さ4の配列
    2009.12.10
    55
    論理思考とプログラミング #09 N.Shimizu
  • 60. 配列の長さは変わりません




    長さ4の配列
    2009.12.10
    56
    論理思考とプログラミング #09 N.Shimizu
  • 61. 配列も一つの変数です




    配列
    2009.12.10
    57
    論理思考とプログラミング #09 N.Shimizu
  • 62. 配列を宣言しよう
    2009.12.10
    58
    論理思考とプログラミング #09 N.Shimizu
  • 63. 配列の長さを決めよう
    ココ
    2009.12.10
    59
    論理思考とプログラミング #09 N.Shimizu
  • 64. 各要素に代入しよう
    ココ
    2009.12.10
    60
    論理思考とプログラミング #09 N.Shimizu
  • 65. drawメソッドを書き換えよう
    2009.12.10
    61
    論理思考とプログラミング #09 N.Shimizu
  • 66. こういう風にも書けるよ
    配列の長さ
    2009.12.10
    62
    論理思考とプログラミング #09 N.Shimizu
  • 67. mouseReleasedメソッドを書き換えよう
    2009.12.10
    63
    論理思考とプログラミング #09 N.Shimizu
  • 68. これは、なに?
    circlesの中からttlの最も少ない円を探して、
    その位置を返すメソッド
    2009.12.10
    64
    論理思考とプログラミング #09 N.Shimizu
  • 69. 返す?
    メソッドの呼び出す側
    これまで仕事を頼みっぱなし
    結果を知りたい
    返す:結果を呼び出し側に知らせること
    返り値:メソッドの仕事の結果
    2009.12.10
    65
    論理思考とプログラミング #09 N.Shimizu
  • 70. メソッド呼び出し
    メソッドB
    メソッドA
    呼び出し
    2009.12.10
    66
    論理思考とプログラミング #09 N.Shimizu
  • 71. findOldestCircleメソッド
    2009.12.10
    67
    論理思考とプログラミング #09 N.Shimizu
  • 72. return 文で値を返す
    ココ
    2009.12.10
    68
    論理思考とプログラミング #09 N.Shimizu
  • 73. 返り値にも型がある
    返り値の型
    2009.12.10
    69
    論理思考とプログラミング #09 N.Shimizu
  • 74. これまでのメソッド
    返り値がないことを表す
    2009.12.10
    70
    論理思考とプログラミング #09 N.Shimizu
  • 75. 実行してみよう
    2009.12.10
    71
    論理思考とプログラミング #09 N.Shimizu
  • 76. findOldestCircleを実装しよう
    引数はなし
    circlesの中でttlが一番少ないものを探す
    見つけたものの位置を返す
    返り値の型はint
    2009.12.10
    72
    論理思考とプログラミング #09 N.Shimizu
  • 77.
    2009.12.10
    73
    論理思考とプログラミング #09 N.Shimizu
  • 78. メソッドの中での変数宣言
    ココ
    2009.12.10
    74
    論理思考とプログラミング #09 N.Shimizu
  • 79. メソッドの中でのみ有効
    他のメソッドの中では
    使えない
    2009.12.10
    75
    論理思考とプログラミング #09 N.Shimizu
  • 80. 実行してみよう
    2009.12.10
    76
    論理思考とプログラミング #09 N.Shimizu
  • 81. メソッドにする意義
    手続きの抽象化ができる
    使う側が楽
    その仕事を詳しく知る必要がなくなる
    仕事の頼み方と、副作用、結果だけを知っておけば良い
    外注
    2009.12.10
    77
    論理思考とプログラミング #09 N.Shimizu
  • 82. 今日のまとめ
    クラスとオブジェクト
    メソッド
    名前
    引数
    返り値
    2009.12.10
    論理思考とプログラミング #09 N.Shimizu
    78