プログラミングをしていると、「もし~ならどうする?」という判断がたくさん出てきます。
たとえば、
- ボタンをおしたら動く
- ぶつかったら止まる
- スコアが10以上になったらクリア
のように、「条件」によって動きを変える必要があります。
でも、条件が2つ以上になると、
- こっちも、あっちも…どう考えればいいの?
- 「かつ」「または」「ではない」って出てきたけど、これっていったい何?
- 言葉の意味がにていて混乱する
と なやむことが あるかもしれません。
そこで、この記事では論理演算(ろんりえんざん)の考え方を、むずかしい言葉をできるだけ使わずに説明します。
論理演算は、
- 真(true) =はい・正しい
- 偽(false)=いいえ・正しくない
のどちらかで考えて、物事を決めたり 考えたりする方法です。
「かつ(AND)」「または(OR)」「ではない(NOT)」これら3つのルールを組み合わせることで、プログラムに「どんなときに動くのか」「どんなときは動かないのか」を、伝えることができます。
スクラッチで例をあげながら、ひとつずつ説明していくので、安心して読み進めてくださいね。(MakeCodeなど他の言語でも考え方は同じです)
真(true) と 偽(false)とは
プログラミングでは、ものごとを「はい」「いいえ」で判断するときに、
- 真(true)
- 偽(false)
という2つの値を使います。
「はい/いいえ」をそのまま表す値だと考えると、イメージしやすいです。
たとえば、
- 「今、雨がふっている?」 → ふっていれば真、ふっていなければ偽
- 「宿題をおわらせた?」 → おわっていれば真、まだなら偽
というように、きかれたことが「正しいかどうか」を判断して使います。
スクラッチでは、この「真」か「偽」かを返すブロックが六角形になっていて、「真偽ブロック」と呼ばれます。
MakeCodeでも真偽ブロックは六角形になっています。
論理演算 3つのルール
論理演算には、特に大事な3つのルールがあります。
- かつ(AND) :両方とも正しいときだけ、結果も正しい
- または(OR) :どちらか一つでも正しければ、結果は正しい
- ではない(NOT):反対の意味にひっくり返す
では、ひとつずつ説明していきます。
かつ … AND(論理積)
「かつ(AND)」は、2つのことが どちらも真だったときにだけ OK(真)になる考え方です。
両方とも真の場合のみ、結果は真
たとえば、
- 「雨がふっている かつ 寒い」
- 「宿題ができている かつ お手伝いもした」
この2つのことが両方ほんとう(真)なら、結果も真になります。
どちらかひとつでも できていなかったら偽です。
| A | B | A かつ B |
|---|---|---|
| 偽 | 偽 | 偽 |
| 偽 | 真 | 偽 |
| 真 | 偽 | 偽 |
| 真 | 真 | 真 |
上の表は真理値表といいます。条件の組み合わせと結果をまとめたものです。
「かつ」ブロックの使用例
ネコのスプライトをクリックしたとき、ネコが「赤」と「黒」のどちらにもふれているなら「おはよう!」と言うプログラムです。
「かつ」ブロックは、2つの条件の両方が真なら 真を返し、それ以外の場合は 偽を返します。
そして「もし~なら」は、条件(~の部分)が真のときに中の処理を動かすブロックです。
つまり、
- 赤に触れた? → はい(真)
- 黒に触れた? → はい(真)
- 「赤に触れた(真)」 かつ 「黒に触れた(真)」 → はい(真)
- 「もし~なら」ブロックの「~」の部分が真になるので、中の処理(「おはよう!」と言う)が動く
という流れになっています。
2つの「はい(真)」がそろったときだけ真になるので、ネコは「赤だけ」「黒だけ」のときには何も言わない、というわけです。
または … OR(論理和)
「または(OR)」は、どちらか1つでも真ならOK(真)! という考え方です。
どちらかひとつでも真の場合、結果は真
たとえば、
- 晴れ または くもりなら 運動会をやる
- ぼうしかぶる または 日焼け止めをぬって 外出する
どちらかひとつでもできていれば真です。
両方できていないときだけ偽になります。
| A | B | A または B |
|---|---|---|
| 偽 | 偽 | 偽 |
| 偽 | 真 | 真 |
| 真 | 偽 | 真 |
| 真 | 真 | 真 |
「または」ブロックの使用例
ネコのスプライトをクリックしたとき、ネコが赤または黒にふれているなら「こんにちは!」と言うプログラムです。
「または」ブロックは、2つの条件のどちらかひとつでも真なら、真を返します。
なので、ふれているのが「赤だけ」「黒だけ」のときでも「こんにちは!」と言います。
ではない … NOT(否定)
「ではない(NOT)」は、真と偽を反対にする考え方です。
真なら偽に、偽なら真に
- 「ライトが消えている ではない」 → ライトがついている
- 「雨がふっている ではない」 → 雨はふっていない
このように、反対の意味になります。
| A | Aではない |
|---|---|
| 真 | 偽 |
| 偽 | 真 |
「ではない」ブロックの使用例
ネコのスプライトをクリックしたとき、ネコが赤にふれていないなら「こんばんは!」と言うプログラムです。
「ではない」ブロックは、値をひっくり返す(真⇔偽を入れかえる)ブロックです。
つまり、
- 赤に触れた? → いいえ(偽)
- 「赤に触れた(偽)」ではない → 偽の反対なので 真
- 「もし ~ なら」ブロックの「~」が真になるので、中の処理(「こんばんは!」と言う)が動く
という流れになります。
赤にふれているときは「赤にふれた? → はい(真)」となるので、
真 ではない → 偽となり、ネコは何も言いません。
まとめ
真(true)と偽(false)という2つの値を使って判断するしくみを、論理演算といいます。
- 真・偽 → はい・いいえ を表す
- かつ(AND) :両方とも正しいときだけ、結果も正しい
- または(OR) :どちらか一つでも正しければ、結果は正しい
- ではない(NOT):反対の意味にひっくり返す
最初は少しむずかしく見えるかもしれませんが、じつは生活の中でも自然と使っている考え方です。
論理演算がわかると、プログラムに「どんなときに動くのか」をはっきり伝えられるようになります。
たとえばゲームなら、
- 敵にぶつかっていなくて、ジャンプボタンをおしたら
- スコアが10以上または宝石をゲットしたら
…といったように、思いどおりのルールや動きを作れるようになります。
少しずつ練習していけば、きっと自分の作品がもっとおもしろく、もっと自由になりますよ。
あせらず、一歩ずつ進んでいきましょう!









