※ 当ページには【広告/PR】を含む場合があります。
2022/12/18
【Scratch入門】Scratchの条件分岐をじっくり考えてみる
【Scratch入門】コスチュームを変えてスプライトのアニメーション効果を付ける
Scratchで処理をループさせるにはいくつか種類があります。昔からC言語の方面でも、forループ、whileループ、do~whileループなど処理を繰り返す文法構文もそれぞれに一長一短があるように、Scratchのループブロックも使い所考える必要があります。今回は、Scratchで使う「ループ処理」の基礎的なテクニックをまとめておきましょう。
【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選
Scratchの3つのループブロック
主にScratchで使うループ処理の種類は以下の3つに分類され、基本的に「ループ」といえばこの3つのブロックを指します。コーディングとしては[コード]タブ > [制御]
から選択することが可能です。この3つは基本的には、「ブロックの中身の処理を繰り返す」という意味では全く同じですし、どのブロックを選択するかは、プログラマーの自由です。したがって、どのブロックを使うのが正しい、という話ではないのですが、最終的に他の人がコードを見たときに出来栄えの良いプログラムでは、①〜③
のブロックの使い分けが上手い場合が多いと感じます。良いプログラムとは、プログラマーの慣れやテクニック・センスによるところが大きいので、プログラミングの基礎となるループ処理も細かいことですが、しっかり身につけていきましょう。以下の節ではブロックごとにその特徴を確認してみます。FORループブロック
繰り返し処理の「回数」が決まっている場合、のブロックを使います。便宜上、ここでは「FOR(フォー)ブロック」と呼ぶことにしましょう。for
ループとは古くはBASIC言語まで遡ることのできるループ処理構文で、現在使われている様々な他のプログラミング言語でも、おそらく文法上for
という予約語をもっている場合が多く、伝統的にループさせる回数を指定して繰り返しを行わせるためのものです。特徴としては、ループの終了条件などを深く考える必要がなく、何回で処理が終わるか一目で分かるため、シンプルなアルゴリズムで使うのに向いています。逆に処理の終了条件が複雑(動的)に変わるループ処理には向かない構文です。簡単にプログラム例を上げてみましょう。Scracthプロジェクトを新規作成して、ネコのスプライトに以下のコードを挿入します。すると、FORブロックの中の処理を単純に10回繰り返すことが分かります。無限ループブロック
次に、際限なく、とりあえずずっと処理させておきたいというときには、以下のブロックを使います。その名の通り、プログラムかスクリプトを止めるまで「ずっと」ループ処理をし続けるブロックです。この記事ではこのブロックを「無限ループブロック」と呼ぶことにします。このブロックはプログラムの大黒柱となる「メイン処理」
で使われることが多いです。こちらもScratchプロジェクトを新規作成して、ネコのスプライトに以下のブロックコードを作成してみます。出来たらプログラムをスタートしてみましょう。無限ループ処理ですので、一度スタートしたプログラムは、停止ボタンを押す以外では止めることが出来ません。基本的に、“止まってほしくない”処理や、イベント・変数などを“常に監視したい”処理など、重要な役目のあるループ処理に使いましょう。WHILEループブロック
もう一つ、以下のように終了条件を与えてそれを満たすまではずっと処理するタイプの繰り返し制御のブロックもあります。こちらも先程の説明したFor
と同様に、BASIC言語のころから存在するWhile
ループ構文にあたる働きをします。ということでここではこのブロックを「WHILE(ホワイル)ブロック」と呼ぶことにします。一般的にWhile構文は、ループ処理の「継続条件」
を使って、継続条件が真(true)の場合には繰り返し処理を実行し続けますが、偽(False)になったら処理が終了する、というものです。他方で、ScratchのWHILEブロックは、継続条件ではなく、一種の「終了条件」
を「○○まで繰り返す」
の〇〇の部分に記述することになるので、少し作法が違うかもしれません。なお、ScratchのWHILEブロックは、終了条件が永遠にTrueにならない場合、先ほどの無限ループブロックと同じ処理になります。では、このWHILEブロックを使ったループ処理のユースケース(利用例)を簡単に上げておきます。新しいScratchプロジェクトを立ち上げて、ネコのスプライトに以下のブロックコードを追加します。コードが出来たら、このプログラムをスタートしてみましょう。先程の無限ループブロックとは違い、終了条件(=ここではマウスクリック)が真(True)になったとき、このループ処理が終了することが確認できます。WHILEブロックは、イベント処理待ち中の別の処理などに利用することができます。
【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ
まとめ
今回はScratchプログラミングの中でも基礎の中の基礎である「ループ(繰り返し)」の処理に関して、主要な3つのブロックコーディングのパターンを取り上げてみました。とりあえずどれを使うのが正しい、ということではありませんので、Scratchに慣れるまではどのブロックでも好きに使ってみて、ベストな勘どころを徐々につかんでいきましょう。