目次

オブジェクトなJavaScriptの基礎講座

for/while文の使い方

◆ はじめに

代入文はもうご理解頂けたでしょうか...、今回は、繰り返し処理です。for,while,continue,break,label等をお勉強していきましょう。

◆ for文の使い方

for文は繰り返しの処理に使用します。

  for( 初期設定 ; 条件式 ; 処理後の式 ){
     繰り返す処理 ;
  }

条件式が真である限り、処理を繰り返します。条件式は「終了の条件」ではなく、「継続の条件」です。 また初期設定の段階で条件式が偽であるのならば、処理は一度も行われることはありません。

尚、繰り返す処理が一つの時は、{ }を省略することができます。

  for( 初期設定 ; 条件式 ; 処理後の式 )  繰り返す処理 ;

以下は、i を 0 から始めて、10未満の間、i を +1しながら、{ }で囲まれたブロックを繰り返します。
i++ は i=i+1 と等価です。

for(i=0; i<10; i++){
     :
}


また、多重ループにすることも出来ます。

for(i=0; i<10; i++){
     :
     for(j=0; j<5; j++){
          :
     }
     :
}


プログラム例1

2行4列のテーブルを作成します。テーブルの各項目には(0,0)のような行、列位置を示す 文字列を表示します。

<script type="text/javascript">
     document.write("<TABLE BORDER>");
     for(i=0; i<2; i++){
          document.write("<TR>");
          for(j=0; j<4; j++){
               document.write("<TD>(",i,",",j,")</TD>");
          }
          document.write("</TR>");
     }
     document.write("</TABLE>");
</script>

尚、document.writeはdocumentオブジェクトを参照してください。今回はブラウザ出力です。


例1の処理結果

◆ while文の使い方

for 文では、処理の前に条件式が判定され、条件式が真ならば処理が行われました。

しかし、最初に処理をして、あとから条件式を判定し、それが真ならば再び同じ処理を繰り返す、という風にしたい場合もあります。 このような場合は do{ } while ( ) 文を使います。一般には次の通りになります。

  do
  {
        繰り返す処理 ;
  } while ( 条件式 )

条件式が真である限り、処理を繰り返します。条件式は「終了の条件」ではなく、「継続の条件」です。 最初に一度だけ処理が行われ、その後に条件式を判定します。偽であるのならば、処理は一度だけしか行われません。

尚、繰り返す処理が一つの時は、{ }を省略することができます。

  do 繰り返す処理 ; while(条件式)

また、while に for と同じ機能を持たせることが出来ます。一般に次のような書式にします。

  while( 条件式 )
  {
        繰り返す処理;
  }

こうすると、処理の前に条件式が判定され、もし偽ならば一度も処理が行われずに終ります。 条件式が真の場合は処理が一度行われ、終った後に条件式を再び判定し、真である限り処理を繰り返します。

◆ continueの使い方

continue は for や while 文の繰り返し処理の途中で用います。

whileの繰り返し処理の途中で使われた場合、以後の処理をスキップしてすぐに while( 条件式 ) の条件式の真偽の判断に移ります。条件式が真ならば、再び繰り返し処理の先頭に戻ります。偽ならばループを抜け出して次の処理に移ります。

for の繰り返し処理の途中で使われた場合は、以後の処理をスキップして for( 初期条件 ; 条件式 ; 処理後の式 ) の処理後の式を実行します。その後、条件式の真偽を判定し、条件式が真ならば再び処理を繰り返し、偽ならばループを抜け出して次の処理に移ります。

  while( 条件式 )
  {
     :
     :
   continue;  → 条件式判定
     :   ← ここから下の処理はスキップされます。
     :   
     :
  }
  for( 初期条件 ;  条件式 ; 処理後の式 )
  {
     :
     :
   continue; → 処理後の式 → 条件式判定
     :   ← ここから下の処理はスキップされます。
     :   
     :
  }

通常 continue は以下のという形で使われます。

  if ( 〜 ) { ....;
              contiune; 
            }

◆ breakの使い方

break は for や while 文の繰り返し処理の途中で用い、以後の処理をスキップしてすぐにループを抜け出します。 for 文の場合は処理後の式を実行しません。

  while( 条件式 )
  {
     :
     :
   break; → 次のステップに飛ぶ。
     :   ← ここから下の処理はスキップされます。
     :   
     :
  }
  
  〜〜
  for( 初期条件 ;  条件式 ; 処理後の式 )
  {
     :
     :
   break; → 次のステップに飛ぶ。
     :   ← ここから下の処理はスキップされます。
     :   
     :
  }

  〜〜

while や for の中では、通常 break は以下のような形で使われます。

  if ( 〜 ) { ....;
              break; 
            }

◆ ラベルの使い方

複数のループの中にいるときに、単純に break や continue を貼っただけだと、現在のループの外に出るだけになります。ですが、ラベルオプションを使うと、どのループの外に break するか、どのループの頭に continue するかを定めることができます。

ラベルは 以下のような形で書きます。

  sample_label:
  for( 初期条件 ; 条件式 ; 処理後の式 )
または、
  sample2_label:
  while( 条件式 )

かならず for か while の直前にレベルを記述します。

また、ラベルを使うには、break , continue ステートメントに追加記述します。

プログラム例2

  <script type="text/javascript">
   document.write("計算はじめ<br>");
    loop_top:
    for ( var i = 0 ; i < 3 ; ++i ){
      for ( var j = 0 ; j < 3 ; ++j ){
        document.write( i , j , "<br>" );
        if ( i == 1 && j == 1 ) break loop_top;
      }
  }
  document.write("計算おわり");
  </script>

例2の処理結果

目次