論理思考とプログラミング#10<br />N. Shimizu<br />chiko at sfc.keio.ac.jp<br />2010.6.17<br />1<br />論理思考とプログラミング#10 N.Shimizu <chiko a...
今日の内容<br />実際に1からプログラムを書いてみよう<br />設計と実装<br />いきなり伽藍を立てようとしないこと!<br />できるところから始めて<br />すこしずつ大きくしていく<br />2010.6.17<br />2<...
ボールが動いているプログラムを作る<br />どう動いているのか?<br />動きの例:<br />重力に引かれて落ちる<br />ボールのように弾む<br />ピンボールのように動く<br />星や月の動きを真似る<br />などなど<br ...
ボールのモデルをつくろう<br />ボールを表すには何が必要だろうか?<br />何を変数としたほうがいいのか?<br />ボールとして望ましい振る舞いは何か?<br />2010.6.17<br />4<br />論理思考とプログラミング#1...
クラス宣言しよう<br />新しいタブをつくり、<br />その中でクラスを宣言しよう<br />2010.6.17<br />5<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp>...
クラス宣言しよう<br />class Ball{<br />}<br />中身を埋めよう<br />次のものを表す変数をたそう<br />X座標<br />Y座標<br />直径<br />2010.6.17<br />6<br />論理思考...
動く円のクラスを作ろう<br />class Ball{<br />   float x; // 中心のX座標<br />   float y; // 中心のY座標<br />   float r; // 直径<br />}<br />2010...
クラスを使って変数を宣言しよう<br />class Ball{<br />   float x;<br />   float y;<br />   float r;<br />}<br />Ballb;<br />2010.6.17<br /...
インスタンスを作ろう<br />class Ball{<br />   float x;<br />   float y;<br />   float r;<br />}<br />Ballb;<br />void setup(){<br />...
インスタンス変数に代入しよう<br />class Ball{<br />   float x;<br />   float y;<br />   float r;<br />}<br />Ball b;<br />void setup(){<...
ボールを表示してみよう<br />Ballクラスのインスタンスを作成しよう<br />作成したインスタンスの変数を初期化しよう<br />インスタンスの持っている変数を使ってボールを表示しよう<br />2010.6.17<br />11<br...
例<br />void draw(){<br />   stroke(192, 192, 192, 255);<br />   fill(192, 0, 192, 255);<br />ellipse(b.x, b.y, b.r, b.r);<...
ボールを表示するメソッドを作ろう<br />void draw(){<br />   stroke(192, 192, 192, 255);<br />   fill(192, 0, 192, 255);<br />ellipse(b.x, b...
どこでメソッドを定義したら良いか?<br />候補<br />Ballクラスの中<br />メインのプログラムの中<br />表示する責任は誰が負っているのか?<br />Ballの各インスタンスが負っているなら、Ballクラスの中<br />...
Ballクラスの中に定義しよう<br />ボールを表示するメソッドを定義しよう<br />メインのプログラムのdrawメソッドで呼び出そう<br />2010.6.17<br />15<br />論理思考とプログラミング#10 N.Shimiz...
定義例<br />class Ball{<br />   float x;<br />   float y;<br />   float r;<br />   void draw(){<br />stroke(192, 192,       1...
呼び出した例<br />void draw(){<br />b.draw();<br />}<br />2010.6.17<br />17<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac...
落ちる動きを作ろう<br />スピードを表す変数を作ろう<br />落ちる<br />Y座標が大きくなる<br />重力によって大きくなる量が増える<br />落ちる動きをメソッドにまとめ、Ballクラスに追加しよう<br />2010.6.1...
落ちるメソッドを追加した例<br />class Ball{<br />   float x;<br />   float y;<br />   float r;<br />   float dy;<br />   void draw(){<b...
跳ね返りを作ろう<br />端にきたら反射させよう<br />2010.6.17<br />20<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
跳ね返りを作ろう<br />下端で跳ね返るとき、縦方向のスピードを減衰させてみよう<br />跳ね返りを処理するメソッドをBallクラスに追加しよう<br />下端<br />2010.6.17<br />21<br />論理思考とプログラミン...
跳ね返るメソッドを追加した例<br />class Ball{<br />   float x;<br />   float y;<br />   float r;<br />   float dy;<br />   void draw(){<...
インタラクションを追加しよう<br />ユーザの操作によってプログラムの振る舞いが変わるようにしよう<br />ハンドルできる操作<br />マウスのクリック<br />キーの入力<br />2010.6.17<br />23<br />論理思...
操作->振る舞いのルールを作ろう<br />今回は<br />クリックする->ボールがマウスカーソルめがけて動く<br />それ以外->重力によって落ちる<br />2010.6.17<br />24<br />論理思考とプログラミング#10 ...
動きのモードが違う<br />今回は<br />クリックする->マウスカーソルをめがけて動くモードで動く<br />それ以外->重力にしたがって落ちるモードで動く<br />2010.6.17<br />25<br />論理思考とプログラミング...
モードを実現するには<br />モードを表す変数を作る<br />ユーザの操作時に、各モードを表す値を代入<br />変数の値によってふるまいを変える<br />2010.6.17<br />26<br />論理思考とプログラミング#10 N....
Ballクラスにモードを表す変数を加えよう<br />考えなくてはいけないこと<br />型は何にするのか<br />どの値がどのモードに対応しているのか<br />上記のことを決めたら実装しよう<br />2010.6.17<br />27<...
ある地点へ円を動かす<br />2010.6.17<br />28<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
真横の場合<br />(x1, y1)<br />(x2, y1)<br />x2 – x1<br />2010.6.17<br />29<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac...
1フレームで進む量<br />(x1, y1)<br />(x2, y1)<br />(x2 – x1) /  N<br />2010.6.17<br />30<br />論理思考とプログラミング#10 N.Shimizu <chiko at ...
真上の場合<br />(x1, y2)<br />(x1, y1)<br />y2 – y1<br />2010.6.17<br />31<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac...
1フレームで進亮<br />(x1, y2)<br />(y2 – y1) / N<br />(x1, y1)<br />2010.6.17<br />32<br />論理思考とプログラミング#10 N.Shimizu <chiko at sf...
ある地点へ円を動かす<br />y2 – y1<br />(x2, y2)<br />(x1, y1)<br />x2 – x1<br />2010.6.17<br />33<br />論理思考とプログラミング#10 N.Shimizu <ch...
クリックされた点へ動かす<br />クリック<br />mouseY – y1<br />(mouseX, mouseY)<br />(x1, y1)<br />mouseX – x1<br />2010.6.17<br />34<br />論...
各モードを実装しよう<br />各モードを実装しよう<br />モードを切り替えられるようにしよう<br />マウスクリックで追いかけるモード<br />離したら落ちるモード<br />2010.6.17<br />35<br />論理思考とプ...
配列で「集まり」を実現しよう<br />2010.6.17<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />36<br />
配列は同じ型の変数の集まり<br />Ball<br />Ball<br />Ball<br />Ball<br />配列<br />2010.6.17<br />37<br />論理思考とプログラミング#10 N.Shimizu <chiko...
各変数のことを要素と呼びます<br />要素<br />要素<br />要素<br />要素<br />Ball<br />Ball	<br />Ball<br />Ball<br />配列<br />2010.6.17<br />38<br ...
各要素はすべて同じ型です<br />要素<br />要素<br />要素<br />要素<br />Ball<br />Ball	<br />Ball<br />Ball<br />配列<br />2010.6.17<br />39<br />...
配列内での位置があります<br />0番目<br />3番目<br />1番目<br />2番目<br />Ball<br />Ball<br />Ball<br />Ball<br />配列<br />2010.6.17<br />40<br...
配列には長さがあります<br />Ball<br />Ball<br />Ball<br />Ball<br />長さ4の配列<br />2010.6.17<br />41<br />論理思考とプログラミング#10 N.Shimizu <chi...
配列の長さは変わりません<br />Ball<br />Ball<br />Ball<br />Ball<br />長さ4の配列<br />2010.6.17<br />42<br />論理思考とプログラミング#10 N.Shimizu <ch...
配列も一つのインスタンスです<br />Ball<br />Ball<br />Ball<br />Ball<br />配列<br />2010.6.17<br />43<br />論理思考とプログラミング#10 N.Shimizu <chik...
Ball型の要素を持つ配列を宣言する<br />Ball[] balls;<br />2010.6.17<br />44<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
配列の初期化<br />balls = new Ball[4];<br />inti = 0;<br />while(i < balls.length){<br />balls[i] = new Ball();<br />}<br />2010...
同じメソッドを呼ぶ<br />inti = 0;<br />while(i < balls.length){<br />balls[i].draw();<br />}<br />i番目の要素のdrawメソッドを呼ぶ<br />2010.6.17...
配列を使ってみよう<br />10個のボールを配列を使って管理しよう<br />やること<br />配列を宣言しよう<br />宣言した配列を初期化しよう<br />メインのプログラムのdrawメソッド内で、要素すべてのdraw, move, ...
Upcoming SlideShare
Loading in...5
×

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

631

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
631
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "論理思考とプログラミング第10回"

  1. 1. 論理思考とプログラミング#10<br />N. Shimizu<br />chiko at sfc.keio.ac.jp<br />2010.6.17<br />1<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  2. 2. 今日の内容<br />実際に1からプログラムを書いてみよう<br />設計と実装<br />いきなり伽藍を立てようとしないこと!<br />できるところから始めて<br />すこしずつ大きくしていく<br />2010.6.17<br />2<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  3. 3. ボールが動いているプログラムを作る<br />どう動いているのか?<br />動きの例:<br />重力に引かれて落ちる<br />ボールのように弾む<br />ピンボールのように動く<br />星や月の動きを真似る<br />などなど<br />2010.6.17<br />3<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  4. 4. ボールのモデルをつくろう<br />ボールを表すには何が必要だろうか?<br />何を変数としたほうがいいのか?<br />ボールとして望ましい振る舞いは何か?<br />2010.6.17<br />4<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  5. 5. クラス宣言しよう<br />新しいタブをつくり、<br />その中でクラスを宣言しよう<br />2010.6.17<br />5<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  6. 6. クラス宣言しよう<br />class Ball{<br />}<br />中身を埋めよう<br />次のものを表す変数をたそう<br />X座標<br />Y座標<br />直径<br />2010.6.17<br />6<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  7. 7. 動く円のクラスを作ろう<br />class Ball{<br /> float x; // 中心のX座標<br /> float y; // 中心のY座標<br /> float r; // 直径<br />}<br />2010.6.17<br />7<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  8. 8. クラスを使って変数を宣言しよう<br />class Ball{<br /> float x;<br /> float y;<br /> float r;<br />}<br />Ballb;<br />2010.6.17<br />8<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  9. 9. インスタンスを作ろう<br />class Ball{<br /> float x;<br /> float y;<br /> float r;<br />}<br />Ballb;<br />void setup(){<br />b= new Ball();<br />}<br />2010.6.17<br />9<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  10. 10. インスタンス変数に代入しよう<br />class Ball{<br /> float x;<br /> float y;<br /> float r;<br />}<br />Ball b;<br />void setup(){<br />b = new Ball();<br />b.x = 200;<br />b.y = 200;<br />}<br />2010.6.17<br />10<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  11. 11. ボールを表示してみよう<br />Ballクラスのインスタンスを作成しよう<br />作成したインスタンスの変数を初期化しよう<br />インスタンスの持っている変数を使ってボールを表示しよう<br />2010.6.17<br />11<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  12. 12. 例<br />void draw(){<br /> stroke(192, 192, 192, 255);<br /> fill(192, 0, 192, 255);<br />ellipse(b.x, b.y, b.r, b.r);<br />}<br />2010.6.17<br />12<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  13. 13. ボールを表示するメソッドを作ろう<br />void draw(){<br /> stroke(192, 192, 192, 255);<br /> fill(192, 0, 192, 255);<br />ellipse(b.x, b.y, b.r, b.r);<br />}<br />ここをメソッドにする<br />2010.6.17<br />13<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  14. 14. どこでメソッドを定義したら良いか?<br />候補<br />Ballクラスの中<br />メインのプログラムの中<br />表示する責任は誰が負っているのか?<br />Ballの各インスタンスが負っているなら、Ballクラスの中<br />メインのプログラムなら、メインのプログラム中<br />2010.6.17<br />14<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  15. 15. Ballクラスの中に定義しよう<br />ボールを表示するメソッドを定義しよう<br />メインのプログラムのdrawメソッドで呼び出そう<br />2010.6.17<br />15<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  16. 16. 定義例<br />class Ball{<br /> float x;<br /> float y;<br /> float r;<br /> void draw(){<br />stroke(192, 192, 192, 255);<br /> fill(192, 0, 192, 255);<br />ellipse(x,y,r,r);<br /> }<br />}<br />2010.6.17<br />16<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  17. 17. 呼び出した例<br />void draw(){<br />b.draw();<br />}<br />2010.6.17<br />17<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  18. 18. 落ちる動きを作ろう<br />スピードを表す変数を作ろう<br />落ちる<br />Y座標が大きくなる<br />重力によって大きくなる量が増える<br />落ちる動きをメソッドにまとめ、Ballクラスに追加しよう<br />2010.6.17<br />18<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  19. 19. 落ちるメソッドを追加した例<br />class Ball{<br /> float x;<br /> float y;<br /> float r;<br /> float dy;<br /> void draw(){<br /> stroke(192, 192, 192, 255);<br /> fill(192, 0, 192, 255);<br />ellipse(x, y, r, r);<br />}<br /> void move(){<br />dx = dx + 0.05;<br />y = y + dy;<br /> }<br />}<br />2010.6.17<br />19<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  20. 20. 跳ね返りを作ろう<br />端にきたら反射させよう<br />2010.6.17<br />20<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  21. 21. 跳ね返りを作ろう<br />下端で跳ね返るとき、縦方向のスピードを減衰させてみよう<br />跳ね返りを処理するメソッドをBallクラスに追加しよう<br />下端<br />2010.6.17<br />21<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  22. 22. 跳ね返るメソッドを追加した例<br />class Ball{<br /> float x;<br /> float y;<br /> float r;<br /> float dy;<br /> void draw(){<br /> stroke(192, 192, 192, 255);<br />fill(192, 0, 192, 255);<br />ellipse(x, y, r, r);<br /> }<br /> void move(){<br />dx = dx + 0.05;<br />y = y + dy;<br />}<br /> void bound(){<br /> if(height - r/2 <= y){<br /> dy = dy *0.6 * -1;<br /> }<br /> if(x <= r/2 || width - r/2 <= x){<br /> dx = dx * -1;<br /> }<br />}  <br />}<br />2010.6.17<br />22<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  23. 23. インタラクションを追加しよう<br />ユーザの操作によってプログラムの振る舞いが変わるようにしよう<br />ハンドルできる操作<br />マウスのクリック<br />キーの入力<br />2010.6.17<br />23<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  24. 24. 操作->振る舞いのルールを作ろう<br />今回は<br />クリックする->ボールがマウスカーソルめがけて動く<br />それ以外->重力によって落ちる<br />2010.6.17<br />24<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  25. 25. 動きのモードが違う<br />今回は<br />クリックする->マウスカーソルをめがけて動くモードで動く<br />それ以外->重力にしたがって落ちるモードで動く<br />2010.6.17<br />25<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  26. 26. モードを実現するには<br />モードを表す変数を作る<br />ユーザの操作時に、各モードを表す値を代入<br />変数の値によってふるまいを変える<br />2010.6.17<br />26<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  27. 27. Ballクラスにモードを表す変数を加えよう<br />考えなくてはいけないこと<br />型は何にするのか<br />どの値がどのモードに対応しているのか<br />上記のことを決めたら実装しよう<br />2010.6.17<br />27<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  28. 28. ある地点へ円を動かす<br />2010.6.17<br />28<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  29. 29. 真横の場合<br />(x1, y1)<br />(x2, y1)<br />x2 – x1<br />2010.6.17<br />29<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  30. 30. 1フレームで進む量<br />(x1, y1)<br />(x2, y1)<br />(x2 – x1) / N<br />2010.6.17<br />30<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  31. 31. 真上の場合<br />(x1, y2)<br />(x1, y1)<br />y2 – y1<br />2010.6.17<br />31<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  32. 32. 1フレームで進亮<br />(x1, y2)<br />(y2 – y1) / N<br />(x1, y1)<br />2010.6.17<br />32<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  33. 33. ある地点へ円を動かす<br />y2 – y1<br />(x2, y2)<br />(x1, y1)<br />x2 – x1<br />2010.6.17<br />33<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  34. 34. クリックされた点へ動かす<br />クリック<br />mouseY – y1<br />(mouseX, mouseY)<br />(x1, y1)<br />mouseX – x1<br />2010.6.17<br />34<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  35. 35. 各モードを実装しよう<br />各モードを実装しよう<br />モードを切り替えられるようにしよう<br />マウスクリックで追いかけるモード<br />離したら落ちるモード<br />2010.6.17<br />35<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  36. 36. 配列で「集まり」を実現しよう<br />2010.6.17<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />36<br />
  37. 37. 配列は同じ型の変数の集まり<br />Ball<br />Ball<br />Ball<br />Ball<br />配列<br />2010.6.17<br />37<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  38. 38. 各変数のことを要素と呼びます<br />要素<br />要素<br />要素<br />要素<br />Ball<br />Ball <br />Ball<br />Ball<br />配列<br />2010.6.17<br />38<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  39. 39. 各要素はすべて同じ型です<br />要素<br />要素<br />要素<br />要素<br />Ball<br />Ball <br />Ball<br />Ball<br />配列<br />2010.6.17<br />39<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  40. 40. 配列内での位置があります<br />0番目<br />3番目<br />1番目<br />2番目<br />Ball<br />Ball<br />Ball<br />Ball<br />配列<br />2010.6.17<br />40<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  41. 41. 配列には長さがあります<br />Ball<br />Ball<br />Ball<br />Ball<br />長さ4の配列<br />2010.6.17<br />41<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  42. 42. 配列の長さは変わりません<br />Ball<br />Ball<br />Ball<br />Ball<br />長さ4の配列<br />2010.6.17<br />42<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  43. 43. 配列も一つのインスタンスです<br />Ball<br />Ball<br />Ball<br />Ball<br />配列<br />2010.6.17<br />43<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  44. 44. Ball型の要素を持つ配列を宣言する<br />Ball[] balls;<br />2010.6.17<br />44<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  45. 45. 配列の初期化<br />balls = new Ball[4];<br />inti = 0;<br />while(i < balls.length){<br />balls[i] = new Ball();<br />}<br />2010.6.17<br />45<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  46. 46. 同じメソッドを呼ぶ<br />inti = 0;<br />while(i < balls.length){<br />balls[i].draw();<br />}<br />i番目の要素のdrawメソッドを呼ぶ<br />2010.6.17<br />46<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />
  47. 47. 配列を使ってみよう<br />10個のボールを配列を使って管理しよう<br />やること<br />配列を宣言しよう<br />宣言した配列を初期化しよう<br />メインのプログラムのdrawメソッド内で、要素すべてのdraw, move, boundメソッドを呼び出そう<br />2010.6.17<br />47<br />論理思考とプログラミング#10 N.Shimizu <chiko at sfc.keio.ac.jp><br />

×