条件分岐(if, else if, else)

Filed in processing , 制作応用演習(グラフィカルプログラミング演習) 0 comments

さて、次はif、 else if、 elseといった条件分岐を学びます。この構文は、比較的理解しやすいものの一つでしょう。
先ほどの”for”の項での例題を少し変えてif文を使ってみます。int eSizeの値を色々変えて実行してみて下さい。

1. if (もし〜だったら)

processingscreensnapz001.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int eSize = 10;  //円の直径
 
size(400, 400);  //画面のサイズ
background(255);  //背景色(0~255)
smooth();  //オブジェクトにアンチエイリアスをかける
 
//20ピクセルごとに繰り返す
for(int x = 0; x < = width; x += 20){
 
  if(x == width/2){  //もし、xの値がウィンドウの横幅の半分の値と同じだったら、
    fill(255);  //円の色を白にする
  }
  else{    //それ以外のときには。
    fill(0);  //円の色を黒にする
  }
  ellipse(x, height/2, eSize, eSize);
  println("x=" + x);  //デバッグ用に変数xの値を出力
}

この式は、xが画面の半分の値のときだけ、円を白で塗りつぶします。
構文は以下の通りです。if文の条件式はかならず{}(ブレース)で囲まれます。

1
2
3
if(条件式) { 
  条件文 
}

2. if 文の中の条件式

更に、条件式は==だけでなく、> や、< なども使うことができます。
以下の二つの式は、ほとんど同じですが、> と、> の違いによって、表示されるグラフィックに違いが出ます。

processingscreensnapz002.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int eSize = 10;  //円の直径
 
size(400, 400);  //画面のサイズ
background(255);  //背景色(0~255)
smooth();  //オブジェクトにアンチエイリアスをかける
 
//40ピクセルごとに繰り返す
for(int x=0; x<=width; x+=40){
 
  if(x < width/2){  //もし、xの値がウィンドウの横幅の半分を超えていたら、
    fill(255);  //円の色を白にする
  }
  else{    //それ以外のときには。
    fill(0);  //円の色を黒にする
  }
  ellipse(x, height/2, eSize, eSize);
  println("x=" + x);  //デバッグ用に変数xの値を出力
}

processingscreensnapz003.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int eSize = 10;  //円の直径
 
size(400, 400);  //画面のサイズ
background(255);  //背景色(0~255)
smooth();  //オブジェクトにアンチエイリアスをかける
 
//40ピクセルごとに繰り返す
for(int x=0; x<=width; x+=40){
 
  if(x <= width/2){  //もし、xの値がウィンドウの横幅の半分を超えていたら、
    fill(255);  //円の色を白にする
  }
  else{    //それ以外のときには。
    fill(0);  //円の色を黒にする
  }
  ellipse(x, height/2, eSize, eSize);
  println("x=" + x);  //デバッグ用に変数xの値を出力
}

3. else if、else

同じように、else ifやelseによっても様々な条件分岐が可能になります。次の式では、if、 else if、 elseを全て使っています。

else if (もしくは〜だったら)
else (さもなくば)

processingscreensnapz004.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int eSize = 10;  //円の直径
 
size(400, 400);  //画面のサイズ
background(255);  //背景色(0~255)
smooth();  //オブジェクトにアンチエイリアスをかける
 
//20ピクセルごとに繰り返す
for(int x=0; x<=width; x+=20){
 
  if(x <= width/2){  //もし、xの値がウィンドウの横幅の半分以下だったら、
    fill(0);  //円の色を黒にする
  }
  else if(x > width/2){    //横幅を超えるときには。
    fill(255);  //円の色を白にする
  }
  ellipse(x, height/2, eSize, eSize);
  println("x=" + x);  //デバッグ用に変数xの値を出力
}

構文は以下の通りです

1
2
3
4
5
6
7
if(条件式) { 
  条件文 
}else if(条件式) {
  条件文 
}else{
  条件文 
}

4. 論理演算子

さて、上記にもありましたが、演算子についてもう少し知識を深めます。
if文の中では、&&(なおかつ)や | |(もしくは)などの条件を設定することもできます。
下のサンプルを参照して下さい。

processingscreensnapz005.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int eSize = 10;  //円の直径
 
size(400, 400);  //画面のサイズ
background(255);  //背景色(0~255)
smooth();  //オブジェクトにアンチエイリアスをかける
 
//20ピクセルごとに繰り返す
for(int x=0; x<=width; x+=20){
 
  if(x <= 100){  //もし、xの値が100以下だったら、
    fill(0);  //円の色を黒にする
  }
  else if(x > 100 && x < = 200){    //100を超えてなおかつ200以下のときには。
    fill(127);  //円の色を中間のグレーにする
  }
  else if(x > 200){    //200を超えるときには。
    fill(200);  //円の色を薄いグレーにする
  }
  ellipse(x, height/2, eSize, eSize);
  println("x=" + x);  //デバッグ用に変数xの値を出力
}

processingscreensnapz006.jpg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int eSize = 10;  //円の直径
 
size(400, 400);  //画面のサイズ
background(255);  //背景色(0~255)
smooth();  //オブジェクトにアンチエイリアスをかける
 
//20ピクセルごとに繰り返す
for(int x=0; x<=width; x+=20){
 
  if(x == 100 || x == 300){  //もし、xの値が100もしくは300だったら、
    fill(255);  //円の色を白にする
  }
  else{    //それ以外のときには。
    fill(0);  //円の色を黒にする
  }
  ellipse(x, height/2, eSize, eSize);
  println("x=" + x);  //デバッグ用に変数xの値を出力
}

これらの論理演算子を使うことによって、複雑な条件分岐が可能になります。
条件式に使われる演算子は以下を参照して下さい。
Processingで使われる演算子

5. &&と||の組み合わせ

これらの論理演算子は、組み合わせると更に複雑な条件を設定することができます。
以下のコードを実行してみましょう。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int eSize = 10;  //円の直径
 
size(400, 400);  //画面のサイズ
background(255);  //背景色(0~255)
smooth();  //オブジェクトにアンチエイリアスをかける
 
//20ピクセルごとに繰り返す
for(int x=0; x<=width; x+=20){
 
  if((x > 100 && x <=200) || x == 300){  //もし、xの値が100を超えて200以下、もしくは300だったら、
    fill(255);  //円の色を白にする
  }
  else{    //それ以外のときには。
    fill(0);  //円の色を黒にする
  }
  ellipse(x, height/2, eSize, eSize);
  println("x=" + x);  //デバッグ用に変数xの値を出力
}

以上のような結果になります。

6. for文の入れ子構造との組み合わせ

それでは、今までに学習したfor文の入れ子構造と組み合わせてみましょう。
以下のサンプルを実行してみて下さい。

processingscreensnapz007.jpg

今までの実習を理解していれば、さほど難しい問題ではないですよね。
解答

それでは、次はどうでしょうか?
これは、自分で考えてみて下さい。

processingscreensnapz008.jpg

解答

Posted by noguchi   @   30 4月 2008 0 comments

0 Comments

Sorry, comments are closed.

Previous Post
«
Next Post
»
Stroom designed by Credit Cards In conjunction with Web Hosting Reseller , Dream Interpretation Guide , Best Website Hosting.