カメヲラボ

主にプログラミングとお勉強全般について書いてます

if文なんてイラネ(゜⊿゜)?①

と、昔から思ってたのだけどちゃんと調べていませんでした。ショートコーディングでは、if文の代わりに条件演算子とか論理的AND/OR演算子を使うのが定石です。しかし、だからと言ってif文は全く無用なのかと問われると少々自信がありません。というのも、現在if文の代用として使っているのは演算子なわけで、決してifを使わずに等価な変換にならない可能性も含んでいます。

if(式1)式2;

なら、

式1&&式2;

と書けるでしょうし、

if(式1)式2;
else 式3;

なら条件演算子を使って

式1?式2:式3;

のように書けるでしょう。

しかし

if(式)文

のパターンになると、if文を使わずに確実に短くなるのかどうか。

文がfor文の場合、

if(式1)for(;式2;);

という形なら

for(;式1&&式2;);

のようにforの終了判定部分に論理的AND演算子を使うことで短く書けます。
しかし、

if(式1){
  for(;式2;);
  for(;式3;);
  for(;式4;);
}

という形なら

for(;式1&&式2;);
for(;式1&&式3;);
for(;式1&&式4;);

と書き換えると長さが逆転します。現実的な問題として、同じようなパターンのループを3回以上書くのはアルゴリズムに問題があるでしょうから具体例に問題を解こうとしてこの問題にぶつかることはなさそうですが、一般的な解決方法があるのかと。以前main再帰というのを話題にしましたが、main関数でなくても普通の再帰関数を利用してこの辺の問題が解決できそうな気がしたりしなかったり・・・。

というわけで、まとまりきらなかったので続く。