5.違った時間の流れの中で動かしてみよう!(並行プログラミング)

 この章では前の章で作ったオブジェクトに時間の流れを与えて、動かしてみます。
 


 5-1.タイマーの設定!


 タイマーオブジェクトを使って、時間の流れを生み出してみましょう。
 ここでは「かめ太のペース」を作って、0.5秒間隔で15秒間、実行してみました。
 間隔や実行時間を変えて、スピードを変えてみましょう。

かめ太=タートル ! 作る。
かめ子=タートル ! 作る。
かめ代=タートル ! 作る。

//(追加)タイマーオブジェクトを生成
かめ太のペース = タイマー ! 作る。

かめ子! "ayumiAka.gif" 変身する。
かめ代! "ayumiKiiro.gif" 変身する。

三角形=「かめ太! 100歩 歩く 120度 右回り」! 3回 繰り返す 図形にする。
四角形=「かめ子! 200歩 歩く 90度 左回り」! 4回 繰り返す 図形にする。
三十六角形=「かめ代! 10歩 戻る 10度 右回り」! 36回 繰り返す 図形にする。


かめ太 ! 50 50 移動する。
三角形! −50 −50 移動する。

かめ子! 200 150 移動する。
四角形! 200 −150 移動する。

かめ代! 50 150 移動する。
三十六角形! −50 150 移動する。

//(追加)0.5秒間隔で15秒間実行する。
かめ太のペース! 0.5秒 間隔 15秒 時間 「
かめ太 ! 5度 右回り。
三角形! 20度 右回り。

かめ子 ! 10度 右回り。
四角形! 30度 右回り。

かめ代 ! 15度 左回り。

三十六角形! 40度 左回り。
」 実行。

*実行すると6つのオブジェクトが同じペースで回ります。


 5-2.複数のタイマーの設定!


 次に複数のタイマーを設定してみましょう。「かめ太のペース」と「かめ子のペース」を作り、かめ子とかめ代は同じペースで動かしてみます。

かめ太=タートル ! 作る。
かめ子=タートル ! 作る。
かめ代=タートル ! 作る。

//(追加)タイマーオブジェクトを生成
かめ太のペース = タイマー ! 作る。
かめ子のペース = タイマー ! 作る。

かめ子! "ayumiAka.gif" 変身する。
かめ代! "ayumiKiiro.gif" 変身する。

三角形=「かめ太! 100歩 歩く 120度 右回り」! 3回 繰り返す 図形にする。
四角形=「かめ子! 200歩 歩く 90度 左回り」! 4回 繰り返す 図形にする。
三十六角形=「かめ代! 10歩 戻る 10度 右回り」! 36回 繰り返す 図形にする。


かめ太 ! 50 50 移動する。
三角形! −50 −50 移動する。

かめ子! 200 150 移動する。
四角形! 200 −150 移動する。

かめ代! 50 150 移動する。
三十六角形! −50 150 移動する。

//(追加)0.5秒間隔で15秒間実行する。

かめ太のペース! 0.5秒 間隔 15秒 時間 「
  かめ太 ! 5度 右回り。
  三角形! 20度 右回り。
」実行。

かめ子のペース! 0.1秒 間隔 15秒 時間「
  かめ子 ! 10度 右回り。
  四角形! 30度 右回り。

  かめ代 ! 15度 左回り。

  三十六角形! 40度 左回り。
」 実行。

*実行すると「かめ太」と「三角形」が同じペースで回ります。
 また、その5倍のペースで「かめ子」、「かめ代」、「四角形」、「三十六角形」が同じペースで回ります。


 どうですか。「かめ太」と「三角形」のグループと「かめ子」、「かめ代」「四角形」、「三十六角形」のグループは違う時間の流れの中で動いているでしょう。


 5-3.並列プログラミング


 さきほどやったように同時に2つ以上のプログラムを実行するプログラムを書くことを「並列プログラミング」といいます。
 上のプログラムの最後に次の6行を付け足してみてください。
 実行ボタンを押す前にどのような動きになると思うか想像してから、実行してみてください。

かめ代のペース=タイマー! 作る。

かめ代のペース ! 0.5秒 間隔 10秒 時間「     
  かめ太! 10歩 歩く。
  かめ子! 10歩 歩く。
  かめ代! 10歩 歩く。
」実行。

 


さて、かめ太たちはどのように動きましたか?

5−2のプログラムを実行した後にかめ太、かめ子、かめ代が歩くと思った人が多いのではないでしょうか?

ドリトルではタイマーオブジェクトは同時に実行されるため、このように3つのタイマーオブジェクトが並行して実行されます。
これが並行プログラミングです。

同じ事を手続き型プログラミング言語でやろうとするととても大変なプログラミングになっていましますが、ドリトルだと意図も簡単にできてしまいます。

かめ太、かめ子、かめ代が図形と一緒に回ってから、歩いていくようにするには次のようにタイマーオブジェクトの実行が終わるのを待たせることで実現できます。


//5−2のプログラムの実行が終わってから、
//歩くように終わるまで待つように指定する。
かめ太のペース! 待つ。
かめ子のペース! 待つ。

かめ代のペース=タイマー! 作る。

かめ代のペース ! 0.5秒 間隔 10秒 時間「       かめ太! 10歩 歩く。
  かめ子! 10歩 歩く。
  かめ代! 10歩 歩く。
」実行。

 


次へ

前へ


(c) 2002 長谷川元洋 All rights researved. ghase@logob.com