条件分岐
スケッチの作成
Processingを起動して,新規にスケッチを保存しましょう. メニューから[ファイル]-[名前を付けて保存]をクリックして,「スケッチフォルダを名前を付けて保存」を開きます. ファイル名に「Project4」を入力し,[保存]をクリックしましょう. 保存先に「Project4」という名前のフォルダが作成されていることを確認してください.
乱数の生成
規則性がないランダムな値のことを 乱数 と呼びます.
コンピュータは完全な乱数を生成することは出来ないため,
アルゴリズムに従って疑似的な乱数を生成します( 疑似乱数 と呼ばれます).
コンピュータゲームにおける「トランプを配る」「サイコロを振る」などはこの疑似乱数を利用しています.
Processingで疑似乱数を先生するにはrandom()
関数を利用します.
random()
関数の引数には,生成する乱数の 下限(low) と 上限(high) を指定します.
また,生成された乱数はfloat型のデータとなることに注意が必要です.
次に示すようにrandom()
関数を利用して,0以上10未満の範囲で乱数を生成してみましょう.
float rand = random(0, 10); | |
println(rand); |
ここでは,for文を利用して,半径10の円を100箇所に描きましょう.
各円は,random()
関数を利用して,ランダムな位置に配置します(ellipse()
の引数はfloat型でもOK).
下記を参考にコードを入力したら,Runボタンをクリックしてください.
実行毎に配置が変わる円が描かれていることを確認してください.
size(300, 300); | |
float x; | |
float y; | |
int r = 10; | |
for(int i=0; i<100; i++){ | |
x = random(0, 300); | |
y = random(0, 300); | |
ellipse(x, y, 2*r, 2*r); | |
} |
比較演算子
for文の 繰り返し条件 に記述されるi<10
などは条件式と呼ばれます.
また,「 < 」は 比較演算子 と呼ばれ,左辺と右辺を比較した結果,
真(true) または 偽(false) のどちらかを返す論理演算の一つです.
この真(true)や偽(false)は boolean型 であることに注意してください.
例えば,変数aの値が5であるとき「a < 3」の結果は false となります.
比較演算子を下記表にまとめます.
比較演算子 | 意味 | 例 |
---|---|---|
A==B | AとBは等しい | x==3 |
A!=B | AとBは等しくない | x!=3 |
A>B | AはBより大きい | x>3 |
A<B | AはBより小さい | x<3 |
A>=B | AはBと等しいか大きい | x>=3 |
A<=B | AはBと等しいか小さい | x<=3 |
下記のコードを参考に,比較演算子の結果を確認してください.
int x = 3; | |
println(x == 3); | |
println(x != 3); | |
println(x > 3); | |
println(x < 3); | |
println(x >= 3); | |
println(x <= 3); |
論理演算子
論理演算子 を利用することで,より複雑な条件式を表現することができます.
例えば,「変数xが3と一致する,かつ,変数yが5と一致する」を条件式で表現するには,
x == 3 && y == 5
と記述します.
この&&
は, 論理積 を意味しており,左右の条件を共に満たす場合に真(true)になります.
同様に,||
は 論理和 を意味しており,左右のどちらかの条件でも満たせば真(true)になります.
int x = 3; | |
int y = 5; | |
println(x == 3 && y == 5); | |
println(x == 3 && y == 3); | |
println(x == 1 && y == 5); | |
println(x == 1 && y == 3); | |
println(x == 3 || y == 5); | |
println(x == 3 || y == 3); | |
println(x == 1 || y == 5); | |
println(x == 1 || y == 3); |
if文
条件式の結果に応じて実行する処理を分けることを 条件分岐 と呼びます. 条件分岐を表現するには if文 を利用します. if文は下記のように記述し,「()」内で指定されている条件式が真(true)となるときに,「{}」内の命令文を実行します.
if(条件式){
実行する命令
}
ここでは,ランダムに生成されたxが150より小さいときにだけ円を描きましょう. 下記を参考にコードを入力したら,Runボタンをクリックしてください. ウィンドウの左側にだけ円が描画されていることを確認してください.
size(300, 300); | |
float x; | |
float y; | |
int r = 10; | |
for(int i=0; i<100; i++){ | |
x = random(0, 300); | |
y = random(0, 300); | |
if(x < 150){ | |
ellipse(x, y, 2*r, 2*r); | |
} | |
} |
下記のようにelseを用いることで,条件式が偽(false)となるときの命令も記述することができます.
if(条件式){
真のときに実行する命令
}
else{
偽のときに実行する命令
}
ランダムに生成されたxが150以上のときには正方形を描きましょう. 下記を参考にコードを入力したら,Runボタンをクリックしてください. ウィンドウの左側は円,右側には正方形が描画されていることを確認してください.
size(300, 300); | |
float x; | |
float y; | |
int r = 10; | |
for(int i=0; i<100; i++){ | |
x = random(0, 300); | |
y = random(0, 300); | |
if(x < 150){ | |
ellipse(x, y, 2*r, 2*r); | |
} | |
else{ | |
rect(x, y, 2*r, 2*r); | |
} | |
} |
さらに,下記のようにelse ifを用いることで,3つに分岐することが可能です.
if(条件式1){
条件式1が真のとき
}
else if(条件式2){
条件式1が偽,条件式2が真のとき
}
else{
条件式1と条件式2が共に偽のとき
}
ランダムに生成されたxが225以上とのきには小さい円(半径5)を描きましょう. 下記を参考にコードを入力したら,Runボタンをクリックしてください. これまでに描画した円と正方形に加え, 小さい円が描画されていることを確認してください.
size(300, 300); | |
float x; | |
float y; | |
int r = 10; | |
for(int i=0; i<100; i++){ | |
x = random(0, 300); | |
y = random(0, 300); | |
if(x < 150){ | |
ellipse(x, y, 2*r, 2*r); | |
} | |
else if(x > 225){ | |
ellipse(x, y, r, r); | |
} | |
else{ | |
rect(x, y, 2*r, 2*r); | |
} | |
} |
課題
次に示す図のようにウィンドウを4分割し,左上は赤,左下は緑,右上は青,右下は黄で図形(円,正方形)を塗りつぶしてください.
課題が完成したら,作成したスケッチを ZIPアーカイブ 形式で保存します. ZIPアーカイブを作成するには,メニューから[ツール]-[スケッチをアーカイブ]をクリックして,「スケッチを名前を付けてアーカイブする」を開きます. 保存するファイル名を確認した上で,[保存]をクリックします. 保存先に「Project4-日付a.zip」というファイルが作成されていることを確認してください.