第7章 条件分岐
この章ではif文やswitch文を使った条件分岐について説明します。
homepage
# **条件分岐** *** ## **1.if文** ### **1-1.if文** if文を使うことで、プログラム内に```条件分岐```を書くことができます。 if文は次のような構文が基本形となります。 ```条件式```の評価結果が```true```であるならば、```実行する```文が実行されます。 ``` if (条件式) { 条件を満たす場合に実行する処理; }else{ 条件を満たさない場合に実行する処理; } ``` if文は条件式に比較演算子などを使い、その比較結果によって処理を分岐するためによく使われます。 ``` if (number < 0) { document.write("numberは負数です!"); }else{ document.write("numberは非負数です!"); } ``` #### **例** [sample7-1.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> var number = -1; document.write("numberは" + number + "です!<br>" ); if (number < 0) { document.write("numberは負数です!"); }else{ document.write("numberは非負数です!"); } </script> </body> </html> ``` #### **実行結果** numberは-1です! numberは負数です! <br> ### **1-2.if文を重ねる** if文は何重にも重ねて書くことができます。 以下のように記入してみましょう。 #### **例** [sample7-2.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> var number = 1; document.write("numberは" + number + "です!<br>"); if (number < 0) { document.write("numberは負数です!"); } else { if (number > 0) { document.write("numberは正数です!"); } else document.write("numberはゼロです!"); } </script> </body> </html> ``` #### **実行結果** numberは1です! numberは正数です! <br> 上記例題に変数numberを0で設定する場合、 #### **例** [sample7-3.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> var number = 0; document.write("numberは" + number + "です!<br>"); if (number < 0) { document.write("numberは負数です!"); } else { if (number > 0) { document.write("numberは正数です!"); } else document.write("numberはゼロです!"); } </script> </body> </html> ``` #### **実行結果** numberは0です! numberはゼロです! <br> ### **1-3.より複雑な条件式の書き方** 条件が一つでは表しされない場合、論理演算子を使って複数条件を記述できます。 #### **|| (OR)** “OR” 演算子は2つの縦の記号で表現されます: ``` result = a || b; ``` 両方のオペランドが false の場合を除き、結果は常に true です。 #### **例** [sample7-4.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> document.write("true || true の結果は" + (true || true) + "です!<br>"); document.write("false || true の結果は" + (false || true) + "です!<br>"); document.write("true || false の結果は" + (true || false ) + "です!<br>"); document.write("false || false の結果は" + (false || false) + "です!<br>"); </script> </body> </html> ``` #### **実行結果** true || true の結果はtrueです! false || true の結果はtrueです! true || false の結果はtrueです! false || false の結果はfalseです! <br> OR || は if 文の中で、与えられた条件のいずれかが正しいかを確認するのに使われます。 ``` let hour = 9; if (hour < 10 || hour > 18) { document.write( 'The office is closed.' ); } ``` より多くの条件を書くこともできます: ``` let hour = 12; let isWeekend = true; if (hour < 10 || hour > 18 || isWeekend) { document.write( 'The office is closed.' ); // 週末です } ``` #### **例** [sample7-5.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> let hour = 12; let isWeekend = true; document.write( "isWeekend : " + isWeekend + "<br>" ); document.write( "hour : " + hour + "<br>" ); if (hour < 10 || hour > 18 || isWeekend) { document.write( 'The office is closed.' ); } </script> </body> </html> ``` #### **実行結果** isWeekend : true hour : 12 The office is closed. <br> ### **&& (AND)** AND 演算子は2つのアンパサンド && で表されます: ``` result = a && b; ``` #### **例** [sample7-6.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> document.write("true && true の結果は" + (true && true) + "です!<br>"); document.write("false && true の結果は" + (false && true) + "です!<br>"); document.write("true && false の結果は" + (true && false ) + "です!<br>"); document.write("false && false の結果は" + (false && false) + "です!<br>"); </script> </body> </html> ``` #### **実行結果** true && true の結果はtrueです! false && true の結果はfalseです! true && false の結果はfalseです! false && false の結果はfalseです! <br> より多くの条件を書くこともできます: #### **例** [sample7-7.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> let hour = 12; let isNotWeekend = true; document.write( "isNotWeekend : " + isNotWeekend + "<br>" ); document.write( "hour : " + hour + "<br>" ); if (hour > 10 && hour < 18 && isNotWeekend) { document.write( 'The office is open.' ); } </script> </body> </html> ``` #### **実行結果** isNotWeekend : true hour : 12 The office is open. <br> ### ! (NOT) 真偽値否定演算子は感嘆符 "!" で表現されます。 構文はとてもシンプルです: ``` result = !value; ``` 演算子は1つの引数を取り、次のようにします: オペランドを真偽値型に変換します: true/false。 逆の値を返します。 #### **例** [sample7-8.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> let hour = 12; let isWeekend = true; let isNotWeekend = !isWeekend; document.write( "isWeekend : " + isWeekend + "<br>" ); document.write( "isNotWeekend : " + isNotWeekend + "<br>" ); </script> </body> </html> ``` #### **実行結果** isWeekend : true isNotWeekend : false <br> AND && は OR || の前に実行します。 AND && 演算子の優先順位は OR || よりも高いです。そのため、ORの前に実行されます。 #### **例** [sample7-9.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> let A = 50; let B = 10; test = A>10 || B<50 && B>20; document.write( "testの結果 : " + test+ "<br>" ); </script> </body> </html> ``` #### **実行結果** testの結果 : true <br><br> ## **2.switch文** switch文は次のような構文を持ち、```式```の評価結果が指定した値である場合に行う処理を並べて書きます。 ``` switch ( 式 ) { case 値1 : 処理1; // `式`の結果が`値1`と一致する場合に実行する文 break; case 値2 : 処理2; // `式`の結果が`値2`と一致する場合に実行する文 break; … default : 処理3; break; } ``` switch文はif文と同様に```式```の評価結果にもとづく条件分岐を扱います。 ```break文```は、switch文から```抜け```switch文の次の文から実行するためのものです。 また、```default文```は該当```case```が見つからない場合、実行する文を記述します。 #### **例** [sample7-10.html] ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>サンプル</title> </head> <body> <script> //曜日取得 var today = new Date(); var week = today.getDay(); //条件分岐 switch (week) { case 0: document.write("今日は日曜日です!"); break; case 1: document.write("今日は月曜日です!"); break; case 2: document.write("今日は火曜日です!"); break; case 3: document.write("今日は水曜日です!"); break; case 4: document.write("今日は木曜日です!"); break; case 5: document.write("今日は金曜日です!"); break; default: document.write("今日は土曜日です!"); break; } </script> </body> </html> ``` #### **実行結果** 今日は水曜日です! <br><br> *** >**練習** >>**問題**[ex7-1.html] 時間帯によって処理を条件分岐しましょう。 ``` <=12時、"おはようございます!"を出力 <=18時、"こんにちは!"を出力 以降、"こんばんは!"を出力 ```
content
戻る