【Scratch入門】Scratchの条件分岐をじっくり考えてみる


※ 当ページには【広告/PR】を含む場合があります。
2022/12/21
【Scratch入門】Scratchでキーバインド〜キーボードからの操作を覚える
【Scratch入門】繰り返しのテクニックを覚える〜最適なループブロックを選択しよう
合同会社タコスキングダム|TacosKingdom,LLC.

「条件分岐」とはScratchのみならず、他のすべてのプログラミング言語に共通して存在する文法構文の一つです。

ここではScratchのコードブロックで利用できる・いくつかの「条件分岐」をまとめてその特徴を整理してみます。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

条件分岐の種類

条件分岐ブロックを使うには、[コード] > [制御]のパートを選択します。

合同会社タコスキングダム|タコキンのPスクール

現在のScratchで使われる条件分岐ブロックには以下のものがあります。

            
            1. もし〜ならブロック
2. もし〜なら〜でなければブロック
3. 〜まで待つブロック
        

合同会社タコスキングダム|タコキンのPスクール

以降ではそれぞれのブロックの簡単な使い方をひとまず紹介していきます。

もし〜ならブロック

まず最初は条件分岐のもっとも基礎であり、他のプログラミング言語でも大抵使える文法にあたる「IF構文」があります。

ScratchでもこのIF構文として、
「IFブロック」と呼べるものが以下のコードブロックです。

合同会社タコスキングダム|タコキンのPスクール

意味の通り、
「もし<条件ブロック>が正しい(真)なら、コードの中身を実行する」、という機能です。

Scratchプロジェクトを新規作成し、ネコのスプライトに以下のコードを追加してみましょう。

合同会社タコスキングダム|タコキンのPスクール

以下のようなプログラムとなるでしょう。

実行してもらうと、指定した
「マウスのポインターに触れた」という条件が真(True)になったときに、ネコのスプライトにマウスカーソルが触れると喋るような動きをしています。

もう少しIFブロックを使った例を上げてみましょう。

連続して2つのIFブロックを並べることで、柔軟に「場合分け」した条件を同時に評価することができます。

例えば、新規にScratchプロジェクトを作成し、ネコのスプライトに以下のコードを追加してみましょう。

合同会社タコスキングダム|タコキンのPスクール

以下のようなプログラムになっていると思います。

この場合、ネコのスプライトにマウスを当てる時と話すときで、表示されるメッセージを場合分けしています。

IFブロックは2つだけでなく、いくつでも連続して並べることが出来ます。

他のプログラミング言語で、
「CASE構文」と呼ばれる条件が複数に渡る際に使われる文法がありますが、Scratchでも以下のようにするとCASE構文に近い使い方が出来ます。

合同会社タコスキングダム|タコキンのPスクール

このプログラムを実行してみると、以下のようになります。

この例では変数を使って、
変数 = 3のときに3と表示されるだけですが、場合分けしたい条件が多い場合に良く使われるテクニックです。

もし〜なら〜でなければブロック

Scratchの条件分岐として利用できるもう一つのブロックに、「もし〜なら〜でなければブロック」があります。

合同会社タコスキングダム|タコキンのPスクール

このブロックは、先程のIFブロックほど重要ではありませんが、
「AでなければB」というように選択肢が2つしか存在しない場合に利用することができます。

他のプログラミング言語において、このブロックは
「IF-ELSE構文」に対応しています。

ですので、ここでは「もし〜なら〜でなければブロック」は長ったらしいため、
「IF-ELSEブロック」とでも呼ぶことにしましょう。

以下は先程のIFブロックで説明した、2つの条件分岐で紹介した例をIF-ELSEブロックで置き換えると、

合同会社タコスキングダム|タコキンのPスクール

とすることで、先程のコードよりもスッキリと書けています。

このプログラムも実行すると以下のように動くでしょう。

IFブロックだけでなく、IF-ELSEブロックも上手く使うと、見やすいプログラムコードになります。

〜まで待つブロック

条件分岐とも少し違うのですが、条件によって処理の進行を一時停止させるという意味で、ここでは分岐の一つに入れて説明します。

合同会社タコスキングダム|タコキンのPスクール

このブロックは、先程説明したIFブロックや、IF-ELSEブロックと比べても利用する機会があまりないと思います。

むしろ別のブログ記事で説明した
WHILE構文の逆の働きをするUNTIL構文を意識して作られたのかな?と推測しますが、無理をして使うほどのことはないでしょう。

合同会社タコスキングダム|タコキンのPスクール
【Scratch入門】繰り返しのテクニックを覚える〜最適なループブロックを選択しよう

いくつか種類のあるScratchでの繰り返し(ループ)処理を使いこなすポイントを簡単にまとめてみます。

とりあえずここではこのブロックを
「UNTILブロック」と命名することにしましょう。

例えばUNTILブロックを利用した条件分岐のコードは以下のようになります。

合同会社タコスキングダム|タコキンのPスクール

これを実行してみると、以下のようなプログラムになります。

一応、条件分岐といえばそうですが、UNTILブロックで条件分岐を行う場合には、ある条件(状態)に対して、必ず次の条件(状態)が決まっていないと使いづらいと思います。

このように条件(状態)の順序が固定された場合にしか利用しにくいため、さほど使っている例を見ないブロックと言って良いでしょう。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchをしっかり学ぶためのオススメ書籍まとめ

Scratchで使える条件の種類

Scratchで利用できる条件ブロックにもいくつかの種類が用意されています。

ここからはおまけ的な内容で、どのような条件ブロックがあるのかを少しだけ解説してみます。

現在のScratchの基礎機能で使える条件ブロックは下の図にあるものだけです。

合同会社タコスキングダム|タコキンのPスクール

こうして眺めてみると、思った割には少ないのかな、といった印象です。

条件ブロックは六角形のブロック形状で、大きく2つのカテゴリーに別れており、青いものが
「調べる」系、緑のものが「演算」系です。

“調べる”系はスプライトが他のなにかと当たっているかを調べる衝突判定の条件ブロックがあります。

衝突判定は、
マウスのポインター(画面の)端他のスプライト色(1種類指定)色(2種類指定)の5パターンから適切なものを選択します。

また、キーボードのキーがどれかを判定する条件ブロックと、マウスがクリックされたかを判定する条件ブロックも利用できます。

“演算”系には、数値を比較したり、2つの条件を合成したり、否定(反転)したり、文字列に含まれる文字があるか判定したりする条件ブロックがあります。


合同会社タコスキングダム|タコキンのPスクール【Pschool厳選】Scratchを学べるオンライン・駅前プログラミングスクール5選

まとめ

今回はScratchプログラミングの中でも基礎の中の基礎である「条件分岐」の処理に関して、基本的なブロックコーディングのパターンを取り上げてみました。

とりあえずどれを使うのが正しい、ということではありませんので、Scratchに慣れるまではどのブロックでも好きに使ってみて、ベストな勘どころを徐々につかんでいきましょう。