以前に「演算子」についてお話をしました。
ソースコード上で
演算(計算)をするための記号が「演算子」です。
一般的なプログラミング言語では、
約30種類の演算子が定義されています。
これだけある演算子ですが、
大きく3つに分類することができます。
演算子の種類
演算子は、
・単項演算子
・二項演算子
・三項演算子
の3種類に分類することができます。
さて、「項」とは一体何でしょうか。
演算をするためには、
演算の対象となるものが必要になります。
例えば、足し算をする演算子である
「+」の場合、
3 + 5
という使い方をします。
このとき、
「3」や「5」が演算の対象となります。
このような演算の対象となるものを
「項」と言います。
ちなみに「項」のことを
「オペランド」とも言います。
必要とする「項」の数によって
演算子は分類されています。
1つだけ必要とする演算子を
「単項演算子」、
2つ必要とする演算子を
「二項演算子」、
3つ必要とする演算子を
「三項演算子」
と言います。
単項演算子
代表的なものとしては
インクリメント演算子(++)と
呼ばれるものがあります。
インクリメント演算子は、
下記のような形で使います。
i++
上記の例では、
「変数iの値に1を足す」という
演算を行います。
二項演算子
「+」「-」「*」「%」など
四則演算に代表される
数多くの演算子があります。
三項演算子
項が3つ必要な演算子です。
「そんな演算子は知らない」
という方もいるのでは
ないでしょうか。
三項演算子はマイナー?
実は、この三項演算子、
プログラミングの世界では
あまり好んで使われていないようです。
ソースコードが読みにくくなる、
という理由から、
企業によっては、
三項演算子の使用を禁止している
ところもあるようです。
また、
三項演算子が存在しない
プログラミング言語もあります。
例えば、Pythonには、
三項演算子はありません。
このように一見マイナーな
三項演算子ですが、
使い方によっては便利な演算子です。
三項演算子の書式
三項演算子は
「?:」
この1種類しかありません。
書式としては、
となります。
これは、
条件式を評価して正しければ
(真であれば)式1を返し、
正しくなければ(偽であれば)
式2を返します。
この説明を見て、
「if文と同じでは?」
と思われた方も
いるのではないでしょうか。
しかし、
三項演算子は演算子です。
結果として式を返します。
if文のように
条件に応じた処理を記述するのでは
ない点に注意してください。
例えば、
変数ageが20以上なら"成年"、
変数ageが19以下なら"未成年"
と表示するソースコードを
三項演算子を使って
Java言語風に書くと、
以下のようになります:
str = age >= 20 ? "成年" : "未成年";
System.out.println(str);
※System.out.println()は
指定したものを画面に
表示するためのメソッド
上記の場合、
「age >= 20」が条件式となり、
真なら"成年"が返り
変数strに代入され、
偽なら"未成年"が返り
変数strに代入されます。
これは、
三項演算子(?:)のほうが
代入演算子(=)よりも
優先順位が高いため、
先に三項演算子が実行され、
その返り値が代入演算子により
代入されることになります。
上記の例を
if文を使用して書くと、
以下のようになります:
if (age >= 20) {
str = "成年";
} else {
str = "未成年";
}
System.out.println(str);
見た目には、
三項演算子のほうがif文より
スッキリして見えます。
三項演算子のほうは、
演算子の優先順位を知らないと
読み解くことができません。
このようなことから、
三項演算子を使用すると
ソースコードが読みにくいと言われます。
しかし、個人的には、
好んで良く使用しています。
書き方によっては、
先ほど3行で記述した
三項演算子のソースコードを、
1行で記述することもできます。
三項演算子は演算子なので、
メソッドの引数に
記述することも可能です。
このように、
ちょっとマニアックな使い方もできる
三項演算子、
機会があれば、
是非使ってみてはいかがでしょうか。
------------------------------------------------
PS.プログラミングの基礎を学ぶ最善の方法とは?
すでに多くの人が
社会人のためのプログラミングスクールで
学習を始めています。
------------------------------------------------