見出し画像

複雑な条件をシンプルに表すには《論理演算》

こんにちは。Yuukaと申します。
こちらの音声配信は、私が得意とするプログラミングや数学に関連した、知って得する情報をお届けしています。

さて、今日はプログラミングをするには欠かせない、《論理演算》の話をします。

この論理演算を使いこなせると、一見、複雑な条件でもシンプルに表すことができて

ゲームのルールを設定するときやアンケート結果を表示するときなどに役立ちますよ。

のちほど具体的な例も載せていきます。

論理演算とは

論理演算とは、真(True)と偽(False)を元に、結果を求める演算です。

論理演算の主要どころは、「かつ(AND)」「または(OR)」「~ではない(NOT)」です。Scratchのブロックにも登場します:

https://scratch.mit.edu/


条件分けとは

コンピュータが判断したTrue/Falseによって、実行する処理を変えることができます。

これを条件わけといいます。

こちらも併せてご覧ください

数字ではTrueが1、Falseが0で表されます。
論理演算はその条件を指定するときに使う考え方です。

論理積・論理和・否定とは

AND(かつ)は、どちらもTrueの時だけTrueとなり、それ以外ではFalseとなります。
OR(または)は、どちらかがTrueであればTrueとなり、それ以外はFalseとなります。
NOT(~ではない)は、TrueFalseに、FalseTrueになります。

テストの点数で合格点やクラス分けをすることを例にして考えてみましょう。

例えば、100点満点の英語と数学のテストがあるとします。

英語も数学もどちらも60点以上取らないと「合格」にならないルールとすると、
英語の点数 ≧ 60点 かつ 数学の点数 ≧ 60点
がTrueとなるとき、「合格」となります。

一方、英語と数学、どちらか一方が60点以上でないと「合格」にならないルールとすると、
英語の点数 ≧ 60点 または 数学の点数 ≧ 60点
がTrueとなるとき、「合格」となります。

応用1:迷路ゲームでのクリア条件

次のような迷路ゲームをつくりました。主人公のニャンコは、敵をよけながら、右下のゴールまでたどりつければクリアーなのですが、ゴールについたときに、鍵を持っていないとクリアーになりません。

左上がスタートで、右下の緑のエリアがゴール

このルールを表すと、
「鍵を持っている」かつ 「ゴールに着いた」
がTrueであれば、ゲームクリアの音楽がなり、ゲームが終了します。

応用2: じゃんけんゲームで勝ち負けの判定

コンピュータと人間をジャンケンさせるゲームです。昔、よくゲームセンターにありましたよね。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

Scratchでも簡単につくることができて、さらに、論理演算を使えばシンプルに書くことができます。

人間が出した手を表す変数をans, コンピュータが出した手を表す変数をcompとして、条件を整理してみました:


人間VSコンピュータのジャンケン結果

この表から整理すると、
あいこ:ans = compがTrueのとき

勝ち:(ans=1 かつ comp =2) または(ans=2 かつ comp=3) または(ans=3 かつ comp =1) がTrueのとき

負けの場合:上のどれでもないとき

この条件をScratchで表してみたので、実際に中身を見て、遊んでみてください:

論理演算を使わない場合と比較して半分以上、プログラムの記述量が減りました!

Simple is Best

いかがだったでしょうか。
条件が多いとコードがごちゃごちゃしてしまい、ミスの温床です。

少しでもコードをシンプルに表すことは、後々見返した時に内容を把握しやすいですし、間違いの防止にもつながります。

達成したいゴールから必要な条件を全て整理し、シンプルにその条件をもれなく表せるようになると、考えることが楽しくなります。

日常生活にも応用できることだと私は思ってます。

では、最後までお読みいただきありがとうございました。

yuuka


この記事が気に入ったらサポートをしてみませんか?