if〜else〜 条件分岐命令
条件ごとに処理を行いたい場合に利用する。
if (条件式) {条件式が「真(true)」の場合に実行する内容をここに書く。「偽(false)」の場合は実行されない。}
「条件式がtrueになる場合」
int i = 1;
if (i > 0) background(255, 0, 0); //iに代入された「1は0よりも大きい」はtrueなので、「背景色を赤にする」を実行する
「条件式がfalseになる場合」
int i = 0;
if (i > 0) background(255, 0, 0); //iに代入された「0は0よりも大きい」はtrueではない(false)ので、「背景色を赤にする」は実行されない
※条件式に応じて複数の処理を実行する場合は、その処理を{ }でくくる。{ }の内容にはインデントを入れる。
int i = 0;
if (i > 0) {
background(255, 0, 0);
ellipse(50, 50, 50, 50);
}
条件式
== 左辺が右辺に等しい
「変数iが10に等しければtrue」
i == 10
※「i=10」は「iに10を代入」である。混同しやすいので注意。
!= 左辺が右辺に等しくない
「変数iが10に等しくなければtrue」
i! = 10
< 左辺が右辺より小さい
「変数iが10より小さければtrue」
i < 10
> 左辺が右辺より大きい
「変数iが10より大きければtrue」
i > 10
<= 左辺が右辺以下
「変数iが10以下ならばtrue」
i <= 10
>= 左辺が右辺以上
「変数iが10以上ならばtrue」
i >= 10
※<=, >=を逆に書く(=<, =>)とエラーになるので注意。
&& かつ
「変数iが0より大きく、かつ、変数iが10より小さければtrue」
i > 0 && i < 10
|| または
「変数iが0より小さい、または、変数iが10より大きいならばtrue」
i < 0 || i > 10
演習
「繰り返し、線を描く(ウィンドウの幅いっぱいに縦線を敷き詰める)」
for(int i = 0; i < width; i++){
line(i, 0, i, height);
}
※このプログラムに条件分岐を加えていく → 「特定の条件を満たす場合にのみ、線を描く」
- x座標が3のとき
- x座標が3でないとき
- x座標が33未満のとき
- x座標が3または33のとき
- x座標が3以上33以下のとき
- x座標が3の倍数のとき
- x座標が3の倍数かつ7の倍数でないとき
※ i%3は「iを3で割ったときの余り」を計算する。たとえば「5%3」は「2」であり、「9%3」は「0」となる。
if (条件式) {条件式がtrueの場合の実行内容} else {条件式がfalseの場合の実行内容}
「条件式の結果によって、異なる処理を実行する」
float ramdomNum = random(100); //0から100の間の値をランダムに生成
println(ramdomNum); //コンソールに値を表示
if (ramdomNum < 50) background(255, 0, 0); //50未満ならば、背景色を赤にする
else background(0, 255, 0); //そうでないなら、背景を緑にする
「画面左から縦線をびっしりと引くとき、ランダムな値に応じて線の色を設定する」
//画面左から縦線をびっしりと引く
for (int i = 0; i < width; i++) {
float ramdomNum = random(100); //0から100の間の値をランダムに生成
if (ramdomNum < 50) stroke(0); //50未満ならば、線の色を黒に設定
else stroke(255); //そうでないとき、線の色を白に設定
line(i, 0, i, height); //縦線を描く
}
「画面左から縦線をびっしりと引くとき、x座標が3の倍数(3で割って割り切れる)のときには黒い線を、3の倍数でないときには白い線を描く」
//画面左から縦線をびっしりと引く
for (int i = 0; i < width; i++) {
//条件に従って色の設定をする
if (i%3 == 0) stroke(0); //iが3で割り切れるとき、線の色を黒に設定
else stroke(255); //そうでないとき、線の色を白に設定
line(i, 0, i, height);
}
if (条件式A) {条件式Aがtrueの場合の実行内容} else if (条件式B) {条件式Bがtrueの場合の実行内容} else {条件式A,Bがfalseの場合の実行内容}
「画面左から縦線をびっしりと引くとき、x座標が3の倍数のときには赤い線を、3で割って1余るときには緑の線を、それら以外のときには青い線を描く」
//画面左から縦線をびっしりと引く
for (int i = 0; i < width; i++) {
//条件に従って色の設定をする
if (i%3 == 0) stroke(255, 0, 0); //iが3で割り切れるとき、線の色を赤に設定
else if (i%3 == 1) stroke(0, 255, 0); //iを3で割って1余るとき、線の色を緑に設定
else stroke(0, 0, 255); //そうでないとき、線の色を青に設定
line(i, 0, i, height);
}
switch 〜 case 〜 default パターン振り分け
↑上のプログラムをswitch文で書きかえる
//画面左から縦線をびっしりと引く
for (int i = 0; i < width; i++) {
switch (i%3) {
case 0: //i%3の結果が0のとき以下を実行
stroke(255, 0, 0);
break; // switch文を抜ける
case 1: //i%3の結果が1のとき以下を実行
stroke(0, 255, 0);
break;
default: //どのケースにも当てはまらないとき以下を実行
stroke(0, 0, 255);
break;
}
line(i, 0, i, height);
}