7.Javascriptの制御構造
  制御構造とは、プログラムを分岐させたり繰り返し(ループ)させたりさせるための構造をいいます。
 1)分岐構造(if)
   条件に従ってプログラムを分岐させる構造です。
   <書式1>
    if(条件式){
      条件式が真(True)のときに実行されるプログラム
    }

   <書式2>
    if(条件式){
      条件式が真(True)のときに実行されるプログラム
    }
    else{
      条件式が偽(False)のときに実行されるプログラム
    }

   <書式3>
    if(条件式1){
      条件式1が真(True)のときに実行されるプログラム
    }
    else if(条件式2){
      条件式1が偽(False)で条件式2が真(True)のときに実行されるプログラム
    }
          |
          |
    else{
      すべての条件式が偽(False)の場合に実行されるプログラム
    }

    <サンプル1>(ファイル名:js7-1-1.html)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>分岐構造(if)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a=1;
if(a==1){ window.document.write("変数aの値は、"+a+"です。"); }
// -->
</script> </body>
</html>

   <サンプル2>(ファイル名:js7-1-2.html)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>分岐構造(if)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a=1;
if(a==1){ window.document.write("変数aの値は、1です。"); } else{ window.document.write("変数aの値は、1ではありません。");
}
// -->
</script> </body>
</html>

   <サンプル3>(ファイル名:js7-1-3.html)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>分岐構造(if)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a=1;
if(a>0){ window.document.write("変数aの値は、正数です。"); } else if(a<0){ window.document.write("変数aの値は、負数です。");
} else{ window.document.write(変数aの値は、0です。);
}
// -->
</script> </body>
</html>

   <サンプル4>(ファイル名:js7-1-4.html)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>分岐構造(if)</title>
</head>
<body>
<script type="text/javascript">
<!-- var today = new Date();
var hours = today.getHours();
if((hours >= 6) && (hours < 12)){
window.document.write("おはようございます。");
}
else if((hours >= 12) && (hours <= 17)){
window.document.write("こんにちは");
}
else{
window.document.write("こんばんは");
}
window.document.write("ただいま" + hours + "時ごろです。");
// -->
</script> </body>
</html>
 2) 分岐構造(switch)
   条件に従ってプログラムを分岐させる構造です。
   <書式>
     switch (式){
       case 値1:
         実行する文;
         break;
       case 値2:
         実行する文;
         break;
         |
         |
       default:
         実行する文;
         break;
     }

     式:算出された式(変数名)を書きます。
     値:式で評価された値を条件とする値を書きます。
     実行する文:長いプログラムを書くとswitchの構文が分かりにくくなるので、一般的には、関数呼び出しにします。
     break:実行ずる文が終了するとswitchから抜けるようにしています。これが無いと下のcaseも実行してしまいます。
     default:caseのすべての値が式の評価された値と一致しない場合は、この中のプログラムを実行します。

   <サンプル>(ファイル名:js7-2.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8"> <title>分岐構造(switch)</title>
</head>
<body>
<script type="text/javascript">
<!-- var a=3;
switch(a){ case 1: window.document.write("変数aの値は、1です。"); break; case 2: window.document.write("変数aの値は、2です。"); break; case 3: window.document.write("変数aの値は、3です。"); break;
default:
window.document.write("変数aの値は、1,2,3以外です。"); break; //-->
</script>
</body>
</html>
 3) 繰り返し構造(while)
   条件が成立(真:True)している間は繰り返し、条件が不成立(偽:False)繰り返しから抜けます。
   <書式>
     while(条件式){
       条件式が真(True)の時に切り返し実行するプログラムを書きます。
     }

   <サンプル>(ファイル名:js7-3.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返し構造(while)</title>
</head>
<body>
<script type="text/javascript">
<!-- var a=1,b=0;
while(a<=10){
b=b+a;
window.document.write("a=",a," b=",b,"<br>\n");
a++;
}
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>
   この繰り返しは、繰り返しに入る前に変数aの値が「11」になっていれば、1回も繰り返ししないことに注意してください。

 4) 繰り返し構造(do)
   条件が成立(真:True)している間は繰り返し、条件が不成立(偽:False)繰り返しから抜けます。
   <書式>
     do{
       条件式が真(True)の時に切り返し実行するプログラムを書きます。
     }while(条件式);

   <サンプル>(ファイル名:js7-4.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返し構造(do)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a=1,b=0;
do{
b=b+a;
window.document.write("a=",a," b=",b,"<br>\n");
a++;
}while(a<=10);
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>
   この繰り返しは、繰り返しに入る前に変数aの値が「11」になっていても、1回だけ繰り返すことに注意してください。

 5)繰り返し構造(for)
   条件が成立(真:True)している間は繰り返し、条件が不成立(偽:False)繰り返しから抜けます。
   <書式>
     for(初期値;条件式;カウンタ){
       条件式が真(True)の時に切り返し実行するプログラムを書きます。
     }

     初期値:カウンタの初期値を設定します。
     条件式:繰返しを終了する条件式を指定します。
     カウンタ:初期値をカウントさせます。

   <サンプル>(ファイル名:js7-4.html)

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返し構造(for)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a,b=0;
for(a=1;a<=10;a++){
b=b+a;
window.document.write("a=",a," b=",b,"<br>\n");
}
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>
   カウンタをforの中に書くだけで処理は、whileとほぼ同じです。whileのほうが複雑な繰り返しが作れます。

 6) 最も内側の繰返しを抜ける方法
   繰り返し(while,do,for)を実行中に条件に従って繰返しを抜けることができます。
   最も内側の for、while、do ループや、switch 文の case 節を抜けます。
   <書式>
     繰り返し始まり(while,do,for)

     if(繰り返しから抜ける条件式){
       break;
     }

     繰り返しの終わり

   <サンプル:whileの場合>(ファイル名:js7-6-1.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返しから抜ける(while)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a=1,b=0;
while(a<=10){
b=b+a;
if(a==5){
break;
}
window.document.write("a=",a," b=",b,"<br>\n");
a++;
}
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>
   <サンプル:doの場合>(ファイル名:js7-6-2.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返しから抜ける(do)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a=1,b=0;
do{
b=b+a;
if(a==5){
break;
}
window.document.write("a=",a," b=",b,"<br>\n");
a++;
}while(a<=10);
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>
   <サンプル:forの場合>(ファイル名:js7-6-3.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返しから抜ける(for)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a,b=0;
for(a=1;a<=10;a++){
b=b+a;
if(a==5){
break;
}
window.document.write("a=",a," b=",b,"<br>\n");
}
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>

 7)最も内側の繰返しを続ける方法
   繰り返し(while,do,for)を実行中に条件に従って繰返しを続けることができます。
   繰り返し内の残りの処理をスキップし、もっとも内側の for, while, do 繰り返しの次の繰り返しを実行します。
   <書式>
     繰り返し始まり(while,do,for)

     if(繰り返しから抜ける条件式){
       continue;
     }

     繰り返しの終わり

   <サンプル:forの場合>(ファイル名:js7-1.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返しを続ける(for)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a,b=0;
for(a=1;a<=10; a++){
if(a==5){
continue;
}
b=b+a;
window.document.write("a=",a," b=",b,"<br>\n");
}
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>
   <サンプル:whileの場合>(ファイル名:js7-2.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返しを続ける(while)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a=1,b=0;
while(a<=10){
if(a==5){
a++;
continue;
}
b=b+a;
window.document.write("a=",a," b=",b,"<br>\n");
a++;
}
window.document.write("合計は、",b,"です。");
//-->
</script>
</body>
</html>
 8)指定した繰返しを抜け出す方法
   指定したラベルのすぐ下の繰り返しから抜け出すことができます。
   ラベルを使って入れ子になった繰り返しを一度に抜けたい場合に使います。
   <書式>
     ラベル名:
     外側の繰り返しの始まり(while,do,for)
      内側の繰り返し始まり(while,do,for)
       if(繰り返しから抜ける条件式){
        break ラベル名;
       }
      内側の繰り返しの終わり
     外側の繰り返しの終わり
   <サンプル:whileの場合>(ファイル名:js8-1.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返しを続ける(while)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a,b,c;
loopOut:
for(a=1;a<10;a++){
for(b=1;b<10;b++){
if (a==5){
break loopOut;
} c=a*b;
window.document.write(c," ");
}
window.document.write("<br>\n");
}
//-->
</script>
</body>
</html>
 9)指定した繰返しを続ける方法
   指定したラベルのすぐ下の繰り返しから抜け出すことができます。
   ラベルで指定した繰り返しの次の繰り返しを実行します。
   <書式>
     ラベル名:
     外側の繰り返しの始まり(while,do,for)
      内側の繰り返し始まり(while,do,for)
       if(繰り返しから抜ける条件式){
         continue ラベル名;
       }
      内側の繰り返しの終わり
     外側の繰り返しの終わり
   <サンプル:whileの場合>(ファイル名:js8-1.html)
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>繰り返しを続ける(while)</title>
</head>
<body>
<script type="text/javascript">
<!--
var a,b,c;
loopContinue:
for(a=1;a<10;a++){
for(b=1;b<10;b++){
if (a==5){
continue loopContinue;
}
c=a*b;
window.document.write(c," ");
}
window.document.write("<br>\n");
}
//-->
</script>
</body>
</html>