welcome: please sign in
location: "etoys処理の順番を考える"の差分
4と5のリビジョン間の差分
2012-06-06 02:18:42時点のリビジョン4
サイズ: 1621
編集者: masahiko
コメント:
2012-06-06 02:40:27時点のリビジョン5
サイズ: 3553
編集者: masahiko
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 35: 行 35:
=== 並べる順で処理が異なる === === 並べる順が重要 ===
正しい順に並べないとうまく動作しないものもあります。

最初の例です。
 . {{attachment:junban4.png}}
1回だけ実行するとして考えると
 . 入れ物のカーソル位置 ← 2
の後で
 . ウサギの画像 ← 入れ物のカーソル位置の画像
を行わないとだめなことがわかります。

判定により画像を変える場合も
同じ順番に並べればよい。
 . {{attachment:junban5.png}}
ウサギが
 . 赤色のところに来たときはカーソル位置1の画像に
 . そうでないときはカーソル位置2の画像になります。
行 38: 行 55:
 . {{attachment:junban5.png}} 複数の判定が必要なときはさらに注意が必要です。

ウサギが
 . 黄色のところに来たときはカーソル位置3の画像に
 . そうでないときはカーソル位置2の画像
にするときも、同様に書けます。
行 40: 行 63:

==== 問題 ====
ウサギが
 . 赤色のところに来たときはカーソル位置1の画像に
 . 黄色のところに来たときはカーソル位置3の画像に
 . そうでないときはカーソル位置2の画像に
するにはどうしたらよいでしょうか。

間違いの例
行 41: 行 73:
上の2つのスクリプトのテストの部分を並べたものです。
 . 赤色のテストをした後、黄色のテストをしています。
ウサギが赤色のところにいるときの処理はつぎのようになります。
 1. ウサギを進める
 1. 赤色のテストが成り立つので、カーソル位置は1になる
 1. 黄色のテストが成り立たないので、カーソル位置は2になる
 1. カーソル位置2の画像が表示される

正解1

赤色と重なっていないときだけ
黄色のテストを行えばよいので、

赤色のテストの'''いいえ'''の部分に黄色のテストを入れます。
行 42: 行 88:

正解2

このような方法もあります。

処理の順番を考える

スクリプト内で命令をどの順にならべたらよいのか考えましょう。


スクリプト内では順番に実行される

スクリプト内にいくつかの命令を並べたときは 上から順に実行されます。

3つの命令を並べた例です。

  • junban4.png

次の3つが順に実行されます。

  1. ウサギを進める5
  2. 入れ物のカーソル位置 ← 2
  3. ウサギの画像 ← 入れ物のカーソル位置の画像

!を押して1回だけ実行してみると分かります。

チクタクでは分かりにくいかもしれません。


1つのスクリプトで考える

つぎの2つのスクリプトを考えます。

  • junban1.png

  • junban2.png

1回だけ実行したり、どちらかだけをチクタクにするのはよいのですが

2つともチクタクにすると、全体としての動作が分かりにくくなってしまいます。

2つとも実行したいのであれば 1つのスクリプトにまとめたほうが分かりやすい。

  • junban3.png

チクタクにするスクリプトは 1つのオブジェクトにたいして1つだけにして考えましょう。


並べる順が重要

正しい順に並べないとうまく動作しないものもあります。

最初の例です。

  • junban4.png

1回だけ実行するとして考えると

  • 入れ物のカーソル位置 ← 2

の後で

  • ウサギの画像 ← 入れ物のカーソル位置の画像

を行わないとだめなことがわかります。

判定により画像を変える場合も 同じ順番に並べればよい。

  • junban5.png

ウサギが

  • 赤色のところに来たときはカーソル位置1の画像に
  • そうでないときはカーソル位置2の画像になります。


複数の判定が必要なとき

複数の判定が必要なときはさらに注意が必要です。

ウサギが

  • 黄色のところに来たときはカーソル位置3の画像に
  • そうでないときはカーソル位置2の画像

にするときも、同様に書けます。

  • junban6.png

問題

ウサギが

  • 赤色のところに来たときはカーソル位置1の画像に
  • 黄色のところに来たときはカーソル位置3の画像に
  • そうでないときはカーソル位置2の画像に

するにはどうしたらよいでしょうか。

間違いの例

  • junban7.png

上の2つのスクリプトのテストの部分を並べたものです。

  • 赤色のテストをした後、黄色のテストをしています。

ウサギが赤色のところにいるときの処理はつぎのようになります。

  1. ウサギを進める
  2. 赤色のテストが成り立つので、カーソル位置は1になる
  3. 黄色のテストが成り立たないので、カーソル位置は2になる
  4. カーソル位置2の画像が表示される

正解1

赤色と重なっていないときだけ 黄色のテストを行えばよいので、

赤色のテストのいいえの部分に黄色のテストを入れます。

  • junban8.png

正解2

このような方法もあります。

  • junban9.png

etoys処理の順番を考える (最終更新日時 2012-06-06 02:42:06 更新者 masahiko)