うさぎのメモ帳

高校数学ってプログラミングで使う?

2019年09月28日 - 2019年09月28日

Webシステムの開発のためにプログラミングをしていて、高校数学が役に立った事例をいくつか紹介します。

ド・モルガンの法則

ド・モルガンの法則

このような記号で、『A の真偽 / ∧ と ∨ / B の真偽 を反対にしたものは、元のと同じだよ』という法則のようです。
記号だけ見てもよくわかりません。

ド・モルガンの法則 - Wikipedia

前提

A は「りんごが好き」、Bは「力が強い」に置き換えると読みやすいかもしれません

∧ は論理積と呼ばれ、要するに「絞り込むやつ」です。
A ∧ B だったら、A かつ B と読みます。「A でも B でもある者に、この王冠を授けよう」的な、条件に合う数を絞り込むときに使います。
プログラミング言語ではよく && で登場します。 if (A && B) { ... } のように。

∨ は論理和と呼ばれ、要するに「どっちでもいいやつ」です。
A ∨ B だったら、A または B と読みます。「もう全っ然人いない。A でも B でもいいよ」的な。どっちでもいいけど、どちらかひとつは絶対に必要だからね。
プログラミング言語ではよく || で登場します。 if (A || B) { ... } とかです。

そして最後に上の棒です。これは否定と呼ばれ、要するに「じゃない」です。
Not A なら『Aじゃない』Not B なら『Bじゃない』です。

どういうこと?

ド・モルガンの法則

条件文 (A && BA || B) の否定文を作りたいときは、条件文の中身を全部逆にすればいい。
A && B の否定は !A || !B だし、 A || B の否定は !A && !B に単純に変換できるということです。

使い所

プログラミングで、「もし」を表すのにif(イフ)文 if (条件文) { ... } を使います。
これは願望が多くなるとどんどん積み重なっていくんですね。

if (A && B) {
  // 何か別の条件 C と D を決める処理

  if (C && D) {
    // 何か別の条件 E と F を決める処理

    if (E && F) {
      // 王様を決める処理
    }
  }
}

左端から最初の文字のはじまりまでの空白をインデントと呼ぶのですが、プログラムを書いていると「階層が深くなって読みづらいからインデントを減らしたいな」と思うわけです。
そこで if (条件文) の条件文を否定文に変換して、インデントを減らすように試みることができます。

if (!A || !B) { return } // (!A || !B) のときは以降の行を実行しないという意味
// 何か別の条件 C と D を決める処理

if (!C || !D) { return }
// 何か別の条件 E と F を決める処理

if (E && F) {
  // 王様を決める処理
}

TODO: 三角関数