プログラミング超基本 条件って何?

  • このエントリーをはてなブックマークに追加

「木の枝を立てて倒れた方に進む」これに従う場合、 「木の枝を立てて倒れた方に進む」 が条件ですね。ただ、右と左のちょうど真ん中に倒れた場合は事前に右と決めておく必要があります。では、「気分によって変える」。これは条件になるでしょうか?なにか曖昧ですね。何の気分かわかりませんし、気分の度合いも曖昧ですね。ですので、条件は必ず「はい」「いいえ」のいずれかが選ばれる必要があります。

条件の書き方

条件の書き方というより条件式の書き方がわかり易いかもしれません。「式」で出てきたところで、皆さんの頭の中に

1+2=3

こんな式を思い浮かべませんでしたか? つまり = の記号があり、左と右に何かが記述されている式です。= なので左と右は等しくなければならないと思うかもしれませんが、ここでは「左と右は同じですか?」と考えます。上記の式のように目に見えて数字が表示されるプログラムはほとんど見かけません。

a+b=3

こんな感じのものがよく見かけます。aやbは変数です。変数は「プログラミング超基本 変数って何?」で詳しく説明しています。この条件は「a+bは3ですか?」という意味です。 = の左側を左オペランド、右側を右オペランドと言いますが、ぶっちゃけると「イコールの左側」とか「イコールの右側」でも話は通じます。

言語によってイコールの表記が違う 

C系言語とVB系言語によって記述(表記)に違いがあります。C系・VB系については「簡単解説 言語の系譜 C系とVB系について」を参照してください。VB系は見たまま

a+b=3

です。C系は

a+b==3

としてイコールを2回続けます。これは代入と比較を明確に切り分けているためにです。「そうは言っても a+b に 3 を代入は無いだろう。だったらイコール一つでいいじゃないか」と言いたくなる気持ちもわからなくはないです。VB系のように条件を記述する場所だから ”代入” と判断せよと言いたくなりますよね。でも、

(a=b+5)==8

こんなことをC系ではできるんです。この式を解説すると、まず括弧内の代入を先に行って、その結果が8と等しいかということです。
代入と比較で使う記号を分けたからできたのか、このようなことをしたいから代入と比較で使う記号を分けたのか定かでありませんが、オラもちょくちょく使います。この条件式を通過したらaに値が入っているので便利なときがあります。

否定形式

「○○でない」ということも良く使用します。「等しくない」というときと「論理的に否定」という2場面があります。

等しくない(イコールでない)

これもC系とVB系では違いがあります。
C系では

!=

VB系では

<>

となります。C系は「等しい」とやや似ているものの、VB系はなぬ!という感じです。理解より覚えるしかないので。

論理的に否定

C系は

!(a=8)

VB系は

NOT(a=8)

C系は”等しくない”と同様の記号でまだ納得できますが、VB系のNotはどうでしょ。記号というより言葉ですね。わかりやすいと言えばわかりやすいですが、C系のようなまとまりを感じないのはオラだけでしょうか。

イコール以外の比較

「より小さい」「より大きい」をやりたくなりますよね。これはC系でもVB系でも不等号 < を使用します。 aはbより大きい は

a>b 

と書きます。以上や以下の時はイコール記号を不等号の右に書いてください。

=> とか =< はだめです。

複数の条件式

一つの条件だけでなく、複数の条件で判定したいときがあります。そのようなときは条件式を「and条件」または「or条件」で連結します。andは両方の条件を満たすとき、orはいずれかの条件を満たすときということです。これもC系とVB系で表記方法が異なります。

C系で「a=8かつb=3」という表現は

a==8 && b==3

となります。
VB系では

a=8 AND b=3

となり、VB系の方が見た目で分かりやすいですね。「a=8またはa=4」をC系では

a==8 || a==4

VB系では

a=8 OR a=4

となります。やはり、VB系の方が直感的にわかりやすいですね。

まとめ

C系とVB系では条件式の書き方が違うという点を改めて確認してください。そして、複数の条件式をand条件やor条件で結合できることを忘れないでください。でもあまり複雑な条件式を記述することは望ましくありません。他の方が理解しにくいことと、複雑すぎて思わぬ落とし穴(条件をすり抜ける)が起こる可能性があります。複雑な条件式を書くときは条件分岐を入れ子にして記述することをお勧めします。

SNSでもご購読できます。