第12回 「条件分岐、if..else」
前回はif命令を使ってランダムに文字列を表示させようとしましたが、期待通りに動きませんでした。それは条件指定が間違っているためでした。間違っていたプログラムは以下のものでした。
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript"><!--
n = Math.random() * 4;
if (n > 0) document.write("こんにちは<br>");
if (n > 1) document.write("いい天気<br>");
if (n > 2) document.write("みたいですね<br>");
if (n > 3) document.write("おしまい<br>");
// --></script>
</body>
</html>
問題を解決するには「条件を変更する」「elseを使う」という方法がある、と書きました。まずは「条件を変更する」方法から説明します。if命令には条件を1つでなく複数書くことができます。この場合
条件1 && 条件2 条件1と条件2を満たす場合
条件1 || 条件2 条件1または条件2を満たす場合
のように&&と||を使って複数記述します。うまく動かなかったプログラムを変更します。
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript"><!--
n = Math.random() * 4;
if ((n >= 0) && (n < 1)) document.write("こんにちは<br>");
if ((n >= 1) && (n < 2)) document.write("いい天気<br>");
if ((n >= 2) && (n < 3)) document.write("みたいですね<br>");
if ((n >= 3) && (n < 4)) document.write("おしまい<br>");
// --></script>
</body>
</html>
今度はどうでしょうか。ブラウザ上で実行し、何度も再読み込み(リロード)ボタンを押すと期待通り、ランダムに文字列が表示されます。
さて、もう1つの解決方法がelseを使うというものです。これは
if (条件式) 条件を満たした場合の処理 else 条件を満たさなかった場合の処理
のように記述します。elseより後に記述するのは、条件を満たさなかった場合のプログラムです。最初のプログラムをelseを使って書き直してみます。
<html>
<head>
<title></title>
</head>
<body>
<script language="JavaScript"><!--
n = Math.random() * 4;
if (n < 1) document.write("こんにちは<br>");
else if (n < 2) document.write("いい天気<br>");
else if (n < 3) document.write("みたいですね<br>");
else if (n < 4) document.write("おしまい<br>");
// --></script>
</body>
</html>
このプログラムの条件を追っていくと、「nが1未満だったら"こんにちは<br>"」、nが1未満でない場合は「 if (n < 2)」で条件を調べて満たしていれば「"いい天気<br>"」、そうでない場合は・・・となんだか面倒な状態になります。
実際の所、elseを並べ立てると非常に分かりにくいプログラムが出来上がってしまいます。
もっと、上手な方法があります。まず、乱数値を整数だけにしてしまう、次がswitch〜caseを使う、という方法です。次回は、この2つについて説明します。