論理思考とプログラミング2010年度秋学期第11回

950 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
950
On SlideShare
0
From Embeds
0
Number of Embeds
164
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

論理思考とプログラミング2010年度秋学期第11回

  1. 1. 論理思考とプログラミング #11<br />N. Shimizu<br />chiko@sfc.keio.ac.jp<br />2010.12.16<br />1<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  2. 2. 先週の内容<br />変数のスコープ<br />名前の有効範囲<br />宣言されたブロックの中で有効<br />メソッドを宣言する<br />処理をまとめて名前をつける<br />名前、引数、メソッド<br />2010.12.16<br />2<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  3. 3. メソッド宣言の例<br />2010.12.16<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />3<br />
  4. 4. 今日の内容<br />アニメーション<br />音の再生<br />ライブラリの利用<br />オブジェクト指向<br />2010.12.16<br />4<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  5. 5. アニメーションの原理<br />http://ja.wikipedia.org/wiki/ファイル:Animexample3.png より引用<br />2010.12.16<br />5<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  6. 6. drawメソッド<br />1フレームごとに呼び出されます<br />アニメーションを実現するには、次の処理をdrawメソッドで行います<br />前のフレームを消す<br />今のフレームの絵を描く<br />2010.12.16<br />6<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  7. 7. 前のフレームの絵を消す<br />背景色で塗りつぶせば消せます<br />タイミング:今のフレームの絵を描く前<br />drawメソッドの先頭で行うと良い<br />背景色で塗りつぶす方法<br />rect(0, 0, width, height);<br />background(0, 0, 0);<br />2010.12.16<br />7<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  8. 8. 簡単なアニメーション<br />intx, y;<br />void setup(){<br />x = 0;<br />y = 0;<br /> fill(255, 255, 255);<br />}<br />void draw(){<br /> background(0, 0, 0);<br />ellipse(x, y, 10, 10);<br />x = x + 1;<br />y = x;<br />}<br />2010.12.16<br />8<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  9. 9. 問題その1<br />簡単なアニメーションのプログラムを次のように改良してください<br />改良点<br />最初は(0, 0) から円が斜めに動く<br />クリックされると、クリックされた場所から斜めに動く<br />2010.12.16<br />9<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  10. 10. クリックしたところから波紋が広がるプログラム<br />2010.12.16<br />10<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  11. 11. 波紋の動きをモデル化しよう<br />円を描けば良い<br />中心座標、直径<br />色<br />直径は決まった分だけ大きくなる<br />どんどん消えていく:透明度を上げることで消滅を表現<br />2010.12.16<br />11<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  12. 12. 問題その2<br />クリックしたところから波紋がどんどん広がっていくプログラムを完成させてください<br />2010.12.16<br />12<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  13. 13. -1 で初期化<br />2010.12.16<br />13<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  14. 14. 問題その3<br />問題その2の回答例を変更してください<br />変更点<br />x, y, r, opacityを-1で初期化するメソッドを追加してください<br />回答例でx, y, r, opacityを初期化している部分を作成したメソッドを呼び出すように書き換えてください<br />2010.12.16<br />14<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  15. 15. 返り値を返すメソッドを作ろう<br />返り値<br />メソッドの処理の結果<br />例:制作物、成否、ステータスコード<br />返り値を返すにはどうすれば良いのだろう?<br />2010.12.16<br />15<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  16. 16. return文<br />返り値を返す文<br />文法:return 返す値;<br />利用例:return 1;<br />2010.12.16<br />16<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  17. 17. 常に1を返すメソッド<br />intreturnOne(){<br /> return 1;<br />}<br />2010.12.16<br />17<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  18. 18. 常にtrueを返すメソッド<br />boolean yes(){<br /> return true;<br />}<br />2010.12.16<br />18<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  19. 19. xの値が0より大きいか調べるメソッド<br />booleanisPositiveX(){<br />boolean result;<br /> result = x > 0;<br /> return result;<br />}<br />2010.12.16<br />19<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  20. 20. x, yが0より大きいか調べるメソッド<br />booleaninFirstQuadrant(){<br />boolean result;<br /> result = x > 0 && y > 0;<br /> return result;<br />}<br />2010.12.16<br />20<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  21. 21. 問題その4<br />問題その3を修正してください<br />修正点<br />波紋を描くべきかどうかを調べるためのメソッドを定義してください<br />drawメソッドのif文を、定義したメソッドをつかって書き換えてください<br />2010.12.16<br />21<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  22. 22. 効果音をつけよう<br />クリックしたときに水がはねる音を出したい<br />Processingの標準命令には音を再生するものがない<br />ライブラリを利用しよう<br />2010.12.16<br />22<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  23. 23. ライブラリ<br />メソッド宣言の集まり<br />メソッド宣言<br />クラス(型)の宣言<br />定数の定義<br />他の人の書いたメソッドを利用できるようになります<br />2010.12.16<br />23<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  24. 24. 標準で利用できるライブラリ<br />リファレンスをみてください<br />2010.12.16<br />24<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  25. 25. import文<br />利用するライブラリの宣言<br />スケッチの先頭に書きます<br />例<br />importddf.minim.*;<br />2010.12.16<br />25<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  26. 26. Minim<br />音を扱うためのライブラリ<br />できること<br />音声ファイルの再生<br />録音<br />音響合成、イフェクト<br />FFT<br />2010.12.16<br />26<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  27. 27. 新しいスケッチを作成してください<br />2010.12.16<br />27<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  28. 28. 音源をダウンロードしてください<br />下記のアドレスから<br />http://dl.dropbox.com/u/407085/ronpro11.mp3<br />音源はhttp://koukaongen.com/ で公開されているものを利用しています<br />2010.12.16<br />28<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  29. 29. 音源をスケッチに追加してください<br />クリックし、効果音をスケッチに追加<br />2010.12.16<br />29<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  30. 30. Minimをインポートしよう<br />2010.12.16<br />30<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  31. 31. クリック時に音を鳴らすプログラム<br />import ddf.minim.*;<br />import ddf.minim.signals.*;<br />import ddf.minim.analysis.*;<br />import ddf.minim.effects.*;<br />Minim minim;<br />AudioPlayer player;<br />2010.12.16<br />31<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  32. 32. クリック時に音を鳴らすプログラム(続き)<br />void setup(){<br /> size(400, 400);<br /> background(0, 0, 0);<br /> minim = new Minim(this);<br /> // minimインスタンスを作成<br />player = minim.loadFile("ronpro11.mp3”);<br /> // mp3ファイルをロード。<br />}<br />2010.12.16<br />32<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  33. 33. クリック時に音を鳴らすプログラム(続き)<br />void draw(){<br />}<br />void mouseClicked(){<br />player.rewind();<br />player.play();<br />}<br />2010.12.16<br />33<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  34. 34. クリック時に音を鳴らすプログラム(続き)<br />/*<br />停止時に呼ばれるメソッド<br />*/<br />void stop(){<br />player.close();<br />minim.stop();<br />super.stop();<br />}<br />2010.12.16<br />34<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  35. 35. コメント<br />プログラム中に書く解説文<br />後から読む時のヒント<br />無視して処理される<br />コメントの書き方<br />行末までをコメントにする書き方<br />部分をコメントにする書き方<br />2010.12.16<br />35<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  36. 36. 行末までをコメントとする書き方<br />void setup(){<br /> size(400, 400);<br /> background(0, 0, 0);<br /> minim = new Minim(this);<br /> // minimインスタンスを作成<br />player = minim.loadFile("ronpro11.mp3”);<br /> // mp3ファイルをロード。<br />}<br />// のあとは行末までコメントとなります<br />2010.12.16<br />36<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  37. 37. 部分をコメントとする書き方<br />/*<br />停止時に呼ばれるメソッド<br />*/<br />void stop(){<br />player.close();<br />minim.stop();<br />super.stop();<br />}<br />/* と */に囲まれた部分はコメントとなります<br />2010.12.16<br />37<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  38. 38. インスタンス:値<br />void setup(){<br /> size(400, 400);<br /> background(0, 0, 0);<br /> minim = new Minim(this);<br />// minimインスタンスを作成<br />player = minim.loadFile("ronpro11.mp3”);<br /> // mp3ファイルをロード。<br />}<br />2010.12.16<br />38<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  39. 39. インスタンスとクラス<br />値と型<br />インスタンス<br />具体的な値<br />いくつかの属性とメソッドを持つ<br />クラス<br />型の一種<br />インスタンスの性質を定義している<br />2010.12.16<br />39<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  40. 40. new:インスタンスの作成<br />void setup(){<br /> size(400, 400);<br /> background(0, 0, 0);<br /> minim = new Minim(this);<br />// minimインスタンスを作成<br />player = minim.loadFile("ronpro11.mp3”);<br /> // mp3ファイルをロード。<br />}<br />2010.12.16<br />40<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  41. 41. インスタンスメソッド<br />インスタンスの持っているメソッド<br />インスタンス名とメソッド名を . でつなげると呼び出せる<br />例:minim.loadFile(“a.mp3”);<br />2010.12.16<br />41<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  42. 42. 問題その5<br />問題その4を修正してください<br />修正点<br />Minimをつかって音を鳴らせるようにしてください<br />クリック時にronpro11.mp3を再生してください<br />2010.12.16<br />42<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  43. 43. まとめ<br />Processingでのアニメーション<br />drawメソッド<br />フレームごとに画面を書き換える<br />インスタンスとクラス<br />値と型<br />インスタンスメソッド<br />Minimを利用した音の再生<br />2010.12.16<br />43<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  44. 44. 最終課題について<br />そろそろ内容を考えよう<br />技術的な制約<br />Processingを利用していること<br />条件分岐を利用していること(変更点)<br />自分で宣言した変数があること<br />自分で宣言したメソッドが使われていること<br />イベントハンドラーは除く<br />名前、引数、返り値が自分で決めたものであること<br />2010.12.16<br />44<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  45. 45. 次回に発表した人には加点します<br />1/8の回に発表者を募ります<br />発表した人には加点します<br />2割増<br />多少増減するかも<br />早めに発表しよう<br />2010.12.16<br />45<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  46. 46. 発表内容<br />プログラムのデモ<br />当初やりたかったこと<br />そのうちのどの部分ができたか<br />工夫した点、苦労した点<br />設計で工夫した点、苦労した点<br />実装で工夫した点、苦労した点<br />機能を付け加えるとしたら、何?<br />2010.12.16<br />46<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />
  47. 47. 発表時間<br />口頭発表5分<br />デモなども含めて5分<br />時間がきたら打ち切り<br />質疑応答3分<br />口頭発表が早く終ったらその分延びます<br />口頭発表が長引いても3分とります<br />2010.12.16<br />47<br />論理思考とプログラミング, N.Shimizu <chiko@sfc.keio.ac.jp><br />

×