ステップ11 条件分岐-2



ステップ11では、条件に応じて処理を3つ以上に分ける条件分岐について学習します。そのほか、複数の条件式をつなぐ論理演算子やswitch文の利用方法も学習します。


11.1 else if で処理を3つ以上に分岐させる


 ステップ10では、if文で条件分岐を行う方法を学習しました。ただし、if文で分岐できる処理は「真」と「偽」の2つまでです。処理を3つ以上に分ける場合は、以下のようにelse ifを利用する必要があります。




 ここでは、上のJavaScriptを例に3つ以上の条件分岐について、その仕組みを見ていきましょう。この条件分岐の流れは以下のようになります。


・条件①
 最初のif文により「i」が3より小さいか判定されます。3より小さかった場合は【処理A】が実行されます(【処理B】縲怐y処理C】は実行されません)。

・条件②
 「i」が3以上であった場合は【処理A】が実行されず、次のelse ifで「i」が3と等しいか判別されます。3と等しかった場合は【処理B】が実行されます(【処理C】【処理D】は実行されません)。

・条件③
 「i」が3と等しくなかった場合は【処理B】が実行されず、次のelse ifで「i」が5より小さいか判定されます。5より小さかった場合は【処理C】が実行されます(【処理D】は実行されません)。

・その他
 「i」が条件①~③のいずれも満たさなかった場合、【処理D】が実行されます。


これを処理別にまとめると以下のようになります。

【処理A】・・・・・「i」が3より小さい場合に実行される
【処理B】・・・・・「i」が3と等しい場合に実行される
【処理C】・・・・・「i」が3以上で5より小さい場合に実行される
【処理D】・・・・・「i」が5以上の場合に実行される


変数「i」と実行される処理の関係



11.2 論理演算子


 続いては、変数「i」の値が”3以上かつ5以下”など、少し複雑な条件を指定する方法を学習します。このような条件分岐の解決策の1つとしては、以下のようにif文を入れ子して記述する方法が考えられます。



 しかし、変数「i」の値が”3以下または5以上”といった条件では、この方法を用いることができません(※)。このような場合は、論理演算子を使って2つの条件を連結させます。JavaScriptでは以下の3種類の論理演算子を利用できます。


※この条件を先ほどの例と同様に記述すると、「i」が3より大きい場合、最初のif文で「偽」とあるため、次のif文が実行されません。よって、”または5以上”の条件を反映できなくなります。

■JavaScriptで使用できる論理演算子
演算子記述例意味
&&i>=3 && i<=5左右の条件式が両方とも満たされる場合のみ「真」になります(AND)。
それ以外の場合は、全て「偽」になります。
記述例の場合、「i」が3以上かつ5以下の場合、が条件になります。
||i<=3 || i>=5左右の条件式のいずれかが満たされれば「真」になります(OR)。
左右の条件式をどちらも満たさない場合は「偽」になります。
記述例の場合、「i」が3以下または5以上の場合、が条件になります。
!!(i<=3)「真」と「偽」を入れ替えます(NOT)。
よって、条件式を満たす場合が「偽」、満たさない場合が「真」になります。
記述例の場合、「i」が3以下でない場合、が条件になります。


 たとえば論理演算子を使って”5以上または3以下”という条件を指定したif文は以下のようになります。





11.3 switch文で処理を分岐させる


 3つ以上の条件分岐を行う場合は、else ifの代わりにswitch文を利用することも可能です。switch文は、変数の値ごとに実行する処理を指定できる命令で、以下のように記述を行います。


  switch(変数){
    case 値A:
      【変数の値がAであった場合の処理】
     break;
    case 値B:

      【変数の値がBであった場合の処理】
     break;
    case 値C:

      【変数の値がCであった場合の処理】
     break;
    default:
      【上記以外の場合の処理】
  }

 switch文のカッコ内には、条件分岐の判定に使用する変数名を記述します。以降の{………}は条件分岐により実行される処理となり、caseに記述した値で実行する処理を分けていきます。ここでは、値A、値B、値Cの3つについて処理を指定していますが、これを4つ、5つ、…と増やしていくことも可能です。この時、各処理の最後に必ずbreak;を記述するのを忘れないでください(breakについては、ステップ12で詳しく解説します。)なお、最後のdefaultは、いずれのcaseにも一致しなかった場合の処理を記述する部分となります。defaultの記述は必須ではないため、省略しても構いません。

 たとえば、変数「i」の値により3つの条件分岐を行う場合、switch文の記述は以下のようになります。


▼Sample11_1.html


ワンポイント



caseに文字を指定する場合

 switch文で文字を条件分岐の判定に使用する場合は、caseに記述するも文字を「"」(ダブルクォーテーション)または「'」(シングルクォーテーション)で挟む必要があります。



ワンポイント



switch文の弱点

 switch文の利点は、見た目にわかりやすい条件分岐を記述できることです。ただし、“数値(または文字に一致する場合)”という条件しか指定できないのが弱点です。○○以上や△△以下などの範囲で条件を指定する場合は、else ifで条件分岐を実行しなければいけません。





演習


(1)「Sample11_1.html」を参考に、switch文で以下のようなホームページを作成してみましょう。


問題

日本で最も面積が大きい“県”は何県でしょうか?

※ボタンのクリックが2回までの間はヒントが表示されます。
※ボタンを3回以上クリックすると、答えが表示されます。

※ボタンをクリックすると、関数「kotae()」を実行します。
※関数「kotae()」では、ボタンをクリックした回数に応じて表示するメッセージを以下のように変化させます。
※ボタンをクリックした回数を数えるために変数「i」を用意し、変数「i」の値に応じて条件分岐を行います。



(2)STEP10.4の「Sample10_1.html」を参考に、以下のようなホームページを作成してみましょう。


問題

次の二次方程式を満たす解を求め、そのボタンをクリックしなさい。

 x2-5x=-6


※答えは2つあります。


※関数「hantei()」の条件分岐では、以下のような条件を指定します。
 ①「x」が1以下であれば「不正解!」と表示(それ以外は②へ進む)
 ②「x」が3以下であれば「正解!」と表示(それ以外は③へ進む)
 ③それ以外の場合は「不正解!」と表示



(3)論理演算子を利用し、演習(2)の条件分岐を1つのif~elseで記述してみましょう。

※「x」が2または3であれば「正解!」、それ以外の場合は「不正解!」と表示します。



※ここに直接入力できます。↓↓(テキストボックスのサイズは、右下の角をドラッグすると調節できます。)







→STEP10へ
→STEP12へ