・if文
①if文を使うと「もしも・・・ならば」という文章をプログラムで表現することができます。
「もしも降水確率が50%以上なら、傘を持っていく」をプログラムで書いてみましょう。
(if文を説明するためのプログラムの断片です)
if (p >= 50) {
System.out.println("傘を持っていきます");
}
これは「変数pの値を調べ、その値がもしも50以上なら、"傘を持って行きます"と画面に表示する」という動作をします。
上のプログラムは次のような構造をしています。
if (条件式) {
条件が成り立つときの処理
}
条件式の値は、「条件を満たすときtrue(トゥルー)」、「満たさないときはfalse(フォルス)」になります。
条件式の値は、必ずこのどちらかになります。
()でくくられた条件式の後には{}でくくられた処理がやってきます。これは条件が満たされたときに行う処理の範囲を示します。
if文は、()の中の条件が満たされるかどうかを調べ、もし満たされるなら{}の中を実行し、満たされなければ{}の中を実行しません。
②if…else文を使うと「もしも・・・ならば・・・さもなくば・・・」という文章をプログラムで表現できます。
if (p >= 50) {
System.out.println("傘を持っていきます");
} else {
System.out.println("傘を持っていきません");
}
ここに登場する新しい言葉は「else(エルス)」です。まさに日本語の「さもなくば」に相当します。
elseの後ろにはまた{}があります。ここには条件が成り立たなかった(満たされなかった)時に行う処理が書かれています。
if (条件式) {
条件が成り立った(true)時の処理A
} else {
条件が成り立たなかった(false)時の処理B
}
条件が成立すると同時に成立しない、などということはありません。したがって処理Aと処理Bのどちらか一方は必ず行われます。
③演算子「&&」は「~かつ~」を表すもので、演算子「||」は「~または~」を表すものです。
0 <= n && n < 50
は、「nが0以上である、かつ、nが50より小さい」となります。
「条件式1 && 条件式2」は、「条件式1と条件式2の両方が成り立つときのみ真」となる条件です。
次に、
n < 0 || 100 < n
は、「nが0より小さい、または、nが100より大きい」となります。
「条件式1 || 条件式2」は、「条件式1と条件式2の少なくともどちらか一方が成り立ったとき真」となる条件です。
③if文の連鎖(else if)
if(条件式1) {
条件式1を満たすとき
} else if (条件式2) {
条件式1を満たさず、
条件式2を満たすとき
} else {
条件式1、2両方をみたさないとき
}
ifとelseの間にelse ifを入れることによって三者択一になります。
3つのうちどれか1つが必ず実行されるからです。
人間にとって常識のことでも、コンピュータに常識を期待してはいけません。
すべてきちんと明示的にプログラムを書かなくてはいけません。
・switch文
①多くの選択肢から1つを選んで実行するための構文を「switch(スイッチ)文」と言います。
switch (式) {
case 定数式1:
処理1
break;
case 定数式2:
処理2
break;
default:
処理3
break;
}
{}でくくられた範囲が選択をするための候補たちです。
候補のはじめには、候補ごとに「case(ケース)」と書きます。caseの最後にはコロン(:)を書きます。
最後の候補には「default(デフォールト)」と書きます。これは「いままで1つ1つあげた場合のどれでもなかったら」という意味です。
switch文のdefaultはif文のelseに相当するといってもよいでしょう。
1つのswitch文の中にcaseは何個書いてもかまわないが、defaultは1個しか書けません。
caseとして明示的に書かれていない値ならば、default以下が実行されます。
②caseとcase(あるいはdefault)の間に書かれるのが、選択された場合の処理です。
処理の最後には「break(ブレーク);」を書きます。これは「ここで処理を終わります」という意味です。
複数のcaseをbreakなしで書いておくと、同じ処理が行われます。言い換えれば、必要なbreakは書き忘れてはいけません。
さもないと、他のcaseのところまでどんどん処理が進んでしまいます。
③switch文を実行する時、まず()でくくられた式が計算されます。これを「式の評価」と言います。
式を評価した結果(計算の結果)、定数式1の値に等しければ処理1が実行され、もし定数式2の値に等しければ処理2が実行されます。
定数式1と定数式2の両方の値と等しくなければ、defaultに対応した処理3が実行されます。
switch文は、式の値によって処理を選ぶ構文です。ですから、1つのswitch文の中では、2か所以上のcaseに同じ定数式を書いてはいけません。
同じ定数式が2つ以上あったら、どの処理を実行してよいかわからなくなってしまうからです。