1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ScratchAdvent Calendar 2019

Day 21

Scratchあるある:ふたりのお金をこうかんする

Last updated at Posted at 2019-12-20

ねらい

Scratchでシンプルなゲームをつくって、たまにおこるむずかしいことをせつめいします。

なんでちゃんとうごかないの? ということがたまにあります :cry:

わかりやすいれい:ふたりのお金をこうかんしよう

2ひきのねこが、それぞれ2円と1円をもっています。
もくてきは、スペースキーをおすと2ひきがお金をこうかんして、1円と2円をもっているようにすることです。

image.png

こんなプログラムをつくってみた

はいけいはこんなふうなプログラムにしてみました。

image.png

だいじなところはお金をこうかんするをおくってまつ、というところです。
これはイベントといいます。イベントをCat1Cat2におくって、それぞれがお金をこうかんします。

Cat1とCat2のプログラムの中はそれぞれこうなっています。

Cat1 Cat2
image.png image.png

お金をこうかんするというイベントをうけとったときに
Cat1はこうします。
Cat1のお金 というへんすうをCat2のお金にする」
Cat2はこうします。
Cat2のお金 というへんすうをCat1のお金にする」
これでお金が入れかわるようになると思いました。

では、じっさいにうごかしてみましょう〜

→ うごくページ

なんでちゃんとうごかないの?:frowning2:

あれ?:grimacing:

image.png

2円と1円が入れかわるだけだったはずなのに、
なぜかりょうほう2円になっています。。。
なんでなんでしょうか!:weary:

Scratchのなかみをじゅんばんにみてみよう

へんすうをまるであらわしてみます。
まるのなかにすうじが入っています。これがあたいです。さいしょは2円と1円になっています。

image.png

お金をこうかんするというイベントをおくったので、
よーいどん、でいっしょにうごかしたつもりでした。

でも、Scratchのようなプログラムはこううごきます。

ちょっとだけどちらかがはやくなる。

こんかいはCat2のほうがはやかったみたいです。
そうすると

image.png

1円というすうじがなくなって、2円になってしまって、どちらも2円になりました。
すうじがかきかえられることを、うわがきといいます。うえからかいてけすしてしまうからです。

するとつぎになにがおこるでしょうか。
そうです、やっとCat1がうごきはじめます。

image.png

あーそれじゃだめじゃん!とみんなにいわれそうですが、そうなってしまいました。
1円というほんとうのすうじはきえてしまったので、Cat1はまた2円にされます。

このけっかが、さっきのまちがいだったのですね。

これです。

image.png

どうしよう。

ひとつのやりかた: どこかにのこす

やりかたはたくさんあります。
こんかいは、そのなかでもひとつのやりかたをやってみます。

まえのすうじがきえないように、どこかにのこす、というやりかたです。

プログラムのみためがまずちょっとちがいます。

image.png

へんすうがふえていますね。
ふえたのは、Cat1のべつの手のお金Cat2のべつの手のお金です。
どちらも0というすうじになっています。

はいけいはこんなふうなプログラムにしてみました。

image.png

Cat1とCat2のプログラムの中はそれぞれこうなっています。

Cat1 Cat2
image.png image.png

ではちょっとうごかしてみましょう。

うごくページ

ちゃんとうごいた!

スペースキーをおすと、このようにちゃんと2円と1円がこうかんされています。

image.png

なんでちゃんとうごいたのでしょうか。

しかけはこうなっています。

image.png

えがどらえもんみたいの手みたいになっていますけど、がまんしてね。。。

べつの手のお金というのは、いったんお金をうわがきするためのばしょです。
このときには、まえのお金もちゃんとのこします。

さいしょにCat2がうごいた そのつぎCat1がうごいた
image.png image.png

つぎににぎりかえるというべつのイベントをおくってもらいます。
そのときにこううごきます。

Cat2がにぎりかえる Cat1がにぎりかえる
image.png image.png

だいじなのは、いったんべつの手にすうじをうつしてから、
それがCat1とCat2りょうほうおわったあとに、
つぎのお金をうわがきしています。
そうすることで、まえはきえていたすうじがちゃんとのこるようになりました。

よかったね〜Catちゃん

2ひきとも「そうだよ、これでいいんだよ」といってくれているみたいです。

image.png

ほかにもいろんなやりかたがある:thumbsup_tone5:

やりかたはこれだけではありません
うわがきというコンピュータのしごとが、よそうとちがううごきをしたおかげで、こういうことがおきます。:flushed:
ほかにも、Cat1とCat2のじゅんばんがいれかわったら、ちがううごきをするかもしれない、とか、いろんなことがプログラムではおきます。

そのときに、あーでもない、こーでもない、あ!これならいけるかも!といろいろかんがえてみるのがプログラミングのたのしいところです。:relaxed:

いちばんだいじなこと:みんなでたすけあおう

そして、これがただしいよ、というこたえはありません:point_up:
だから、ともだちのやりかたはちがっていたとしても、それはそれでいいんです。:hugging:
ともだちのやりかたのほうがなんかよさそう!とおもったら、それをつかわせてもらえばいいのです。

たとえば「もっとすくないプログラムでできる」とか、そういうかんがえかたでどんどんいいプログラムをかんがえてもいいですね。:two_women_holding_hands:

保護者の方へ

小さなお子さん向けに、プログラムを作るときのちょっとしたつまづきと解決方法の例を示しました。

この例題は並列処理と呼ばれるプログラミングの一分野の問題です。同時にたくさんのプログラムが動いたときに、データを壊してしまう可能性があることを意味しています。

このようなことはとてもよく起こります。しかし、意図していない動きをするプログラムが世に出回ってしまうと、大事なお金や情報がなくなったりする危険性があり、こういうことをなくすように正しく動くプログラムを作る仕事は大変重要です。

そんな難しいことをやらなくても、と思われるかもしれませんが、ほんとうにこれに似たことが、すごく簡単なプログラムの中でもたくさん起きます。
上にも書きましたが、正解というプログラムがあって教科書に載っていることはまれでして、正解がない世界でみんなが知恵を振り絞ってプログラムを直したりしていくプロセスが大事だと思います。
世の中のプログラムはこうしてみんなが知恵を振り絞った結晶です。少しでもこういうプロセスに触れておくことで、もしかしたらお子さんが大きくなって、世の中を支えるプログラムを作るようになるかもしれません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?