こんにちは、沖縄市にある子供向けプログラミング教室エイドのミチノリです。今日も子供たちと一緒にプログラミング学習をしています。

 

今日はプログラミング学習における大切な学びポイントの一つ「トライアル & エラー」について書きたいと思います。プログラミング学習を通じて学んでいける事はたくさんありますが、その中の一つにトライアル&エラーの考え方があります。

 

その意味は読んで字のごとく、トライアル(試して)&エラー(間違いやエラーを直す)です。

 

プログラミングの世界では、正解は一つではありません。中には特定の動き方や処理に対してパターン化されたプログラムもありますが、昨日作ったプログラムを見直して、さらにより良いプログラムへと進化させる事が当たり前です。どうすれば、もっと無駄がなくて、エラーが起きにくいプログラムになるのかを考え続けていく事で、目的に対して問題を起こさないように予測して対処していけるようになります。

 

例えば、こちらはバイクをまっすぐに走らせるプログラムです。 

 

旗が押されたら、座標で位置を指定して、速さの変数を0に指定します。

 
そして、速さの変数の値に応じて前に進むようにプログラムしています。もしも上向きの矢印が押されたら、変数を少しずつ加算していき、上向きの矢印が押されていない状態になったら、メッセージを送る事で、変数の値を減算し続けて、0より小さい値になるまで繰り返しています。

このプログラムで問題となるのが、速さの変数を < 0 より小さくなるまで繰り返すという部分です。0より小さくなるということは、-0.1の値になるまで繰り返してしまうので、バイクのスプライトが停車するのではなく、後方に下がり続けるような動きになってしまいます。

このプログラムでも、なんとなく正しく動いているように見えて、とりあえずゲームとして成立はしますが、速さの変数をきちんと0にする事でピタッとバイクが停車して、より正しい動きになります。

 そこで、このプログラムをこのように変更してみます。

 

先ほどは、「速さ < 0 」まで繰り返すとしていた部分を、「速さ = 0」まで繰り返すに変更します。

さらに、「速さ = 0」まで繰り返すのブロックの中に、「速さ < 0」なら速さの変数を0にする という命令を加えます。

「速さ = 0」まで変数を減算すれば、0になった時にピタッと停まるように感じますが、scratch(スクラッチ)では、変数の値を小さく変え続ける命令を与えたときに、その処理が早すぎて0になっている事を認識せずに数値を下げ続けてしまう場合があります。

実際には「速さ = 0」なのに、その瞬間が早すぎて通り過ぎてしまい、 -0.1以下となり処理し続けてしまうのです。そうなってしまうと、無限に数値を下げ続ける状態となってしまうので、万が一にそうなってしまった時の保険として、もしも「速さ < 0」なら、速さの変数を0にするという処理を加えます。

 

こちらが、そのビフォーアフターです。最初のプログラムよりも、予想されるエラーに対して処理を見直して、新たな処理を追加をした事で、ゲームがより正しく動くようになります。これがトライアル&エラー(試して直す)です。今回は追加をしましたが、逆に省いて処理を簡潔にする場合もあります。

 

一度作ったプログラムを動かしてみた後に、気づいた事を洗い出して、改善し、より良い動きを目指していく考え方が大切です。「これぐらいでいいや」ではなく、「もっと良くするにはどうしたらいいんだろう?」という意識が働けば、より良いプログラムとなります。
 
ちなみにですが、今回例としたプログラムはほんの一例なので、これが唯一の正解ではありません。大人と違って、子供たちの場合は、トライアル&エラーの考え方が身につくまでにとても時間がかかりますが、根気よく楽しさを持ちながら、何度も繰り返して伝え続けていく事で、身についていきます。

今後も子供たちと一緒に、様々な事を考えて改善し続けながら、学習を行っていきたいと思います。

今日は以上です!