スポンサーリンク
Scratch

Scratch(スクラッチ)で条件分岐と変数応用編を覚えよう

Scratch

小学校の授業で学ぶScratch。
正三角形を描くプログラムで基本を学びました。
そして前回、Scratchをより使いこなすための繰り返し処理と変数の使い方を解説しました。
今回は条件分岐と変数の応用を学びましょう。
プログラミング技術の勉強なのでちょっと退屈な内容ですが、前回の繰り返し、変数、そして条件分岐を知ることで作れるプログラムが格段に広がります。

スポンサーリンク

条件分岐って何?

さて、条件分岐って何でしょう?
条件によって実行するプログラムが分岐(別れる)という仕組みのことです。
こっちのプログラムを実行したい場合、あっちのプログラムを実行したい場合のようなシーンで使います。

身近なところで条件分岐を使っています。
例えば、YesNoチャートです。
質問に対して「Yes」「No」で回答していくと最後に性格診断などにたどりつくやつです。

この例では「日本に国籍がありますか?」という質問に「はい」か「いいえ」で答えます。
これをプログラムにすると、
・「はい」の場合「あなたは日本人です」と表示するプログラムを実行する。
・「いいえ」の場合「あなたは外国人です」と表示するプログラムを実行する。
の様に、条件によって実行するプログラムが変わります。
これが条件分岐です。

条件分岐のプログラムを作ってみよう

国名を入力して、「日本」と入力されていたら「あなたは日本人です」と表示する。
「日本」以外が入力されていたら「あなたは外国人です」と表示するプログラムを作ってみます。

完成形はこんな感じです。

条件分岐は次の部品のいずれかを使います。

「もし ① なら ②」または「もし ① ならば ② でなければ ③」の部品です。

この部品はどのように使うのでしょうか。
濃いオレンジの六角形(①)に「演算」グループの部品をはめ込むことができます。

この演算の部品の式が成立するときに「もし・・・なら」の下にある空欄部分(②)のプログラムが実行されます。
たとえば「〇>50」という部品がありますね。
〇の部分に入る数字が50未満なら式が成立するので空欄(②)のプログラムが実行されることになります。
〇の部分に入る数字が50以上で式が成立しない場合は空欄(②)のプログラムは飛ばして、この部品の下に続くプログラムが実行されます。

「もし ① ならば ② でなければ ③」 の部品も同じです。
式が成立するなら②のプログラムが実行されて、不成立の時は③が実行されます。

では、題材を変えて復習しましょう。

多角形を描くプログラムを0角形に対応しよう

前回、多角形を描くプログラムを作りました。
何角形にするかを入力しました。
このプログラムで0を入力した場合には円を描くプログラムに改造してみます。
多角形を描くプログラムと円を描くプログラムは全く違うので、入力された数字によって実行したいプログラムが違うことになります。

まずは、円を描くプログラムを考えよう(おまけ)

今回は条件分岐の学習なので、円を描くプログラムを考えるのは本題ではないです。
しかし、折角なので少し考えてみましょう。
本題の条件分岐を早く知りたい人は読み飛ばしてください。

Scratchで円を描くプログラムを次のように作ってみました。

Scratchでは円を描く機能がなさそうです。
そこで、短い直線をちょっとずつ角度を変えて円に近い図を描くことにします。
1行目:円周の長さを計算して変数「円周」にセットします。(直径×円周率 ですね)
2行目:短い直線の長さを決めます。円周の長さを360等分した長さを変数「1回の歩数」にセットします。
3行目:円を描くためにペンを下します。
4行目:繰り返し(ループ)処理を使って360回の繰り返しを作ります。
    先ほど360等分した短い直線を360回描くための繰り返しです。
5行目:「1回の歩数」の長さの直線を描きます。
6行目:1度向きを変えます。
    円は360°なので1度ずつ360回向きを変えると円が描けることになります。
7行目:円が書き終わったのでペンを上げます。

0角形の場合の条件分岐

では、円を描くプログラムを多角形を描くプログラムと組み合わせてみましょう。
こんな感じです。

「もし・・・ならば」の部分に先ほど作った円を描くプログラムをはめ込んでいます。
「・・・」の部分の条件式は「n角形=0」としています。
入力された角の数がゼロの場合に成立する式です。
ゼロの場合、0=0という式なので正しいことになります。
他の数字を入れると1=0などとなり式が成立しません。
その場合、「でなければ」の部分が実行されます。
「でなければ」の部分には以前作った多角形を描くプロジェクトをはめ込んでいます。

最後に

いかがでしょうか、条件分岐について理解できたでしょうか。
少し難しい話をしました。
前回の繰り返し処理、変数、今回の条件分岐を使いこなすことができれば、作れるプログラムのバリエーションが格段に広がります。
実際、ビジネスで作っているプログラムも繰り返し、変数、条件分岐の組み合わせがほとんどです。

このような、単純な動きをする部品を工夫して組み合わせて、やりたいことを実現する手段を考えるのが小学校のプログラミングの狙いといっていいでしょう。
もう少し身近なたとえをすると、〇△□の積み木を組み合わせて、家や車を工夫して作りますよね。
それと同じような感覚です。

コメント

タイトルとURLをコピーしました