講義項目メニュー

論理構造評価式if文else if文演習

プログラムの論理構造

今まで習ったことでは、プログラムにデータを渡してそれに対して処理させることが可能になりました。この構造を逐次(順次)構造と言い、フローで書くと下図のようにかけます。

また特定の条件に於いてプログラムの動作を分岐させたいときがあります。そのような論理構造を分岐(選択)構造と言い、フローチャート(流れ図)では以下のように書きます。

次の項目では同じ動作を繰り返し行いたいときがあります。このような論理構造を繰り返し(ループ)構造と言い、フローチャートでは以下のように書きます。

実際プログラムや行動に於いて段階的に細かく分けていくとこの3つの論理構造ですべての事象を書くことができます。

評価式

プログラムに於いて分岐構造や繰り返し構造を用いたいときはその条件を満たすための評価式が必要になります。いかにその評価式を用いるのに必要な論理演算子を表しておきます。論理演算子に於いて条件が成り立つならtrue(真)、成り立たないなら偽(false)と言います

例の結果はこの値を用いて判断してみました;a=13, b=25, c=43

優先度
演算子
意味 処理内容
例の結果
1
!
論理否定 trueならfalse、falseならtrue
!(a < b)
false
5
<
小なり 左辺がより小さければtrue、そうでなければfalse
a < b
true
c < b
false
<=
小なりイコール 左辺がより小さいか等しければtrue、そうでなければfalse
a <= b
true
c <= b
false
>
大なり 左辺がより大きければtrue、そうでなければfalse
a > c
false
b > c
false
>=
大なりイコール 左辺がより大きいか等しければtrue、そうでなければfalse
b >= a
true
b >= c
false
6
==
イコール 左辺と右辺が等しければtrue、そうでなければfalse
a == b
false
!=
ノットイコール 左辺と右辺が違えばtrue、そうでなければfalse
a != b
true
10
&&
条件のAND 両辺に論理式を記述し、両方ともtrueの場合だけ結果はtrue
(a < b)&&(c < b)
false
11
||
条件のOR 両辺に論理式を記述し、片方がtrueであれば結果はtrue
(a < b)||(c < b)
true

分岐構造

if文

単純に処理を分岐させたいときはif文を使います書式は

 if(評価式){ }

例: if(i==1){
     処理1;
   }
この場合iが1なら処理1を行う

評価式の部分には上記論理演算子を用います。評価式=trueならブロック内の処理を行います。falseの場合何もしなければそのままでよいですがfalseの場合の処理を書きたい場合は

if(評価式){ }
else{ }

例: if(a>30){
     処理1;
   }
    else{
     処理2;
   }
この場合aが30より大きいなら処理1、そうでなければ処理2を行う

とブロック記述します。この例を流れ図で表すと下図になります。

else if文

4通りに場合分けしたいときなど分岐を多数に渡って行いたいときがあります。この場合は分岐先にelse if文を使います。書式は

if(評価式1){ }
else if(評価式2){ }


else{ }

とブロック記述します。ブロックの中身はif文と同じで、評価式=trueに行わせたい処理を記述します。else if文を流れ図で表すと下図になります。

else if samplesource

ifを複数書くのと、else ifを複数書く場合のフローの組み合わせの違いを考えてみましょう。

また、ifやelse ifにまた違う分岐条件が埋め込めることも確認してみよう(ヒント:論理和)。

 

*演習

  1. 前回作ったBMI指数を求めるプログラムに計算されたBMI指数の数によって「あなたは~です」と表示される様にしてみよう。BMI値の範囲は18.5以下は痩せ型、18.5から25未満は標準体型、25から30未満は肥満、30以上は重度肥満である
      
  2. 整数を一つ受け取りこれが偶数か奇数かを調べるプログラムを作れ

  3. 3つの乱数を発生させ、それに応じてそれぞれ違う内容の文字列(上、中、下とか松、竹、梅でも文章でも言葉でも何でもいいです)を表示させてみよ

  4. 3番を少しいじってAセット、Bセット、Cセットと入力するとそれぞれ違う内容の文字列(例えばセットの内容)が表示されるようなプログラムを作ってみよう。ただしセットの内容はあらかじめ変数として用意しておくこと(例:事前に String seta="ハンバーグ、ライス、コーヒー"など

註:文字列の比較にはメソッド.equals()を使うこと

註:乱数はプログラムが実行されるときに作られる擬似的な適当な数である。Math.random()で0から1までの実数を作成します。この場合は整数にキャストとかけ算の組み合わせで作成できます。(例: int rnumber = (int)(Math.random()*3)で0,1,2の3つの整数が適当に用意されます)