第4回 – IF(条件分岐)


if文とは、大抵のプログラミング言語に存在する構文で、「AならばBする、AでないならばCする」という考え方を基本とする、命令の実行の有無や順番などを制御するための構文です。
 
if文は ifというキーワードと、条件を決める条件式、そして条件に合致した時に実行される内容を記すブロックの3つからできています。

 if(条件式){
 実行する内容
}

例えば、xという変数の値が100よりも大きい時だけもう一つ円を描いて欲しい、という場合

 if(x > 100){
 ellipse(50,50,50,50);
}

となります。

条件式とは

条件式はその式が正しい true か、間違っている false かの2値によってそのブロックを実行するかどうかを決定します。
なので、
if( true ) { }
と書けば、必ず{ }の中が実行されますし、
if( false ){ }
と書けば、{ } の中は絶対に実行されません。(こんな条件分岐をいつ使うのかはわかりませんが)

また、条件分岐専用にboolean型という変数の型が用意されています。
boolean型は trueか falseの2種類の値のみを格納する事が出来る変数で、int型のように数値を入れたりすることは出来ません。
boolean型についてはまたのちほど詳しくお伝えします。

比較演算子って?

条件式には、true false boolean型の変数の他に、比較演算子を使うことが出来ます。

比較演算子には
a < b (aがbより小さい) a > b (aがbより大きい)
a == b (aがbと等しい)
a >= b(aがbと等しいか大きい)
a <= b(aがbと等しいか小さい) などがあります。 例えば、 10 > 100
の場合、この条件式の結果はfalseとなります。
なので、ifの条件式に 10 > 100 と書くのと、 falseと直接書くのは同値です。
これでは条件式の意味がないので、通常は変数を使って何かと比較する事が多いでしょう。
また、比較演算子を複数使って
10 > 100 == false
と書けば、この条件式の結果はtrueになります。(よって、if文の中身が実行されます)。
10 > 100の結果が falseになり、 false == falseという条件式は trueだからです。

例を見てみよう

例はこのままprocessingのウインドウに貼り付けて実行してみることが出来ます。
コピーでも良いですが、自分の手で書き写してみると大きな学習効果が期待できます。


int ellipseSize = 50; // int型(整数だけが入る型)の変数を、ellipseSizeという名前で宣言する。

void setup(){
  size(800,800); //サイズ800x800で、背景黒のウインドウを作成。
  background(0); //setupの中身は、プログラムをスタートした時に1度だけ実行される。

}

//その後draw(){ から}までの間を秒間30回程度繰り返し実行する。
//その1回1回の事をフレームと呼ぶ。


void draw(){

  background(0);//まず最初に背景を黒で塗りつぶす

  ellipse(400,400,ellipseSize,ellipseSize);//次に左から400、上から400の位置に円を書く。
  					//大きさは、最初に宣言した変数のサイズ。

  if(ellipseSize < 200){//ここでif文が出てくる。
    			//もしも、ellipseSizeという名前の変数が、
    			//200よりも小さかったら、この{}の中が実行される。
    			//実行されると変数に1が足される。
    ellipseSize = ellipseSize + 1;
  }
  
    if(ellipseSize >= 200){//もしも、変数ellipseSizeが200よりも大きかったら、ellipseSizeの中身を50にする。
    ellipseSize = 50;
  }

}


問題

 例1に倣って、最初200の大きさの円が毎フレーム1ずつ小さくなり、50より小さくなったら200に戻る、というプログラムを書きなさい。