トップページへ

while 文

while 文

while 文とは、指定した条件が満たされる限り、ブロック内の処理を繰り返し実行する命令です。繰り返しを行なうという点で for 文と似ていると言えます。Processing における while 文の書き方を以下に示します。

int counter = 0;
background( 245 );
colorMode( HSB, 100 );
noStroke();
size( 600, 400 );

while( counter < 100 ){ // この条件が真である限りブロック内の処理が繰り返される
  float x = random( width );
  float y = random( height );
  float r = 10 + random( 80 );
  fill( random(100), 100, 100, 50 );
  ellipse( x, y, r, r );
  counter++;
}

この場合、条件式となるのは counter < 100 の部分です。この条件が満たされる限り、while ブロック内の処理が繰り返し実行されます。if 文の場合のように条件式には好きな内容を書くことができ、論理積や論理和を使うこともできます。


実行例

上記の例の場合、while ブロックの最後に counter++ という行があることに注目して下さい。この行が無いと、counter の値はずっと 0 のままなので、while 文の条件はいつまでも真のままとなり、永遠に while 文が終了しません。while 文を使う時はこのような無限ループが生じないよう気をつける必要があります。

条件式として常に真となるような式を書く、または true を入れることで、意図的に無限ループを作り出すことができます。そのような場合でも、break 文を使うことで while ループから抜けることができます。

int counter = 0;
background( 245 );
colorMode( HSB, 100 );
noStroke();
size( 600, 400 );

while( true ){ // 無限ループとなる
  float x = random( width );
  float y = random( height );
  float r = 10 + random( 80 );
  fill( random(100), 100, 100, 50 );
  ellipse( x, y, r, r );
  counter++;
  if( counter > 100 ){
    break; // whileブロック内でbreak文が呼ばれるとその時点でループを抜ける
  }
}

実行結果は上と同じです。ちなみに、break 文は、最初の例のような条件式を書いている場合でも使うことはできます。