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

SESSION 8 その15
論理演算子 つづき

じゃあ、
ざっと説明が終わったところで
論理演算子の使い方を詳しく
見ていこう。

はいっ。

 
   

  論理演算子の使い方

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

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

みたいな判定もできるよ。
あんま
条件多いと
分かるづらく
けどね。
どんな
条件式でも
できそうだね。
「勇者攻撃力が
500以上で かつ 1000以下」で、
かつ
「魔法石が7個 または 魔法薬を5個
持っている場合」、
超必殺技発動!


みたいなこともできるんだ!
 


おー、
じゃあ、その内容で
例のコードを作ってみよう。

こんな感じかな。

新しいプロジェクトを作って
書き写してくれ。
「KotoTest5」な。

ゆっくり読んでね。
複雑ー
うわー、
条件式だらけー。

なんか、
括弧が多くない?
 

論理演算子 複数条件例(KotoTest5のKNMain.java)17行目~
・・・      
017   public static void main(String[] args) {  
018            // TODO code application logic here  
019      
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            }  
031      
032            System.out.println("全処理終わり");  
033      
・・・ }
黄色の部分が追加・改変部分です。
書き写して下さい。


これは
()括弧を使うことで、判定の
優先順位を変えてるんだよ。

通常、&&演算子と||演算子を
一緒に使った場合は、
&&演算子が先に評価される。

判定する順番で結果が変わる
から注意しよう。
そっか、
掛け算、割り算が
足し算、引き算より
先に計算されるのと同じ
だね。
括弧で
優先順位が
変わるのは
共通だな。
  かっこ付けないと
結果が
変わっちゃう場合が
あるんだ。
 

論理演算子 複数条件の優先順位例(括弧有り)
・・・      
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個
 


 
じゃあ、実行してみよう。
 
うーん、やっぱり
勇者攻撃力が0だから
魔法薬が5個でも実行
されないね。
  「且つ」だから、
両方満たして
ないと。
 
 
 
実行結果(出力ウィンドウ)


じゃあ、
次に括弧を取ったのに
書き換えて実行してみよう。
えー、
どんな結果に
変わるのかな?
 
   
 

論理演算子 複数条件例(KotoTest5のKNMain.java)17行目~ 括弧削除
・・・      
017   public static void main(String[] args) {  
018            // TODO code application logic here  
019      
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            }  
031      
032            System.out.println("全処理終わり");  
033      
・・・ }
黄色の部分を削除して実行して下さい。


実行結果(出力ウィンドウ)
 
magicGemの
条件式が&&に
くっついちゃう。
ほら、結果が全く違うだろ。

さっきは実行されなかった値で
実行されちゃったよな。

括弧を外すと&&演算子が
優先されて条件が作られる。

条件の意味が全く
変わっちゃってるだろ。
 
ほんとだ、全然違う!

たった魔法薬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.||

って感じ。

結果に影響が出るから気を
つけよう。
 

計算した後に評価
されるんだね。



今はなんとなくで
いいから
理解しといてね。
はいっ。

また復習するね。
これから何回も
やるから大丈夫。
  かっこ付けないと
結果が変わっちゃう
場合があるって
覚えとこ。


あのさっ、論理演算子で
条件式をいくつ
つなげてもいいの?

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

まあ、分かりづらく
ならない程度にしとけ。
もー、
いつもあばうと。。
  例のコードは
4つか。

まあ、2~4個
ぐらいじゃね?


yuushaAttack、
magicGem 、
magicPotion ・・・

変数もいっしょに
いくつ使ってもいい
んだね。
攻撃力とアイテム
組み合わせて
判定することも
できるんだ
複雑に
なるけどねー
ああ、
何個でも使って
条件判定出来るよ。

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

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


これらはさっきのテストの

条件判定を
・ifを入れ子にして2つにするか
・論理演算子で1つにまとめるか

とかと同じで、
何が一番良いって訳じゃない。

使う場所で臨機応変に
使い分けよう。
まあ、これも慣れだけどね。

読みやすいコード
一番!

でしょ!

 
 


 
おー、
たーりーんー
わかつたねー
おー、
なーぽん、
わーかつたーおー
 


ム~
  いえいえい

  論理演算子のまとめ

じゃあ、まとめだ。

見直してくれ。
はいっ。

覚える事、いっぱい
あったもんね。
 
 
 

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

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

     

でも、いつの間にか
コードがすごい
増えてきたねー。

自分でも
なんとなくでも
分かるのが
信じられないー。
でも難しい~。

もっと
がんばらないと。
覚えることより
考えることの方が
増えてきたからな。

ゆっくり読もう。
パッと見だと、頭痛くなるけどな。

部分部分で読んでいけば
理解できるだろ。
小さなものの積み重ねだ。

こんなの慣れ、慣れ。
これから経験してけば大丈夫だよ。


あんま気張るなよ。

今よく分かんないでも
これから繰り返し使ってくうちに
いつの間にか分かるように
なってるから。

うんっ!

焦らないようにする!

お前
よくやってるよ。
着実に進んでる。
  ほんとに?

もしかして
なぽちゃんに
ほめられた!?

うれしー!


今はなんとなく分かればOK。
誰でも最初からできるわけ
じゃないからね。

演算子は条件の判定に
重要だってことを覚えておいて
随時見直してくれ。
はいっ!

やる気が大事!
だねっ。
い、いや・・・

ちょっと
喜びすぎじゃね。
  やった、
なぽちゃんに
ほめられたー!

やった!やった!


じゃあ、まとめだ。

比較演算子や
論理演算子を
使ったテスト
をしよう。

はーいっ!

あー、
もう勝手にして・・・

なんか
ムカつくけど。
  やった、やった
ほめられたー!

なぽちゃんにー
ほめられたー!


 
 

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