(3) ループと分岐

1.for 文によるループ

命令を繰り返したいときはループを使う。
書式は for (初期化式; 条件式; インクリメント式) 文、又はブロック


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>1.for 文によるループ</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--

var A,I;
A=0;                               //Aをゼロに初期化
for (I=1;I<=100;I++) A+=I;                 //Iを1から100まで1つずつ増やしながら、AにIを足して行く
document.open();     //これと、最後のdocument.close()を入れないと、ブラウザによっては表示処理が終了しない<BR>
document.write('1〜100の合計は'+A+'です。');

document.close();

// -->
</SCRIPT>
<P align="center"><A href="jvs-3.html">戻る</A></P>
</BODY>
</HTML>


 




2.ブロックの繰り返し

複数の行を繰り返す場合は {} で囲む。囲まれた部分をブロックと呼ぶ。
varfor 文の初期化で使ってもよい。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>2.ブロックの繰り返し</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--

var A=0;            //変数Aを宣言すると同時にゼロに初期化
document.open(); //これと、最後のdocument.close()を入れないと、ブラウザによっては表示処理が終了しない<BR>
for (var I=1;I<=100;I++)  //変数Iを宣言すると同時に1から100まで1つずつ増やしながら、以下の2行を繰り返す
{                                  //この行から...
   A+=I;
   document.write('I='+I+'   A='+A+'<BR>');
}                                  //この行までがブロック
document.close();

// -->
</SCRIPT>
<P align="center"><A href="jvs-3.html">戻る</A></P>
</BODY>
</HTML>


 




3.ループを利用して表を作る

2のプログラムを利用して、<TD>などのタグを使って表を作るプログラム。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>3.ループを利用して表を作る</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--

document.open(); //これと、最後のdocument.close()を入れないと、ブラウザによっては表示処理が終了しない<BR>
var A=0;
document.write('<TABLE BORDER="1">');
for (var I=1;I<=100;I++) {
   A+=I;
   document.write('<TR>');
   document.write('<TD ALIGN="RIGHT" WIDTH="50">'+I+'</TD>');
   document.write('<TD ALIGN="RIGHT" WIDTH="60">'+A+'</TD>');
   document.write('</TR>');
}
document.write('</TABLE>');
document.close();

// -->
</SCRIPT>
<P align="center"><A href="jvs-3.html">戻る</A></P>
</BODY>
</HTML>


 




4.while 文によるループ

while 文で1と同じ処理。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>4.while 文によるループ</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--

var A=0, I=1;
while (I<=100) {
  A+=I;
  I++
}
document.open(); //これと、最後のdocument.close()を入れないと、ブラウザによっては表示処理が終了しない<BR>
document.write('1〜100の合計は'+A+'です。');
document.close();

// -->
</SCRIPT>
<P align="center"><A href="jvs-3.html">戻る</A></P>
</BODY>
</HTML>


 




5.条件分岐

いわゆる if 文を使って1から100を7列ずつ表示するプログラム。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>5.条件分岐</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--

document.open(); //これと、最後のdocument.close()を入れないと、ブラウザによっては表示処理が終了しない<BR>
document.write('<table border="1">')
for (var I=1; I==100; I++) {
  if (I % 7 == 1) document.write('<tr align="right">');   // 7で割ったあまりが1なら行の先頭
  document.write('<td>'+I+'</td>');               // データを表示
  if (I % 7 == 0) document.write('</tr>');           // 7で割り切れれば行の終端
  else if (I == 100) document.write('</tr>');         // 7で割り切れなくても100なら、行の終端
}
document.write('</table>');
document.close();

// -->
</SCRIPT>
<P align="center"><A href="jvs-3.html">戻る</A></P>
</BODY>
</HTML>


 




6.ループの中止と継続

2から100までの素数を表示する。
break はループを途中で抜ける。
continue は以降の処理をとばして、ループを続ける。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>6.ループの中止と継続</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
<!--

document.open(); //これと、最後のdocument.close()を入れないと、ブラウザによっては表示処理が終了しない
for (var I=2; I<=100; I++) {       // Iを2から100まで増やしながら...
  for (var J=2; J<I/2; J++){     // Jを2からIまで増やしながら...
    if (I % J == 0) break       // もしIがJで割り切れるなら Iは素数ではないのでループから抜ける
  }
  if (I % J == 0) continue;      // 途中で抜けてきた場合は素数ではないので次のIについて調べる
document.write(I+'<BR>');       //最後までループが回った場合 J でも割り切れなかったので I は素数
}
document.close();

// -->
</SCRIPT>
<P align="center"><A href="jvs-3.html">戻る</A></P>
</BODY>
</HTML>


 




7.ループの速度のテスト

10万回の足し算と表示の時間を計ります。


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>7.ループの速度のテスト</TITLE>
</HEAD>
<BODY>

<SCRIPT language="JavaScript">
<!--

    function loop1() {

      document.open(); //これと、最後のdocument.close()を入れないと、ブラウザによっては表示処理が終了しない
      document.write('一番下に計測結果を表示します<br>');
      document.write('<a href="javascript:window.close()">閉じる</a><br>');
      var Time1=new Date();

      for(i=0;i<=100000;i++) {
         document.write(i+" ");
      }

      var Time2=new Date();
      var diff = Time2-Time1;
      document.write('<br>実行時間:'+diff / 1000+'秒<br>');
      document.write('<center><a href="javascript:window.close()">閉じる</a></center>');
      document.close();
    }
// -->

</SCRIPT>

<FORM>
<DL>
<DT><FONT COLOR=RED>注意!<BR>
</FONT>
<DD><FONT COLOR=RED>お使いの機械のコンディションによっては、非常に時間がかかります。<BR>
また、処理の結果についても責任は負えません。以下にスクリプトを掲げていますので、必ず<BR>
自己の責任において実行して下さい。</FONT>

<DT><FONT COLOR=RED>Caution!</FONT>
<DD><FONT COLOR=RED>If you press the following button, your personal computer executes computation.<br>
It may very take time. It is influenced by the processing speed of your personal computer.<br>
You should understand the following script before execution.<br>
You account to the executed result. I don't account to its result.<br>
</FONT>
</DL>
<INPUT TYPE="button" VALUE="10万回のインクリメントと表示
(This button begins an addition and a display with 100,000 times.)"
onclick="loop1();">
    結構遅い・・・。
</FORM>

<P align="center"><A href="jvs-3.html">戻る</A></P>
</BODY>
</HTML>


 

戻る 進む