繰り返しと条件判断のイメージをつかもう|MacFan

レクチャー Scratchでプログラミング

Scratchでプログラミング【第2回】

繰り返しと条件判断のイメージをつかもう

文●茨木隆彰 京都クリエイティブワークショップ

前回はプログラミングをというよりは、「Scratch」の使い方を学んだ。今回からは、もっとしっかりとしたプログラミングを学んでいこう。

突然だが、プログラミングとはなんだろうか。それはゲームを作ることであったり、あるいはアプリケーションを作ることであったりするわけだが、どの ような場合でも作りたい「モノ」とそれに必要となる「処理」を考え、そしてこの「処理」を組み立てていき実現することになる。つまり、中心となるのは「処 理を考えること」だ。

 ところが、コンピュータと人間では考え方が違っているから厄介だ。それを自分の手で実現するなら簡単だと思っても、それをコンピュータに理解できるように指示するのは意外と骨が折れる作業だったりする。
 ここが「プログラミングは難しい」と思われる所以なのであるが、コツさえ覚えてしまえばそう難しいことではない。

 まず、コンピュータが理解することができる処理は大きく分けて「繰り返し」と「条件判断」の2つだけだということを覚えておこう。この2つはこれ からプログラミングをしていく上で特に重要な要素になる。すべてのプログラムはこれらの組み合わせでできているといっても過言ではないのだ。
 また、最後ではデータを保持する「変数」という概念にも触れていきたい。これに変化を与えることで、処理の内容を変化させることができる。

 といっても、現時点では、これらの充分なイメージは沸かないかもしれない。そこで、実際に「Scratch」を使っていろいろと確かめていくことにしよう。Scratchなら、これらのイメージをつかむことはあまり難しくないはずだ。

 

1-1.png

1-2.png

①まずは簡単に準備しておこう。前回の内容を思い出しながら、スプライトを用意しておこう。本稿ではボールを1つ用意して、繰り返しや条件判断を使いながらいろいろな動きをさせていく。また、今回はボールが回転すると都合が悪いので、停止ボタンを押して回転を止めておく。


1.png

1-1.png

②準備ができたら、図のようなプログラムを作って、緑の旗を押して実行してみよう。ボールは少しだけ動いてとまったはずだ。「10歩動かす」が一度だけ実行されただけでやることがなくなり、プログラムは終了してしまった。


3-1.png

1-1_2.png

③ボールを動かし続けるように改造していこう。そのためには「繰り返し」が必要だ。繰り返しはその名のとおり同じ手順を繰り返す処理だが、いくつか の種類がある。まずは繰り返しが永遠に続く「ずっと」だ。このように組み立てれば、ボールは画面の外までまっすぐに進み続ける。つまり、「10歩進む」が 何度も繰り返し実行されるのだ。


4-1.png

④また、回数が限定された形の繰り返しもある。この「~回繰り返す」のブロックも[制御]の中にある。この例では先ほどは永遠に繰り返されていた 「10歩進む」が5回しか実行されないので、そのために画面中程程度でボールの動きが止まってしまうはずだ。繰り返しの基本はこの2つだけだ。拍子抜けす るほど簡単だったと思う。ここでのミソは、囲まれた中身が繰り返し実行されるということだ。ここを覚えれば充分だ。


5-1.png

⑤次は、条件判断に手を出していく。これも繰り返しと同様に、とても簡単だ。まずは[制御]から「もし◇なら」を引き出してくる。そして、この◇の 部分に[調べる]にある条件を組み合わせる。例えば今回は「マウスが押された」を選ぶ。できたら、青い旗をクリックして実行してみよう。マウスを押すと、 ボールが落ちていくだろうか。


6-1.png

6-2.png

⑥先ほどのプログラムはうまく動かなかったはずだ。なぜだろうか。答えは、この条件判断が1度しか実行されないからだ。何度も条件判断しなければ、 旗を押した次の瞬間には1度だけの条件判断を実行してプログラムは終わってしまう。「ずっと」の内側に条件判断を入れ直そう。これで、マウスを押している 間はボールが動くようになるはずだ。


7-1.png

1-3.png

⑦今度はもう少し違う形の条件判断を使ってみよう。[制御]の中の「もし◇なら - でなければ」のブロックを取り出そう。先ほどは「~なら」のとの処理しか書けなかったが、その逆を定義することも可能だ。ここでは◇に「調べる」から「端 に触れた」ブロックを入れて、「もし端に触れているなら」ボールを停止させ、「端に触れていなければ」ボールが動くプログラムを作ろう。


8-1.png

8-2.png

⑧さて、今度はこのボールを跳ね返るようにしてみたい。跳ね返るという動作は「地面(端)に触れたら」→「方向を180度(上向き)回す」→「跳ね 返る距離を動く」→「方向を180度(下向き)回す」という手順に分解される。これをScratchのプログラムにしたのが図のスクリプトだ。


9-1.png

⑨ところが、実行してみると跳ね返って上昇する時に一気に上がっていってしまう。そこで、このように上昇するときも何回かの「繰り返し」にしてみよ う。このように、繰り返しの中に繰り返しを入れるようなプログラムもよくある。しかし、複雑でプログラムがどのように動いているかわかりづらい。どのよう に動作しているか確認するためには、[編集]メニューから[ステップ実行]を押してみよう。実行中のスクリプトが光り、今どれを実行しているのか確認でき るようになる。


10-1.png

10-2.png

10-3.png

⑩ボールが跳ねる高さは毎回同じなので、これを少しづつ下がるようにしてみよう。跳ね返りときに戻る繰り返し回数は「20」回だが、これが毎回少し づつ減るようにすればよい。こういうときは「変数」を使う。[変数]から[新しい変数を作る]をクリックし、「跳ね返り量」という変数を作ってみよう。

 


11-5.png

11-2.png

⑪変数ではいくつかの操作ができる。まず、「~を○にする」は~という変数に書かれた数を○に書き換える。「~を○づつ変える」では、~に書かれた 数に○を足して書き換える。この動作を意識しながら、図のようにプログラムを書いてみよう。ステップ実行しながら、画面左上に表示された変数の数値が変 わっていく様子を確認し、どのように動いているかをチェックしていこう。


 さて、ここまで実際にプログラミングしてみていかがだっただろうか。今回は「繰り返し」「条件判断」そして「変数」に触れてきたが、これらがどのような 役割をもちどのように動くかのイメージがつかめれば充分だ。Scratchにはこれらの動きをするブロックが、紹介した以外にもいくつか用意されている。 動きとしてはほんの少し違うだけなので、触ってみるのもよいだろう。

 また、今回触れた要素だけを知っていれば、さまざまなものを作れるはずだ。前回の飛行機を離陸・着陸するように動かしたり、マウスで操縦したり…いろいろチャレンジしてみてほしい(文/茨木隆彰 京都クリエイティブワークショップ)。


京都クリエイティブワークショップについて

京都クリエイティブワークショップは、 ScratchやViscuitといったグラフィカル・プログラミング環境を用いて小中学生などにゲームづくり体験ワークショップ(公開講座)を開くこと を目的とした学生団体です。高校生を中心に、大学生・高専生などで構成されています。ターゲット年齢が夏休みとなるオープンソースカンファレンスin京都 においては、セミナー形式でワークショップを開催する予定です。URL:http://pwsk.cosmio.net/