2018年3月17日土曜日

Scratchでプログラミング その25 うまく動かないときの対処方法(全角や空白に注意)

Scratchの使い方解説です。
せっかく作ったプログラムが、うまく動かないときの対処方法について


せっかく作ったプログラムを実行してみたとき、うまく動かないことってありますよね?
そんなときの確認事項について


これはネコがグルグル回転するプログラムです。
ネコをクリックすると回転方向が反対になります。

ですが、これはネコをクリックしても回転方向が変わりません。
なぜでしょう??


※このプログラムはバグを含めて、正しく動かないようにしています。
実際のソースはこちらから確認してください。
中を見るボタンをクリックすると、プログラムのコードが確認できます。


1.問題がありそうなのは左右のどちらのブロック?

旗をクリックした時点で、ネコは右方向に回っています。
ですので、左側のブロックは正しく動いています(と仮定します)


2.部分的に実行してみる。

スプライトをクリックしたときに変数が1になれば、回転方向は変わるはずです。


そのまま実行したまま、個別に実行したい場所のブロックを抜き出してみます。
今回は「変数1を1にする」を抜き出してみました。
抜き出したブロックをダブルクリックすると、ネコが反対方向に回りだしました。

ということは、このコマンドは正しそうです。

残る怪しい場所は、
「もし変数1=0なら」
の部分ですね。
どこがおかしいんでしょうか?


 3.制御式の値に注意!

実は、この「変数1=0」の0という数値が、半角の0ではなく全角の0となっています。
見比べてみると、

半角のゼロ → 「0」
全角のゼロ → 「0」

ぱっと見は同じですが、プログラムの世界では全くの別物です。

数値だけではなく文字も同じように全角と半角に区別があります。

アルファベットの場合
半角のA → 「A」
全角のA → 「A」

空はく(スペース)の場合
半角の空白 → 「 」
全角の空白 → 「 」

こういうのも気づきにくいですね
ただしい文字列 → 「あいうえお」
先頭や文末や空白を含んでいる → 「 あいうえお 」
なかに空白を含んでいる → 「あいう えお」