Successfully reported this slideshow.

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

704 views

Published on

Published in: Education
  • Be the first to comment

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

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

×