こんにちは、ナナです。
プログラムの要素として「分岐」と呼ばれるものがあります。
プログラムは順番に進みますが、分岐を使うことでプログラムが進む道を切り替えることができます。
この記事では、次のことを学習できます。
では、makecodeを使ったプログラムの分岐方法を学んでいきましょう。
プログラムが分岐するってどういうこと?
![](https://monozukuri-c.com/wp-content/uploads/2019/07/ba72754203794e9b44dd47acd4b4effe.png)
師よ!プログラムの世界には「分岐」と呼ばれる技があると聞いたことがあります。「分岐」について教えてください。
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
「分岐」はプログラミングを行うためにすごく大事な技なんだよ。
分岐を使うと「もし~だったら~しよう」みたいなプログラムを作ることができるようになるよ。
「分岐」とは分かれ道のことです。分岐を使うことでプログラムの進む道を変えることができます。
生活の中でも登場する「分岐」ってなに?
みんなは普段生活している中で、どれにしようか選択に迷うことってありますよね。
例えば、
おなかが空いたけど、チョコレートを食べようか、ポテトチップスを食べようか?
![チョコレートとポテチ](https://monozukuri-c.com/wp-content/uploads/2019/08/cf7d2d390d73359748aaf2792182bc87-1.png)
雨が降りそうだけど傘を持っていこうか、持たないで出かけようか?
![傘を持っていくべきか](https://monozukuri-c.com/wp-content/uploads/2019/08/37b7f0b2f73357a7e2f4d3b9a8826936-1.png)
このように、いくつかの選択肢がある状況は「分岐」と呼ばれ、選んだものによって行動が変わりますね。
プログラムで分岐を使うとどんなことができるの?
プログラムも同じように、「分岐」を使って実行されるプログラムを変化させることができます。
例えば、次のように「A」「B」のスイッチが押されているかどうかで分岐を作ったとしましょう。
![分岐フローチャート](https://monozukuri-c.com/wp-content/uploads/2019/08/44298e4fdeaa3da374b635e3f88fbc1d-2.png)
分岐の質問に対して「はい」「いいえ」に答えて、進むべき道が決まります。これが「分岐」です。
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
このようなプログラムの道を示した図のことを「フローチャート」と呼びます。
分岐を作る「もし」ブロックを使ってみよう
![](https://monozukuri-c.com/wp-content/uploads/2019/07/ba72754203794e9b44dd47acd4b4effe.png)
己が進むべき道を間違うことなどないっ!自分の前にどれだけ道が分かれていようとだっ!
かかってこい「分岐」め、火遁の術で燃やし尽くしてみせよう。我が忍道に迷いなし‼
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
「分岐」はね、敵じゃないからね。かかってこないよ。
「分岐」を使うことで、プログラミングの幅はすごく広がるよ。分岐はプログラムの基本要素の1つなんだよ。
プログラムで分岐を作るには、「もし」ブロックを使います。
「もし」ブロックの使い方
「もし」ブロックは、「論理」ブロック一覧の中に用意されています。条件判断と呼ばれる場所にあるのがわかりますね。
![もしブロックを選択](https://monozukuri-c.com/wp-content/uploads/2019/08/36d3bb4bd6ec99f01bdac3bef274f410-1.png)
「もし」ブロックの条件式と真偽値ってなに?
分岐とは「もし△△△だったら、〇〇〇をしよう。そうじゃなければ◇◇◇をしよう」という形のプログラムのことです。
この「△△△」の部分を条件式と呼び、分かれ道で進むべき方向を決めるための質問になります。
![条件式と真偽値](https://monozukuri-c.com/wp-content/uploads/2019/08/b0c73c0ff9277a48ec41d273f21eebff-1.png)
条件式という質問の答えは、必ず「はい」「いいえ」のどちらかにになります。これを真偽値と呼びます。
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
条件式の質問は、必ず「はい」「いいえ」のどちらかで答えられるような質問でないといけません。
「もし」ブロックへの条件式の設定方法
「もし」ブロックの中にある<真▽>の場所には、条件式を示すブロックを入れる必要があります。
形が同じブロックを条件式として入れるんですよ。
![もしブロックへ入れる条件式](https://monozukuri-c.com/wp-content/uploads/2019/08/33779d42b903885057a398fe2bd158eb-1.png)
では、条件式として「Aボタンが押されている」ならを表すブロックを入れてみましょう。
![ボタンを押しているブロックを条件式へ](https://monozukuri-c.com/wp-content/uploads/2019/08/1b32f33906ec51357c7adf00d70254a5-1.png)
「入力」ブロック一覧の中には「ボタンが押されている」ブロックがあります。「もし」ブロックの中の形と、同じ形になっているのがわかりますね。
「もし」ブロックへの条件式の追加と削除
「もし」ブロックは⊕⊖をクリックすることで、条件式を追加・削除することもできます。
![条件式の追加と削除](https://monozukuri-c.com/wp-content/uploads/2019/08/7aec65c00bb4483e285684ad764fd13b-1.png)
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
⊕と⊖をクリックすることで、様々な条件式のパターンを作ることができるよ!
「もし」ブロックを使って分岐するプログラミングをしてみよう!
![](https://monozukuri-c.com/wp-content/uploads/2019/07/ba72754203794e9b44dd47acd4b4effe.png)
師よ!「もし」ブロックの使い方は把握しましたよ。でもね、大事なのは実践なんですよ。術は何度も使うことで体に覚えさせるんです。
早く実践に入りましょう。体がプログラミングを欲していますっ。
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
その通りだね。プログラミングは何度もやって身に付けるものだね。じゃあ、「もし」ブロックを使ってプログラミングをしてみようね!
では、ここまで学んだ「もし」ブロックを使って、プログラミングをしてみましょう。
「ずっと」ブロックに「もし」ブロックを入れて分岐してみよう
「A」スイッチが押されている時に、「ハートマーク」を表示するプログラムを作ってみましょう。スイッチを押していない時は、表示を消してみます。
![Aスイッチを押したときにハート](https://monozukuri-c.com/wp-content/uploads/2019/08/eb30a537957581381f4d7258b0a763d9-1.png)
プログラムができたら、画面左上のシミュレータの「A」スイッチを押してみましょう。
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
ブロックを組み合わせて目的のプログラムを実現する。これがプログラミングです。
やってみようコーナー:分岐プログラミングの巻
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
「もし」ブロックを使った分岐のプログラムを作ってみよう!
修行その1:「もし」ブロックを使った分岐プログラム
この記事の中で登場した、次のフローチャートを「ずっと」ブロックの中に入れて、プログラミングしてみましょう。
![問題のフローチャート](https://monozukuri-c.com/wp-content/uploads/2019/08/96b3ea6ce4b8979818dd3353c117384c.png)
「A」「B」スイッチが押されているかによって、LEDの表示を変化させるプログラムです。
プログラムができたら、次のように動くかを確認してみましょう。
- 「A」スイッチを押している時 ・・・六芒星が表示
- 「B」スイッチを押している時 ・・・ハートマークが表示
- スイッチを押していない時 ・・・なにも表示されない
![](https://monozukuri-c.com/wp-content/uploads/2019/07/ba72754203794e9b44dd47acd4b4effe.png)
落ち着いて考えるんだ…。分岐のパターンをプログラミングの形に変化させればできるはずだ…。
見えたぞっ!
プログラミング例
![もしブロックを使ったプログラム例](https://monozukuri-c.com/wp-content/uploads/2019/08/5b924069e7945bede215c12585e817a6-1.png)
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
みんなの作ったプログラムと違いはあるかな?プログラムの書き方はいろいろあるから、一緒じゃなくても大丈夫だよ!
修行その2:条件式の順番に潜んだ罠
「A+B」の両方のスイッチを押している時に、LEDに「キリン」アイコンを表示するプログラムを追加してください。
プログラムができたら、次のように動くかを確認してみましょう。
- 「A」スイッチを押している時 ・・・六芒星が表示
- 「B」スイッチを押している時 ・・・ハートマークが表示
- 「A+B」スイッチを押している時 ・・・キリンマークが表示
- スイッチを押していない時 ・・・なにも表示されない
![](https://monozukuri-c.com/wp-content/uploads/2019/07/ba72754203794e9b44dd47acd4b4effe.png)
やけに簡単な修行だな。「A+B」の条件を追加すればいいだけだろ。
しかし、あの師範がそんな簡単な修行をさせるだろうか?ひょっとして何か罠が仕掛けられているのでは?よく考えろ…。
注意しなければならないのは、「条件式」というのは最初に設定されたブロックから順番に質問に答えていくことになります。
そのため、「A+B」を最後の条件式に追加してしまうと、最初の「A」スイッチの質問が「はい」となってしまい、目的のキリンマークが表示できません。
![AとBを押したときのプログラムの正誤図](https://monozukuri-c.com/wp-content/uploads/2019/08/105837bdfebe1b289fd8636d49849a6d-1.png)
そのため、「A+B」の条件式は一番最初に指定する必要があります。
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/274ac86909c1a78190c701cdec501e0d-1.png)
みんなは罠に引っかからなかったかな?
こんな風にプログラムって順番が入れ替わるだけでも、動く内容が変わってしまうんだよ。注意しようね!
![ナナ](https://monozukuri-c.com/wp-content/uploads/2019/06/bfc1cf65d1130f875793b49176917183-1.png)
microbitのプログラムを最初から学びたい子は、ここから始めよう!