SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

マンガで分かるプログラミング用語辞典

「条件分岐と論理演算」
~マンガでプログラミング用語解説

マンガで分かるプログラミング用語辞典(18)

解説

 条件分岐では、論理演算をうまく使うことで、簡潔に条件式を書くことができます。

例)0以上、10未満を判定:ifだけで書いた場合
// 0以上を判定
if (a >= 0) {
    // 10未満を判定
    if (a < 10) {
        0以上10未満の時の処理
    }
}
例)0以上、10未満を判定:論理演算を使った場合
// 0以上、10未満を判定
if ((a >= 0) && (a < 10)) {
    0以上10未満の時の処理
}

 この時ANDの演算に、「&」ではなく「&&」を、ORの演算に「|」ではなく「||」を使っています。これを説明します(こういった演算子の仕様は、プログラミング言語ごとに違います。ここでは、Javaの場合を元に説明を行います)。

 論理積「&」、論理和「|」といった論理演算子には、短絡演算子(ショートサーキット演算子)というものが、別に用意されています。

例)「AND」の短絡演算子
記号:&&
式の例:res = a && b;
例)「OR」の短絡演算子
記号:||
式の例:res = a || b;

 通常の論理演算子では、演算子の優先順位に従って計算が行われていきます。

例)優先順位に従って計算
(1 > 2) & (2 < 3)
↓
false & true
↓
false

 しかし、短絡演算子では、この演算子の左側を計算して、右側の計算をしなくても結果が決まってしまう場合は、右側の計算を行わずに結果を返します。

例)左側を先に評価して、右の評価が不要ならそのまま計算結果を返す
(1 > 2) & (2 < 3)
↓
false & (2 < 3)  ←  論理積は左側がfalseなら必ず結果はfalseになる
                     なので右側の計算を行わずにfalseを返す
↓
false

 こういった演算子を使うことで、計算量を減らすことができます。if文の中で使う条件式では、特別な理由がない限り、この短絡演算子の形で使うことが多いです。この方が、高速で処理されるからです。

例)「aが0以上」かつ「aが10未満」の両方が正しければtrueになる式
if ((a >= 0) && (a < 10)) {
    0以上、10未満の場合の処理
    最初の式「a >= 0」がfalseなら、右を評価する必要はないので「a < 10」は計算されない。
}

サンプル

 条件分岐を、論理演算で扱った処理を、JavaScriptで簡単に書いてみます。

<html>
    <head>
        <title>「条件分岐と論理演算」のサンプル</title>
    </head>
    <body>
        <pre><script type="text/javascript">
            for (var i = 0; i < 6; i ++) {
                if ((i >= 2) && (i < 4)) {
                    document.writeln(i + " は 2以上かつ4未満");
                } else {
                    document.writeln(i);
                }
            }
            document.writeln("");

            for (var i = 0; i < 6; i ++) {
                if ((i < 2) || (i >= 4)) {
                    document.writeln(i + " は 2未満または4以上");
                } else {
                    document.writeln(i);
                }
            }
            document.writeln("");
        </script></pre>
    </body>
</html>
出力結果)
0
1
2 は 2以上かつ4未満
3 は 2以上かつ4未満
4
5

0 は 2未満または4以上
1 は 2未満または4以上
2
3
4 は 2未満または4以上
5 は 2未満または4以上
フィードバックお待ちしております!

 ご感想、解説して欲しい用語、解説内容のアドバイスなどございましたら、FacebookTwitterなどでお気軽に編集部までお寄せください。よろしくお願いいたします。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
マンガで分かるプログラミング用語辞典連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/6883 2013/01/01 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー