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

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

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の値を出力 } |

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の値を出力 } |
同じように、else ifやelseによっても様々な条件分岐が可能になります。次の式では、if、 else if、 elseを全て使っています。
else if (もしくは〜だったら)
else (さもなくば)

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

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の値を出力 } |

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で使われる演算子
これらの論理演算子は、組み合わせると更に複雑な条件を設定することができます。
以下のコードを実行してみましょう。
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の値を出力 } |

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

今までの実習を理解していれば、さほど難しい問題ではないですよね。
解答
それでは、次はどうでしょうか?
これは、自分で考えてみて下さい。

Sorry, comments are closed.