論理式。名前が難しそうですが、実際は簡単な話です。条件をみて、それが正しければ1を、間違っていれば0を返すだけです。
拙い文章ですが、参考になれば幸いです。
例として、次のプログラムを見てください。
- PRINT (5<10)
- PRINT (5>10)
もちろん、PRINTを?と省略してもよいです。
また、今回は()は無くてもよいです。
結果は、
- 1
- 0
となります。
まず、(5<10)の部分を見ましょう。
5<10は、IF文で使われているものと同じ、5より10の方が大きいという意味です。
今回は、5より10の方が大きいという条件は正しい(真)ので、1と表示されました。
次に、(5>10)は、5より10の方が小さいという意味になってしまいます。
これは正しくない(偽)ですよね。だから、0と表示されました。
このように、条件が真なら1、偽なら0になります。
また、条件には、
- != == > < >= <=
といった、IFでも使える条件が使えます。
それに、比較には変数も使えます。
では次に、このプログラムを見てみましょう。
- INPUT A
- INPUT B
- ?(A>=10)*B
*などは、>などより演算の優先度が高いので、今回は()は省略できません。
このプログラムでは、2回の数値の入力が求められます。
1回目に10未満の数値を答えると、2回目にどんな数値を答えても0と表示されます。
しかし、1回目に10以上の数値を答えれば、2回目に入力した数値が表示されます。
これ(?(A>=10)*B)を、IF文で書こうとすると、
- IF A>=10 THEN ?B ELSE ?0
論理式を使った場合と比べて、とても長い文になってしまいます。
このように、論理式を使うと、プログラムが短く書けることが多いです。
また、論理式が理解できていれば、前者の論理式を使った文の方が見やすいかもしれません。
論理式を知らないと、後者のIFを使った文でないと理解できないと思います。
Petit Skiなどの短いプログラムでは、論理式が使われていることが多く、参考になります。
↑のコードを初めて読んだときは感動しましたw
また、論理式を理解できれば、小ネタ集にあるプログラムの意味も理解できるのではないのでしょうか。
IF文は、IFとTHENで挟まれた式を計算して、それが真(0以外)ならTHEN以降を実行し、偽(0)ならELSE以降(なければ何もしない)を実行します。
そうすると、
- IF A THEN ?”TRUE”
の様なプログラムが、どうして「変数Aが0以外なら?"TRUE"を実行」という意味になるか、わかるのではないのでしょうか。0以外なら条件は真になるからですね。
また、普通のIF文も、その様に見ることができます。
- IF A!=0 THEN ?”TRUE”
まず、A!=0を計算します。その結果が0以外なら?”TRUE”、0なら何もしない、ということです。
少しプチコンから離れた、発展的な話題を紹介します。自分はよくわからないのでプチコンから少し離れるので説明はせず、そういうものもあるとだけ書いておきます。
論理といえば、論理演算を調べてみるのも良いと思います。プログラムをより見やすく、短く出来るかと思います。
論理演算について、このWikiのビット演算のページも参考になると思います。
論理回路について調べてみるのも面白いかもしれません。
また、数理論理学について学ぶのも楽しいかと思います。
ここまで読んで下さってありがとうございます。
やたら長く書いてしまいました。読む気力が失せますよね。ごめんなさい。
誤字や、「ここはおかしいだろ!」とか、「これ、要らなくね?」ってところがあったら、編集や指摘をしていただけると助かります。
コメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.104 秒 | このページの最終更新 : 2022/09/20 (火) 12:44:02 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30