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

777 views
689 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
777
On SlideShare
0
From Embeds
0
Number of Embeds
102
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. 論理思考とプログラミング#09<br />N. Shimizu<br />chiko at sfc.keio.ac.jp<br />2010.6.10<br />1<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  2. 2. if文:条件分岐<br />if(条件式){<br />条件が成り立っている場合の処理<br />}<br />2010.6.10<br />2<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  3. 3. else if <br />if(A){<br /> B<br />}else if(D){<br /> E<br />}else {<br /> C<br />}<br />AならばB<br />それ以外のとき<br />DならばE<br />それ以外ならばC<br />2010.6.10<br />3<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  4. 4. 問題その1<br />黒地に円を書く<br />塗りはなし<br />上3分の1は赤の円<br />次の3分の1は青の円<br />最後の3分の1は緑の円<br />円の大きさ、位置はランダム<br />2010.6.10<br />4<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  5. 5. 問題その2<br />黒地に円を書く<br />塗りはなし<br />円の大きさ、位置はランダム<br />画面を9分割し、その位置に応じて色を違えること<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />5<br />
  6. 6. 問題その3<br />ランダムに図形を描く<br />正方形もしくは円<br />50%の確率<br />大きさ:20×20<br />ウィンドウサイズは400×400<br />色はランダムに決まる<br />2010.6.10<br />6<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  7. 7. インタラクションを加えてみよう<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />7<br />
  8. 8. インタラクション<br />二つのものがお互いに影響しあうこと<br />相互作用<br />interaction<br />人間とコンピュータプログラム<br />人間の操作がプログラムの振る舞いを変える<br />プログラムが人間の操作を変える<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />8<br />
  9. 9. プログラミングのモデルが変わります<br />今まで:<br />上から順番に実行される<br />フロー駆動型 (flow driven)<br />これから<br />イベントに対応した部分のみ実行される<br />イベント駆動型 (event driven)<br />9<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />2010.6.10<br />
  10. 10. イベント<br />マウスのボタンが押される<br />マウスのボタンが離される<br />キーボードのキーが押される<br />キーボードのキーが離される<br />一定期間が過ぎる<br />10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />2010.6.10<br />
  11. 11. Processingのテンプレート<br />void setup(){<br />}<br />void draw(){<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />11<br />
  12. 12. Processingのテンプレート<br />void setup(){<br />}<br />void draw(){<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />12<br />プログラム起動時に実行してほしいことを書く<br />
  13. 13. Processingのテンプレート<br />void setup(){<br />}<br />void draw(){<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />13<br />一定間隔で実行して欲しいことを書く<br />
  14. 14. プログラムの例<br />float x, y;<br />void setup(){<br /> size(400, 400);<br /> colorMode(RGB, 100, 100, 100, 100);<br /> background(0, 0, 0, 100);<br /> noStroke();<br /> x = 0;<br /> y = 0;<br />}<br />void draw(){<br />x = x + 0.5;<br /> y = y + 0.5;<br /> fill(100, 0, 0, 100);<br /> ellipse(x, y, 20, 20);<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />14<br />
  15. 15. メソッド<br />プログラムの一部分に名前をつけたもの<br />メソッドの宣言:名前をつけること<br />部分の指定:{}で囲む<br />引数と返り値を持つ<br />引数:パラメーター<br />返り値:仕事をした結果<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />15<br />
  16. 16. さっきのプログラムでは<br />void setup(){<br /> size(400, 400);<br /> colorMode(RGB, 100, 100, 100, 100);<br /> background(0, 0, 0, 100);<br /> noStroke();<br /> x = 0;<br /> y = 0;<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />16<br />この範囲に対してsetupという名前をつけた<br />
  17. 17. void setup()<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />17<br />返り値の型<br />名前<br />
  18. 18. void setup()<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />18<br />このメソッドは返り値を返さない<br />
  19. 19. draw: 一定間隔で実行される部分<br />void draw(){<br />x = x + 0.5;<br /> y = y + 0.5;<br /> fill(100, 0, 0, 100);<br /> ellipse(x, y, 20, 20);<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />19<br />
  20. 20. どうなるかやってみよう<br />void draw(){<br /> background(0, 0, 0, 100);<br /> x = x + 0.5;<br /> y = y + 0.5;<br /> fill(100, 0, 0, 100);<br /> ellipse(x, y, 20, 20);<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />20<br />backgroundを足す<br />
  21. 21. フレームレート<br />drawメソッドを呼び出す間隔<br />正確には画面の描画回数<br />FPS (Frame Per Second)<br />frameRate(<フレームレート>)<br /><フレームレート>には正の実数を書く<br />E.g. frameRate(30); と書くと秒間30回実行する<br />21<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />2010.6.10<br />
  22. 22. 名前の有効範囲<br />名前<br />変数:値に名前をつけたもの<br />メソッド:プログラムに名前をつけたもの<br />名前には有効範囲がある<br />スコープ<br />有効範囲外では参照できない<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />22<br />
  23. 23. 有効範囲:{と}の間<br />int a, b;<br />void setup(){<br />intc, d;<br />line(a, b, c, d);<br />}<br />void draw(){<br />ellipse(c, d, 10, 10);<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />23<br />
  24. 24. aとbのスコープ<br />int a, b;<br />void setup(){<br />intc, d;<br />line(a, b, c, d);<br />}<br />void draw(){<br />ellipse(c, d, 10, 10);<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />24<br />
  25. 25. cとdのスコープ<br />int a, b;<br />void setup(){<br />intc, d;<br />line(a, b, c, d);<br />}<br />void draw(){<br />ellipse(c, d, 10, 10);<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />25<br />文法エラー<br />
  26. 26. 修正後<br />int a, b;<br />intc, d;<br />void setup(){<br />line(a, b, c, d);<br />}<br />void draw(){<br />ellipse(c, d, 10, 10);<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />26<br />
  27. 27. 有効範囲<br />void setup(){<br />intr = 20;<br />for(inti = 0; i < 30; i = i + 1){<br /> float x = random(0, width);<br /> float y = random(0, height);<br />ellipse(x, y, r, r);<br /> }<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />27<br />
  28. 28. rの有効範囲<br />void setup(){<br />intr = 20;<br />for(inti = 0; i < 30; i = i + 1){<br /> float x = random(0, width);<br /> float y = random(0, height);<br />ellipse(x, y, r, r);<br /> }<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />28<br />
  29. 29. i, x, yの有効範囲<br />void setup(){<br />intr = 20;<br />for(inti = 0; i < 30; i = i + 1){<br /> float x = random(0, width);<br /> float y = random(0, height);<br />ellipse(x, y, r, r);<br /> }<br />}<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />29<br />
  30. 30. 問題その4<br />動く点を二つに増やしてみよう<br />2010.6.10<br />30<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  31. 31. 問題その5<br />動く点を5つに増やしてみよう<br />2010.6.10<br />31<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  32. 32. クラスでまとめよう<br />クラス:型<br />クラスを定義する:新しい型を定義する<br />構成要素<br />メンバ変数<br />メソッド<br />2010.6.10<br />32<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  33. 33. クラスの定義<br />class クラス名{<br />メンバ変数の宣言<br />メソッドの定義<br />}<br />2010.6.10<br />33<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  34. 34. 動く円のクラスを作ろう<br />class Ball{<br /> float x;<br /> float y;<br />}<br />2010.6.10<br />34<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  35. 35. クラスを使って変数を宣言しよう<br />class Ball{<br /> float x;<br /> float y;<br />}<br />Ball a, b;<br />2010.6.10<br />35<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  36. 36. 代入しよう<br />class Ball{<br /> float x;<br /> float y;<br />}<br />Ball a, b;<br />void setup(){<br /> a = new Ball();<br />b = new Ball();<br />}<br />2010.6.10<br />36<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  37. 37. メンバ変数に代入しよう<br />class Ball{<br /> float x;<br /> float y;<br />}<br />Ball a, b;<br />void setup(){<br /> a = new Ball();<br />b = new Ball();<br />a.x = 0;<br />a.y = 0;<br />b.x = 100;<br />b.y = 200;<br />}<br />2010.6.10<br />37<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  38. 38. 問題その6:drawを実装して動かそう<br />class Ball{<br /> float x;<br /> float y;<br />}<br />Ball a, b;<br />void setup(){<br /> a = new Ball();<br />b = new Ball();<br />a.x = 0;<br />a.y = 0;<br />b.x = 100;<br />b.y = 200;<br />}<br />2010.6.10<br />38<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  39. 39. 問題その7:メンバ変数を増やそう<br />メンバ変数を増やそう<br />増やす変数:移動スピード<br />縦方向<br />横方向<br />増やした変数を使って書きなおそう<br />2010.6.10<br />39<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  40. 40. 問題その8:マウスカーソルを追いかける円<br />mouseX / mouseY<br />宣言しなくても使える変数<br />mouseX<br />mouseY<br />マウスの位置とボールの位置から移動方向と移動量を計算しよう<br />Ballクラスを利用して作成すること<br />2010.6.10<br />論理思考とプログラミング第9回 N.Shimizu <chiko at sfc.keio.ac.jp><br />40<br />

×