【連載】どれ使う?プログラミング教育ツール

プログラミングの基本をScratchでおさらいしよう(分岐編)

ー「順次」「反復」「分岐」をわかりやすく

プログラミングの基本になる考え方に「順次」「反復」「分岐」があります。何かプログラムで実現したいことがあるときには、まず、その手順を「順次」「反復」「分岐」の3つの制御構造を使ってフローチャートのようにして考えます。

前2回の記事「順次編」「反復編」では、子ども向けプログラミングツールとして有名な「Scratch(スクラッチ)」を使って、その考え方を紹介しました。今回は「分岐」をやってみましょう。

「分岐」ってどういうこと?

「分岐」というのは、実行することを条件に応じて分けることです。条件が満たされればAという処理をして、満たされなければBという処理をするというように、プログラムにあらかじめ実行する内容を用意しておきます。

例えるなら、道を歩いていると立て看板に「はい」か「いいえ」で答えられる質問が書いてあって、答えが「はい」ならAの道、答えが「いいえ」ならBの道に進むというイメージです。

「分岐」のイメージ

日常を例に、「傘を持って出かけるかどうか」の行動を考えてみましょう。「今雨が降っている」という条件が満たされて「はい」の状態なら「傘を持って出かける」、条件が満たされず「いいえ」の状態なら「傘を持たずに出かける」となります。

雨がふりそうなときにも対応するには、条件を「天気予報の降水確率が50%以上である」とすれば良いでしょう。人はそのときの気分や状況で行動を選ぶ条件を変えることもあると思いますが、プログラムの場合、条件も、実行する内容もあらかじめ決めて用意しておかなければいけません。

Scratchでやってみよう!

さっそくScratchで分岐の構造を使ったプログラムを作ってみましょう。Scratchは無料で利用できる子ども向けのプログラミング環境で、ウェブブラウザでアクセスできます。

年齢から水族館の入場料を判断するプログラムを作ってみましょう。新しいプロジェクトを作り、初めから用意されているネコのキャラクターをそのまま使います。ネコを選択した状態で[緑の旗が押されたとき]ブロックを置き、好きな背景を選んだら準備完了です。

Scratchの画面。好みの背景を選び[緑の旗が押されたとき]ブロックを配置

年齢から入場料を判定!

ネコのキャラクターが年齢を聞き、ユーザーが年齢を入力すると水族館の入場料を教えてくれるという仕組みをプログラムしていきます。

まず、ネコが質問をするプログラムのブロック["あなたの名前は何ですか?"と聞いて待つ]を[緑の旗が押されたとき]につなぎます。質問の文言を「あなたの年齢は?」に書き換えてください。

質問をして待つプログラム

["あなたの名前は何ですか?"と聞いて待つ]ブロックを使うとユーザーに質問をする枠が表示され、ユーザーが枠に入力した質問の答えをプログラムで扱えるようになります。

実行すると吹き出しでセリフが表示され、入力の枠が表示される

答えに応じてセリフを変える条件を作る

続いて条件によってセリフを変えるプログラムを作ります。水族館の入場料は、16才未満が子ども料金の500円で、16才以上が大人料金の1500円です。

条件で分岐するプログラムを作るには、[もし" "なら〜でなければ〜]ブロックを使います。

条件分岐のブロックは「制御」カテゴリーにある

[もし" "なら〜でなければ〜]ブロックに条件を入れます。16才未満を判断する条件として「[答え]<16」を設定します。この条件が「はい」の状態なのか「いいえ」の状態なのかで、実行するプログラムを分けるのです。

条件を設定した。条件が「はい」の状態かどうかに応じて実行するプログラムが分岐する

ネコに年齢をを聞かれたときに入力枠に16未満の数字を入力すると、「もし"[答え]<16"なら」のすぐあとのプログラムが実行され、16以上の数字を入力すると、「でなければ」のすぐあとのプログラムが実行されます。

どちらにも["こんにちは"と"2"秒言う]ブロックを入れ、それぞれふさわしいセリフを設定しましょう。ここでは、16未満ならば「500円です!」で、そうでなければ「1500円です!」にします。秒数は少しゆっくり読めるように5秒にします。

答えが16未満とそうでないときで違うセリフを言うプログラム

これでプログラムの完成です。緑の旗をクリックしてプログラムを実行し、いろいろな数字を入力すると、入場料金を判定してセリフが変わります。やり直すときはもう一度緑の旗をクリックします。なお、半角数字で入力しないと数値として判定できないので、正しい答えになりません。

例えば「5」と入力してチェックボタンを押すとネコが「500円です!」と言う
例えば「30」と入力してチェックボタンを押すとネコが「1500円です!」と言う

シニア料金も設定したい!

さらに、シニア料金も設定してみましょう。16才未満は子ども料金500円、16才以上60才未満が大人料金1500円、60才以上がシニア料金1200円です。

[もし" "なら〜でなければ〜]を入れ子にして、次の図のようにすると、3つに分岐したプログラムにすることができます。

3つに分岐させた場合のプログラム

このように、3つ以上の複数の分岐をすることもできます。

分岐の構造では、条件が「はい」の状態か「いいえ」の状態かという考え方で処理を分けます。今回条件のとして設定した「答え<16」という式は論理式といって、「はい」の状態を「真」とか「true」と呼び、「いいえ」の状態を「偽」とか「false」と呼びます。論理式で分岐させるのはのはプログラミング独特の考え方で、慣れるまで感覚的にわかりづらいかもしれませんが、いろいろなプログラムを見て真似しているうちに、よくやる手法がわかるようになるでしょう。

全3回で紹介した「順次」「分岐」「反復」の構造をまずおさえておくと、プログラムの処理の大きな流れを理解したり、自分で流れを考えたりしやすくなります。いずれの構造も単独で使うことはほとんどなく組み合わせて使うのでもっと複雑に見えますが、これらの組み合わせでさまざまなプログラムの構造ができているのです。基本構造を知っていると、プログラミングを学ぶ際の安心感にもなりますから、ぜひおさえておいてください。

「どれ使う?プログラミング教育ツール」これまでの記事

2019年~2022年4月まで「窓の杜」掲載

狩野さやか

株式会社Studio947のデザイナー・ライター。ウェブサイトやアプリのデザイン・制作、技術書籍の執筆に携わる。自社で「知りたい!プログラミングツール図鑑」「ICT toolbox」を運営し、子ども向けプログラミングやICT教育について情報発信している。