目次
着想は突然に
今,実は矢野健太郎の新しい数学ってのを読んでるんですよ.
中身が論理,線形代数,確率と.今の自分のためにあるかのような
本でして.論理はプログラムで,線形代数は日常生活全てで,確率は量子力学で
必要だったんで,もう即買いでござる.
そして,論理のところを読んでいると,「条件式」という言葉が出てきた.
プログラムを思い出した.
見るとどうやら,こちらでも,「aならばb」の文法から出発するらしい.
これは.あれだね.
論理の記号でプログラム書けるやつだね(ゲス顔)
(とは言ったもののとてもつまらない結果になりました!暇な人だけ見てね!!)
(あと,自分は集合と論理、特に集合は学習中なんで
根本的ミス・初歩的ミスがあります。教えてくれると嬉しいです。)
if関数を論理で表す。
それでは、やってみます。まず、一番初歩的な関数、if関数。
C++では
if関数の例
if(i=0)
printf(“結果はTrueです。”);
else
printf(“結果はFalseです。”);
printf(“結果はTrueです。”);
else
printf(“結果はFalseです。”);
と書けました。
if関数を最初に書いたのはただの書き換えのみで終わっちゃうからです。
条件式が命題で真偽が分岐後の処理だからです。
真理値表で見ると
if関数の真理値表
命題「i=0」 |
真→printf(“結果はTrueです。”); |
偽→printf(“結果はFalseです。”); |
となる。
うむ、マジでただの書き換えだこれ。
次行こう次。
switch関数を論理で表す。
ちょっとだけレベルアップ。
C言語習いたての時、for関数の条件式が思いつかなくて
一時期こいつとマブダチでした。
C++では
switch関数の例
switch(i)
{
case (0) : printf(“iの値は0です”); break;
case (1) : printf(“iの値は1です”); break;
default printf(“iの値が不正です”);
}
{
case (0) : printf(“iの値は0です”); break;
case (1) : printf(“iの値は1です”); break;
default printf(“iの値が不正です”);
}
と書けます。
switch関数の特徴はcase文の命題表記からdefault文の命題が書ける
ことでしょう。
順に説明する。
まず、上の例の関数は命題が3つある。
iの値は0である。(3行目) iの値は1である。(4行目) iの値は0でも1でもない。(5行目)
それぞれを上から命題p,q,rとすれば
pとqを一から論理で記述するのはしたくないが
rはpとqの論理演算で表現できる。
以下のように書き直せばいい。
iの値は0でも1でもない。 → iの値が0でなく、かつ、iの値が1でない
さらに丁寧に書けば
iの値が0であることの否定、かつ、iの値が1であることの否定
となる。つまり、switch関数を論理の記号で書けば
命題「iの値が0である」が真→「iの値は0です」
命題「iの値が1である」が真→「iの値は1です」
上記二つの命題それぞれの否定の論理積が真→「iの値は0です」
命題「iの値が1である」が真→「iの値は1です」
上記二つの命題それぞれの否定の論理積が真→「iの値は0です」
なんだか,思ったよりめちゃくちゃ普通のことになってしまった.
まだまだ考察不足なのか,着眼点がつまらなさすぎるのか.
一応,for関数とwhile関数についてはやる予定だ.
次はもうちょっといい記事を書こう.