今年の抱負は健康に気を遣うこと! よい食事、よい睡眠、よい生活をしようと考えているだけのさばとでございます。今年もどうぞよろしく。
今回の内容も、Scratchのエラー(間違い)を探せ! でございます(第2回)。プログラミングにおいては正しく命令を組み立てることができないと、正しく実行することができません。意図通りに実行できないことをバグがあるというふうに申しますが、今回もScratchでのよくある間違いについて見ていきましょう。
なぜか……動かない

このプログラムは20歩右に進んで、端についたら跳ね返るプログラムのはずです。ですが、猫は一切動いてくれません。なぜでしょうか。
問題の原因
これは20
が全角で入力されているのが原因です。全角で入力された文字は数字であっても文字列として扱われます。つまりこの20
は数字として意味があるものではなく言葉としてそのまま扱われるということです。
このようにプログラミングにおいて文字列と数字を分けて考える必要があります。混ぜて計算したりしないように注意していきましょう。
これで終わりでもいいのですが、そんなプログラムを書いたときにScratchはエラーを返しません。なんらかの形で無理やり実行可能な状態にして実行しています。そのルールを考えることでより理解が深まるのではないかと思います。それではScratchの仕様について少し考えてみましょう。
数字型が求められているところに文字列を入れる
最初にお見せした例がそれですね。「○歩動かす」ブロックの正しく動かすための○(引数)は数字型が要求されています。そこに文字列を入れるとどうなるか。
結論から言うと、0
として扱われているようです。

このように組んでみました。このように組むと、少し遅延を挟みながらも10歩動かすは正しく動きます。つまり、間違いのあるブロックが含まれていたとしてもスクリプトの実行が中断されたりすることはないようです。
数字型と文字列型の計算

計算もしてみました。このように全角と半角を計算式に入れた場合は全角は0、半角はそのままその数字として扱われるようです。
気をつけるべきポイント
1. 数字は半角で入力する
日本語入力状態だと全角で入力することになるので入力モードを切り替えるのを再チェックしましょう。
2. 文字列と数値は区別される
プログラミングでは全角数字は文字列扱い。
「20」≠20
3. エラーが出ないからと安心しない
Scratchは無理やり動いてしまう場合が多い。挙動がおかしいときは全角を疑う。
まとめ
半角と全角はしっかりと区別して入力できるようにしましょう!
それでは、また。
