プチコンまとめWiki (初代/mkII)

論理式の使い方

パンくずリスト

論理式って何?

論理式。名前が難しそうですが、実際は簡単な話です。条件をみて、それが正しければ1を、間違っていれば0を返すだけです。
拙い文章ですが、参考になれば幸いです。

例1

例として、次のプログラムを見てください。

  1. PRINT (5<10)
  2. PRINT (5>10)

もちろん、PRINTと省略してもよいです。
また、今回は()は無くてもよいです。
結果は、

となります。

例1の解説

まず、(5<10)の部分を見ましょう。
5<10は、IF文で使われているものと同じ、5より10の方が大きいという意味です。
今回は、5より10の方が大きいという条件は正しい()ので、と表示されました。

次に、(5>10)は、5より10の方が小さいという意味になってしまいます。
これは正しくない()ですよね。だから、と表示されました。

例1のまとめ

このように、条件が真なら1、偽なら0になります。

また、条件には、

  1. != == > < >= <=

といった、IFでも使える条件が使えます。
それに、比較には変数も使えます。

例2

では次に、このプログラムを見てみましょう。

  1. INPUT A
  2. INPUT B
  3. ?(A>=10)*B

などは、などより演算の優先度が高いので、今回は()は省略できません

例2の解説

このプログラムでは、2回の数値の入力が求められます。
1回目に10未満の数値を答えると、2回目にどんな数値を答えても0と表示されます。
しかし、1回目に10以上の数値を答えれば、2回目に入力した数値が表示されます。
これ(?(A>=10)*B)を、IF文で書こうとすると、

  1. IF A>=10 THEN ?B ELSE ?0

論理式を使った場合と比べて、とても長い文になってしまいます。
このように、論理式を使うと、プログラムが短く書けることが多いです。
また、論理式が理解できていれば、前者の論理式を使った文の方が見やすいかもしれません。
論理式を知らないと、後者のIFを使った文でないと理解できないと思います。

実用の例

Petit Skiなどの短いプログラムでは、論理式が使われていることが多く、参考になります。
↑のコードを初めて読んだときは感動しましたw
また、論理式を理解できれば、小ネタ集にあるプログラムの意味も理解できるのではないのでしょうか。

IF文

IF文は、IFTHENで挟まれた式を計算して、それが真(0以外)ならTHEN以降を実行し、偽(0)ならELSE以降(なければ何もしない)を実行します。
そうすると、

  1. IF A THEN ?”TRUE”

の様なプログラムが、どうして「変数Aが0以外なら?"TRUE"を実行」という意味になるか、わかるのではないのでしょうか。0以外なら条件は真になるからですね。
また、普通のIF文も、その様に見ることができます。

  1. IF A!=0 THEN ?”TRUE”

まず、A!=0を計算します。その結果が0以外なら?”TRUE”、0なら何もしない、ということです。

まとめ

  1. 論理式を使えば、プログラムが短くなることが多い!
  2. さらに、プログラムが見やすくなることも、たまにある!
  3. ただ、論理式の方がわかりづらい場合や、長さがあまり変わらない場合もあるので、注意しよう!
  4. 論理式がわかると、BASICへの理解が深まる!
  5. プチコンを使いこなしてる気分になれる、かもしれない

おまけ

少しプチコンから離れた、発展的な話題を紹介します。自分はよくわからないのでプチコンから少し離れるので説明はせず、そういうものもあるとだけ書いておきます。

 

論理といえば、論理演算を調べてみるのも良いと思います。プログラムをより見やすく、短く出来るかと思います。
論理演算について、このWikiのビット演算のページも参考になると思います。
論理回路について調べてみるのも面白いかもしれません。
また、数理論理学について学ぶのも楽しいかと思います。

最後に

ここまで読んで下さってありがとうございます。
やたら長く書いてしまいました。読む気力が失せますよね。ごめんなさい。
誤字や、「ここはおかしいだろ!」とか、「これ、要らなくね?」ってところがあったら、編集や指摘をしていただけると助かります。

CHECKER FLAG (ひとことコメント)

コメントがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)

  • 烏天 : めっちゃよく分かった! (2012/09/23 (日) 19:55:27)
  • 麿(投稿者) : ありがとうございます (2012/09/23 (日) 19:56:31)
  • PRINT (90+39)*6 : ビット演算の使い方も誰か作らないのかな? (2012/10/02 (火) 20:29:03)
  • 麿(投稿者) : ビット演算の使い方…か。 (2012/10/02 (火) 20:56:24)
  • 名名名無し : すげー!! (2012/11/23 (金) 18:19:33)
  • 麿(投稿者) : いえいえ、そんなことないです (2012/11/23 (金) 18:52:51)
  • 天ぷら : すごー (2012/12/22 (土) 12:55:05)
  • 名無しさん : 分かりやすいです (2012/12/22 (土) 17:39:20)
  • 名無し : たまにプログラムで見かけてナンダコレだったけどこれ見て理解できた! (2013/07/24 (水) 00:37:58)
  • 名無しさん : おかげでELSEについてよくわった ありがとう (2013/07/29 (月) 22:23:05)
  • かずえもん : すっご!よくわかりました! (2013/10/13 (日) 20:28:27)
  • miho.k(初心者) : すごくよくわかりました。勉強になります。 (2014/11/03 (月) 20:25:00)

表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.029 秒 | このページの最終更新 : 2016/02/20 (土) 21:06:36 (1388d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30