ねらい
Scratchでシンプルなゲームをつくって、たまにおこるむずかしいことをせつめいします。
なんでちゃんとうごかないの? ということがたまにあります
わかりやすいれい:ふたりのお金をこうかんしよう
2ひきのねこが、それぞれ2円と1円をもっています。
もくてきは、スペースキーをおすと2ひきがお金をこうかんして、1円と2円をもっているようにすることです。
こんなプログラムをつくってみた
はいけい
はこんなふうなプログラムにしてみました。
だいじなところはお金をこうかんする
をおくってまつ、というところです。
これはイベントといいます。イベントをCat1
とCat2
におくって、それぞれがお金をこうかんします。
Cat1とCat2のプログラムの中はそれぞれこうなっています。
Cat1 | Cat2 |
---|---|
お金をこうかんする
というイベントをうけとったときに
Cat1
はこうします。
「Cat1のお金
というへんすうをCat2のお金
にする」
Cat2
はこうします。
「Cat2のお金
というへんすうをCat1のお金
にする」
これでお金が入れかわるようになると思いました。
では、じっさいにうごかしてみましょう〜
→ うごくページ
なんでちゃんとうごかないの?
あれ?
2円と1円が入れかわるだけだったはずなのに、
なぜかりょうほう2円になっています。。。
なんでなんでしょうか!
Scratchのなかみをじゅんばんにみてみよう
へんすう
をまるであらわしてみます。
まるのなかにすうじが入っています。これがあたいです。さいしょは2円と1円になっています。
お金をこうかんする
というイベントをおくったので、
よーいどん、でいっしょにうごかしたつもりでした。
でも、Scratchのようなプログラムはこううごきます。
ちょっとだけどちらかがはやくなる。
こんかいはCat2のほうがはやかったみたいです。
そうすると
1円というすうじがなくなって、2円になってしまって、どちらも2円になりました。
すうじがかきかえられることを、うわがき
といいます。うえからかいてけすしてしまうからです。
するとつぎになにがおこるでしょうか。
そうです、やっとCat1がうごきはじめます。
あーそれじゃだめじゃん!とみんなにいわれそうですが、そうなってしまいました。
1円というほんとうのすうじはきえてしまったので、Cat1はまた2円にされます。
このけっかが、さっきのまちがいだったのですね。
これです。
どうしよう。
ひとつのやりかた: どこかにのこす
やりかたはたくさんあります。
こんかいは、そのなかでもひとつのやりかたをやってみます。
まえのすうじがきえないように、どこかにのこす、というやりかたです。
プログラムのみためがまずちょっとちがいます。
へんすうがふえていますね。
ふえたのは、Cat1のべつの手のお金
とCat2のべつの手のお金
です。
どちらも0というすうじになっています。
はいけい
はこんなふうなプログラムにしてみました。
Cat1とCat2のプログラムの中はそれぞれこうなっています。
Cat1 | Cat2 |
---|---|
ではちょっとうごかしてみましょう。
→ うごくページ
ちゃんとうごいた!
スペースキーをおすと、このようにちゃんと2円と1円がこうかんされています。
なんでちゃんとうごいたのでしょうか。
しかけはこうなっています。
えがどらえもんみたいの手みたいになっていますけど、がまんしてね。。。
べつの手のお金というのは、いったんお金をうわがきするためのばしょです。
このときには、まえのお金もちゃんとのこします。
さいしょにCat2がうごいた | そのつぎCat1がうごいた |
---|---|
つぎににぎりかえる
というべつのイベントをおくってもらいます。
そのときにこううごきます。
Cat2がにぎりかえる | Cat1がにぎりかえる |
---|---|
だいじなのは、いったんべつの手にすうじをうつしてから、
それがCat1とCat2りょうほうおわったあとに、
つぎのお金をうわがきしています。
そうすることで、まえはきえていたすうじがちゃんとのこるようになりました。
よかったね〜Catちゃん
2ひきとも「そうだよ、これでいいんだよ」といってくれているみたいです。
ほかにもいろんなやりかたがある
やりかたはこれだけではありません。
うわがき
というコンピュータのしごとが、よそうとちがううごきをしたおかげで、こういうことがおきます。
ほかにも、Cat1とCat2のじゅんばんがいれかわったら、ちがううごきをするかもしれない、とか、いろんなことがプログラムではおきます。
そのときに、あーでもない、こーでもない、あ!これならいけるかも!といろいろかんがえてみるのがプログラミングのたのしいところです。
いちばんだいじなこと:みんなでたすけあおう
そして、これがただしいよ、というこたえはありません。
だから、ともだちのやりかたはちがっていたとしても、それはそれでいいんです。
ともだちのやりかたのほうがなんかよさそう!とおもったら、それをつかわせてもらえばいいのです。
たとえば「もっとすくないプログラムでできる」とか、そういうかんがえかたでどんどんいいプログラムをかんがえてもいいですね。
保護者の方へ
小さなお子さん向けに、プログラムを作るときのちょっとしたつまづきと解決方法の例を示しました。
この例題は並列処理と呼ばれるプログラミングの一分野の問題です。同時にたくさんのプログラムが動いたときに、データを壊してしまう可能性があることを意味しています。
このようなことはとてもよく起こります。しかし、意図していない動きをするプログラムが世に出回ってしまうと、大事なお金や情報がなくなったりする危険性があり、こういうことをなくすように正しく動くプログラムを作る仕事は大変重要です。
そんな難しいことをやらなくても、と思われるかもしれませんが、ほんとうにこれに似たことが、すごく簡単なプログラムの中でもたくさん起きます。
上にも書きましたが、正解というプログラムがあって教科書に載っていることはまれでして、正解がない世界でみんなが知恵を振り絞ってプログラムを直したりしていくプロセスが大事だと思います。
世の中のプログラムはこうしてみんなが知恵を振り絞った結晶です。少しでもこういうプロセスに触れておくことで、もしかしたらお子さんが大きくなって、世の中を支えるプログラムを作るようになるかもしれません。