広告
  サイト内検索:
<Let's create a game!> Introduction of programming for absolute beginners English

論理演算子
論理演算子

論理演算子
比較演算子と同じで条件の判定に使う記号

この論理演算子を使うと複数の条件で判定できる
(つまり、同時にたくさん条件式を使える。)
 


例えば、&&演算子を使えば、

もし経験値が700以上で
かつ
経験値が800以下なら
エクストラ処理を実行」

という判定が、一つの条件式で書ける。

この場合は、両方の条件がtrueに
なった場合のみ実行される。
 

論理演算子 && を使った例
・・・     
034         //もしyuushaExpが 700以上 で 800以下 なら
035            if(yuushaExp >= 700 && yuushaExp <= 800){  
036                 //特別レベルアップ!メッセージを表示  
037                 System.out.println("エクストラレベルアップ!!!");  
038
039           }  
・・・     
    
 
   の 全ての条件式 が true の場合 ブロック内 が 実行される
 
    
 この場合、変数yuushaExpの値 が 700以上 かつ 800以下 なら実行される  
    



論理演算子一覧
 
演算子種類書式内容
|論理A | BAかBがtrueならtrueを返す。
必ず両方チェックする。
例:a | b
||論理A || BAかBがtrueならtrueを返す。例:a || b
&論理A & BAとBがtrueならtrueを返す。
必ず両方チェックする。
例:a & b
&&論理A && BAとBがtrueならtrueを返す。例:a && b
!論理!AAがfalseならtrueを返す。例:!(a < b)
^論理A ^ BAとBが同じ(両方がtrueかfalse)でなければtrueを返す。例:a ^ b
 



論理演算子一覧 改変
 
演算子種類書式意味内容
|論理A | BAまたはBならAかBがtrueならtrueを返す。
必ず両方チェックする。
例:a | b
||論理A || BAまたはBならAかBがtrueならtrueを返す。
例:a || b
&論理A & BAかつBAとBがtrueならtrueを返す。
必ず両方チェックする。
例:a & b
&&論理A && BAかつBならAとBがtrueならtrueを返す。
例:a && b
!論理!AA以外ならAがfalseならtrueを返す。
例:!(a < b)
^論理A ^ BAとBが同じ(両方がtrueかfalse)でなければAとBが同じ(両方がtrueかfalse)でなければtrueを返す。
例:a ^ b
 
論理演算子には
いろいろな種類がある。

その中でよく使うもの
 

 &&演算子

&&演算子

日本語で言えば「かつ」の意味。

&&演算子は「○○で、かつ××なら処理を実行する」
というように、両方の条件を満たした場合だけ実行される。

使う記号は「&&」。&(アンド)を2つつなげて書く。
 

論理演算子 && を使った例
・・・     
034         //もしyuushaExpが 700以上 で 800以下 なら
035            }else if(yuushaExp >= 700 && yuushaExp <= 800){  
036                 //特別レベルアップ!メッセージを表示  
037                 System.out.println("エクストラレベルアップ!!!");  
038
039           //もしyuushaExpが 555 か 666 なら  
040           }else if(yuushaExp == 555 || yuushaExp == 666){  
・・・     
    
 
   の 全ての条件式 が true の場合 ブロック内 が 実行される
 
    
 この場合、変数yuushaExpの値 が 700以上 かつ 800以下 なら実行される  
    
 
&&演算子の判定

 ||演算子

||演算子

日本語で言えば「~または」の意味。

○○または××なら処理を実行する」というように
どれか一つ以上の条件を満たした場合実行される。

使う記号は「||」。| を2つつなげて書く。
 

||演算子の例
 
・・・     
039           //もしyuushaExpが 555 か 666 なら  
040           }else if(yuushaExp == 555 || yuushaExp == 666){  
041                 //呪いにかかった!レベルダウンメッセージを表示  
043                  System.out.println("呪いにかかった!レベルダウン!!");  
044     
045         //それ以外なら
046           }else{  
・・・     
 
   の どれかの条件式 が true の場合 ブロック内 が 実行される
 
この場合、変数yuushaExpの値 が 555 または 666 なら実行される
 
 
||演算子の判定


 
条件のどれか一つでもtrueなら実行される。
 
||演算子の処理の流れ

 !演算子

!演算子の例

if( !(yuushaExp >= 100) ){・・・
もし 「勇者経験値が100以上」以外 なら

yuushaExpが100以上 以外 だったら true になる。
つまり yuushaExp が 99以下 の場合 実行される。
 
!演算子

「以外」を表す演算子。


条件式の前に付ける事で、
条件式「以外」の場合にtrue
になる。

感嘆符(エクスクラメーションマーク)を使う。
条件式を()括弧でくくって、前に「!」を書く
 
!演算子の判定

 論理演算子の使い方

論理演算子は
他の論理演算子や比較演算子、
()括弧の優先順位などと組み合わせて、
様々な判定が出来る。

例えば
「A で、かつ B」で、
かつ
「C または D」

みたいな判定もできる。
例:

「勇者攻撃力が
500以上で かつ 1000以下」で、
かつ
「魔法石が7個 または 魔法薬を5個
持っている場合」、超必殺技発動!
 


判定の順位

通常、&&演算子と||演算子を一緒に使った場合は、
&&演算子が先に評価される。
(掛け算、割り算が、足し算、引き算より先に計算されるのと同じ。)

()括弧を使うことで、判定の優先順位を変えられる。
&&演算子と||演算子を一緒に使う場合は
判定の優先順番が分かりづらくなるので
自分の実行したい順番に条件式に()括弧を付ける様にする。

判定する順番で結果が変わる
から注意すること。
 

論理演算子 複数条件の優先順位例(括弧有り)
・・・     
020           int yuushaAttack = 0;//勇者攻撃力 0に初期化   
021           int magicGem = 0;//魔法石 0に初期化   
022           int magicPotion = 5;//魔法薬 5に初期化   
023     
024         //もし勇者攻撃力が 500以上 で 1000以下 で、 かつ
025           //魔法石が7個 または 魔法薬を5個 なら  
026            if((yuushaAttack >= 500 && yuushaAttack <= 1000)&&  
027               (magicGem == 7 || magicPotion == 5)){  
028                 //超必殺技発動メッセージを表示  
029                 System.out.println("超必殺技発動!!!");  
030           }  
・・・     
括弧を書いた場合、
括弧が優先的に評価され、条件式が以下のように解釈される。
条件式の内容
勇者攻撃力が 500以上 で 1000以下
かつ
魔法石が7個 または 魔法薬を5個
 
 

論理演算子 複数条件の優先順位例(括弧なし)
・・・     
020           int yuushaAttack = 0;//勇者攻撃力 0に初期化   
021           int magicGem = 0;//魔法石 0に初期化   
022           int magicPotion = 5;//魔法薬 5に初期化   
023     
024         //もし勇者攻撃力が 500以上 で 1000以下 で、 かつ
025           //魔法石が 7個 または 魔法薬を 5個 なら  
026            if(yuushaAttack >= 500 && yuushaAttack <= 1000 &&  
027               magicGem == 7 || magicPotion == 5){  
028                 //超必殺技発動メッセージを表示  
029                 System.out.println("超必殺技発動!!!");  
030           }  
・・・     
括弧を書かなかった場合、
&&演算子が優先的に評価され、条件式が以下のように解釈される。
条件式の内容
勇者攻撃力が 500以上 で 1000以下 で 魔法石が 7個
または
魔法薬が 5個
 



演算子の結合順位
 
優先順位
(上ほど高い)
種類
1! 論理演算子
2算術演算子(計算)
3比較演算子(比較)
4&& 論理演算子
5|| 論理演算子
 
条件式で演算子を使った場合の評価の順番

1.計算 2.比較 3.&& 4.||



結果に影響が出るから気をつけること。
 


論理演算子で、
条件式をいくつつなげて書いてももいい

条件式はいくらでもつなげて評価できる。

ただし、分かりづらくならない程度にしておくこと。
 


演算子の条件判定には
変数もいっしょにいくつ使ってもいい

何個でも使って条件判定出来る。

変数の型が違っていても、一緒に使える。
 

論理演算子 複数条件例
・・・      
           //もしyuushaAttack が 500以上 で 1000以下 で、 かつ
         //魔法石が7個 または 魔法薬を5個 なら
              if((yuushaAttack >= 500 && yuushaAttack <= 1000) &&  
                 (magicGem == 7 || magicPotion == 5)){  
                   //超必殺技発動メッセージを表示  
                   System.out.println("超必殺技発動!!!");  
             }  
・・・      
変数を複数使える
 

 論理演算子のまとめ


論理演算子のまとめ(処理)
論理演算子の処理の内容
複数の条件式を同時に使える(いくつでもつなげられる)
論理演算子の評価には優先順位がある
&&演算子と||演算子を一緒に使った場合は、&&演算子が
先に評価される
他の論理演算子や比較演算子と組み合わせて使える
()括弧で判定の優先順位を変えられる
条件式の判定する順番で結果が変わる
変数もいっしょにいくつでも使える
 
 

論理演算子のまとめ(命令)
&&演算子
全ての条件式 が true の場合 ブロック内 が 実行される
日本語で言えば「~かつ」の意味
英語で言えば「AND」の意味
||演算子
どれかの条件式 が true の場合 ブロック内 が 実行される
日本語で言えば「~または」の意味
英語で言えば「OR」の意味
!演算子
条件式 が false の場合 ブロック内 が 実行される
日本語で言えば「~以外」の意味
 

 
このページはセッションで使用したプログラミング用語やIT用語の要約です。復習に利用して下さい。

漫画形式の本編はこちら 
<ゲームを作ろう!>超初心者のためのプログラミング入門
 

広告
home もくじ
  サイト内検索:
広告
お勧めの姉妹サイト
leafdays - リーフデイズ 超初心者のための園芸入門 - 楽しい趣味のガーデニング -