第7回では「IF文のネスト(入れ子)」を学び、条件の中に条件を重ねることで、二重・三重の門番を設置する方法をマスターしましたね。
おかげで、私たちの「りんご管理システム」は、複雑なルールも完璧に守れる「鉄壁のシステム」へと進化しました。
しかし、ここで一つ疑問が浮かびませんか?
「条件が増えるたびに、門番をどんどん入れ子にしていくと、プログラムがどんどん下に伸びていって、画面から見えなくなってしまう……」
そう、ネストは強力ですが、使いすぎるとコードが縦に長くなりすぎてしまい、全体の流れを把握するのが難しくなるという弱点があります。
そこで登場するのが、複数の条件を「合体」させたり、ひっくり返したりする魔法の演算子、「論理演算(AND / OR / NOT)」です!
この魔法を覚えれば、長かったネスト構造が一気にスッキリし、プログラムがよりスマートで読みやすくなります。
さあ、思考を整理する新しい武器を手にしましょう!
前回の宿題:答え合わせ
まずは、前回皆さんに出した「比較演算子のナゾ」を解き明かしましょう。
シミュレーターで実験して、門番たちの反応は確認できましたか?
第1の門番「在庫チェック」の書き換え
「ぼくのりんご > 0」を「≧」を使って書き換え

「ぼくのりんご ≧ 0」とすると「0個以上」となるため、在庫が0でも門が開いてしまいます。
エラーを出したい「0」を通過させてしまうため、在庫管理には 「≧ 1」 が正解です。
「ぼくのりんご > 0」を「=」を使って書き換え
「=」を使うときは、「何がOKか」ではなく「何がNGか」を最初に決めるのがコツです。
もし『ぼくのりんご = 0』なら、まずはエラーを表示する!
それ以外の『でなければ(=りんごが1個以上ある状態)』のときだけ、次の第2の門番へ進ませよう。
このように、エラーを最初に処理してしまうことで、残りのプログラムが確実に安全な状態であることを保証する「門番のガード」が作れます。
「ぼくのりんご > 0」を「≠」を使って書き換え
「≠」は「0以外ならOK」という考え方なので、0個という例外だけを別のルートに流します。
もし『ぼくのりんご ≠ 0』なら、0個ではないので、そのまま第2の門番へ進んでよし!
それ以外の『でなければ(=0個の時)』は、エラーを表示して門を閉ざそう。
この場合、0個という「NGの状態」を「でなければ」の場所でキャッチしています。
ただし、マイナスの数値を扱うシステムの場合は「0より小さい数も『0ではない』から通ってしまう」という点に注意が必要です。
第3の門番「容量チェック」の書き換え
「いもうとのりんご < 5」を「≦」を使って書き換え

「≦ 5」とすると「5個の時もOK」となり、袋がパンクしてしまいます。
妹の袋をあふれさせないためには、 「≦ 4」 が正解です!
境界線を1つ間違えるだけで、袋がパンクしたり在庫が暴走したり……。
演算子の違いを体感できたなら、君の「エンジニアの目」はかなり鋭くなっていますよ!
今日のミッション:ネストを卒業してスマートに書こう!
例えば、前回のシステムでは「在庫がある(>0)」かつ「容量に空きがある(<5)」という判定をするために、IF文を2つ重ねていましたね。
これでも動きますが、もし「あにの協力」「いもうとの機嫌」など条件が10個増えたらどうなるでしょう?
画面は下へ下へと門番だらけになってしまいます。
論理演算(AND / OR / NOT)を使うと、これらを「一つのIF文」の中に論理的に組み込むことができます。
論理演算「AND / OR / NOT」とは?
プログラムの世界には「正しい」ことを真(しん/true)、「間違い」であることを偽(ぎ/false)と呼ぶルールがあります。
- AND(かつ): 両方の条件が「真(true)」のときだけ、門が開く!
- OR(または): どちらか片方でも「真(true)」なら、門が開く!
- NOT(ではない): 「真(true)」を「偽(false)」に、「偽(false)」を「真(true)」にひっくり返す!
ミッション1:AND・OR演算子で門番をスッキリさせる
さあ、実際にプログラムをスマートに改造してみましょう!
まずは、前回作った「プログラム7」をベースに準備をします。「複製(コピー)」というテクニックを使って「プログラム8」を準備をしましょう。
プロジェクトを複製する手順は、【第4回】 【micro:bit講座 第4回】変数の応用:計算でりんごの数を変えてみよう!を参考にしてください。
- MakeCodeの「論理」ブロックから「かつ(AND)」や「または(OR)」を持ってきます。
- 「もし~なら」の条件部分に、このブロックをはめ込みます。
- 条件を左右にはめ込むだけで、長いネストが1行のIF文に大変身します!
比較してみよう:ネスト vs 論理演算
Before:ネスト(入れ子)の門番たち
画面がどんどん下に伸びてしまって、全体像が見えにくい……。

After:論理演算でスマートに合体!
「かつ」を使うことで、たった1行の門番で済むようになったよ!

どう?
画面の使い方が全然違うよね!
「かつ(AND)」を使えば、全ての条件を満たした時だけ門が開く、厳しい門番が作れるし、「または(OR)」を使えば、どちらか片方でもOKという優しい門番を作ることができるんだ。
「かつ」は英語の「AND(結びつける)」、
「または」は英語の「OR(選択する)」という意味だよ。
この先プロになっても毎日使う「合言葉」だから、今のうちに覚えておこう!いろいろ試して、門番を自由に操ってみてね。
【コラム】スマートさの代償? 「エラーの理由」を見失うな!
論理演算を使って条件を1行にまとめると、プログラムはとてもスッキリします。
しかし、エンジニアとして一つだけ注意しておかなければならないことがあります。
それは、「どの条件で門番に止められたのかが分からなくなる」という不自由さです。
ネスト構造の場合:
もし「在庫>0」なら
もし「空き<5」なら
……
でなければ「容量オーバーです!」と教えられる
でなければ「在庫がありません!」と教えられる
これなら、どこで止められたか具体的に教えてあげられます。
論理演算で1行にした場合:
もし「(在庫>0) かつ (空き<5)」なら
……
でなければ「エラーです!」
これだと、「在庫がないからダメだったのか?
それとも容量が足りないからダメだったのか?」が、コンピュータには分かりません。
全部まとめて「エラー」になってしまいます。
「スッキリ書くこと」だけが目的ではありません。
「ユーザーに親切なエラーを返したいときはネストにする」「動作をシンプルにしたいときは論理演算を使う」というように、目的に合わせて門番の書き方を選ぶのが、プロのエンジニアの腕の見せ所です。
プログラムをスマートにすることと、エラーを親切に教えること。
どっちが大事だと思う? 実は、どちらか一方だけが正解じゃないんだ。 プロのエンジニアは、場面に合わせてこの2つを使い分けているよ。
ミッション2:「NOT(ではない)」で条件をひっくり返す
「NOT」はちょっとひねくれ者の門番です。
「≠(等しくない)」と似ていますが、使い方が違います。
- 「≠(等しくない)」は、値のチェックに使う: 「在庫=0じゃない」のように、数字を比べるときに使う「盾」のような存在です。
- 「NOT(ではない)」は、条件を反転させる魔法の鏡: 複雑な条件式そのものをまるごと否定したいときに使います。
「……ではない」という言葉が含まれるルールも、NOTブロックを使えばどんな条件も一瞬でひっくり返せます!
【例】「NOT」の魔法を試してみよう!
例えば、「もし、りんごが5個以上なら」という条件があったとします。
これに「NOT」をはめ込むとどうなるでしょう?
もし「NOT (りんご ≧ 5)」なら りんごが5個以上ではない(=つまり、4個以下だね!)
こうして条件を否定することで、「もし空きがあるなら(=満タンではないなら)」といった、「〇〇じゃない状態」を判定したいときに大活躍します。

このプログラムを動かして、ボタンAを押してみて!
ぼくのりんごが10個(5以上)のときは『うれしい顔』、3個(5未満)のときは『かなしい顔』が表示されたかな?
NOT演算子が条件をひっくり返すから、ふだんの『もし~なら』とは逆の結果になるのがポイントだよ!
【コラム】エンジニアのデバッグ術:trueとfalseの魔法
プログラムが思い通りに動かない時、プロのエンジニアは「この条件式、今本当に真(true)になっている?」と疑って実験します。
そんな時に役立つのが「論理」ブロックの中にある論理値「真(true)」と「偽(false)」という2つの魔法のブロックです。
「真・偽」はスイッチのON/OFF
この2つは、プログラムの中で「いま条件が成り立っているか」をはっきりさせるスイッチのようなものです。
- 「真(true)」:スイッチON(その通り!)
- 「偽(false)」:スイッチOFF(違う!)
強制的に動かして実験しよう!
「なぜか動かない!」という時は、条件式をわざと「真(true)」や「偽(false)」に書き換えてみてください。
- 強制的にONにする:
[もし] (真) [なら]と書けば、条件式に関係なく「門番」は必ず開きます。これで「門の中の処理」が正しいか確認できます。 - 強制的にOFFにする:
[もし] (偽) [なら]と書けば、門番は絶対に開きません。これで「でなければ」の処理が正しく動くか確認できます。
「プログラムが動かない=自分が悪い」と落ち込む必要はありません。
エンジニアはこうして、わざと条件を操作して「どこで止まっているのか?」という境界線を一つずつ探し出しているのです。
まずは難しく考えず、true や false を門番の条件にはめ込んで、プログラムの挙動を実験してみてください。
そうすれば、きっと迷路を解くような感覚でバグを見つけられるはずですよ!
今日のまとめ:論理演算でプログラムをシンプルに!
今日学んだ、プログラミングをスマートにするための大切なポイントをおさらいしましょう!
- ネストから論理演算へ: 複雑な入れ子構造を、「AND(かつ)」や「OR(または)」で「合体」させることで、プログラムをシンプルで読みやすく保てます。
- NOTの力: 「〜ではない」という否定の条件も、NOTの魔法の鏡を使えば一瞬でひっくり返せます。
- true / false のデバッグ: プログラムが思い通りに動かない時は、条件を
trueやfalseに書き換えて、門番を強制操作してみてください。どこで止まっているのか、原因を素早く突き止めることができます。
論理演算は、プログラムという「門」の開け方を決める重要な鍵です。
今日学んだことを使って、ぜひ自分だけの自由なルールをたくさん作ってみてください。
【宿題】論理演算で最強の門番を作ろう!
さて、今日の内容は理解できたかな?
ここからは、みんな自身の手で「門番」を改造する時間だ!
プログラムは、ただ動かすだけじゃなくて、自分で工夫してルールを変えるのが一番の醍醐味だよ。
用意された条件式をヒントに、自分だけのルールを作ってみよう!
- ANDのミッション: 「ぼくのりんご > 0」かつ「いもうとのりんご < 5」のときだけ配るプログラムを作ろう。
- NOTのミッション: 「ぼくのりんご = 0」という条件にNOTをつけて、「在庫が0ではないとき」だけ動くIF文を作ってみよう。
- 【実験】:
if (true)とif (false)を実際に書いて、どちらが「必ず動く門番」で、どちらが「絶対に動かない門番」か確かめてみよう!
プログラミングのコードは、コンピュータに対する君たちの「命令」であり、同時に「君たちの考え方」そのものです。
「AND」「OR」「NOT」を使いこなせるようになると、これまでよりもずっと賢いプログラムが書けるようになるよ。
さあ、今日学んだ魔法を使って、どんな面白い動きを作る?
失敗を恐れず、たくさん実験して「プロのエンジニア」の第一歩を歩み出そう!
どんな変数を使って門番を作ったか、あるいは「実験」でどんな不思議な挙動を見つけたか、エラーやバグにぶつかったかな?
ぜひ自分なりのプログラムとして完成させてみてください。
もし、思った通りに動かなくても大丈夫。
エンジニアの仕事の半分は「なぜ動かないのか?」を考えるデバッグの時間です。
今日学んだ「真(true)」と「偽(false)」の実験術を使って、一つひとつ門番の心の中を覗いてみよう!
次回の授業で、みんなの作った「最強の門番」の話を聞けるのを楽しみにしているよ!
次回の予告
次回の第9回テーマは「【第9回】 【micro:bit講座 第9回】配列の基本:変数がいっぱいで大変!「整理棚(配列)」でデータをまとめよう!(7/29 10時公開予定!)」です。
今日のレッスンが役に立った、面白かったという方は、ぜひコメントをお願いします!
あなたの応援が、次のエネルギーになります。
それでは、また次のレッスンでお会いしましょう。
ありがとうございました!
カリキュラム一覧(進捗マップ)
- 【第0回】 【micro:bit講座 第0回】準備編:MakeCodeでプログラミングの第一歩を踏み出そう!
- 【番外編】保護者の皆様へ:中学生のプログラミング教育、親として大切にしたい「失敗の教え方」
- 【第1回】 【micro:bit講座 第1回】基本の操作:MakeCodeでmicro:bitを動かそう!
- 【第2回】 【micro:bit講座 第2回】計算の基本:計算ブロックで電卓を作ろう!
- 【第3回】 【micro:bit講座 第3回】変数の仕組み:変数という「魔法のバッグ」を使いこなそう!
- 【第4回】 【micro:bit講座 第4回】変数の応用:計算でりんごの数を変えてみよう!
- 【第5回】 【micro:bit講座 第5回】変数の実践:もっと便利に!変数で計算を自動化しよう!
- 【第6回】 【micro:bit講座 第6回】条件分岐の基本:IF文で「もし〜なら」をプログラミングしよう!
- 【第7回】 【micro:bit講座 第7回】IF文のネスト(入れ子):条件の中に条件を入れ、より緻密な判断をしよう!
- 【第8回】 【micro:bit講座 第8回】論理演算(AND / OR / NOT):複数の条件をスマートにまとめよう!
- 【第9回】 【micro:bit講座 第9回】配列の基本:変数がいっぱいで大変!「整理棚(配列)」でデータをまとめよう!(7/29 10時公開予定!)
- 【第10回】 【micro:bit講座 第10回】配列の応用:中身を入れ替えてリストを使いこなそう!(8/5 10時公開予定!)
- 【第11回】 【micro:bit講座 第11回】ループ処理:繰り返しを使って効率よく動かそう!(8/12 10時公開予定!)
- 【第12回】 【micro:bit講座 第12回】アルゴリズム実践:配列×ループ×IFで問題を解決しよう!(8/19 10時公開予定!)
- 以降


コメント