【改訂版】Eclipseではじめるプログラミング New!
これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、本連載「Eclipseではじめるプログラミング」の改訂版となります
インターネット上のショッピングWebサイトなどで、商品を5000円以上購入すると送料が無料になるといったサービスをよく見かけませんか? この場合、お客さまへ請求する金額の総額は「商品を5000円以上購入するかしないか」によって変わります。このようにある条件によって計算手順が変わるような処理のことを条件分岐処理といいます。今回はこういったプログラムを作成するのに必要な、if文とswitch文について解説します。
前述の例では、「商品を5000円以上購入するかしないか」によって処理が変わります。この処理が変わる判断基準となるものを条件といいます。もう少し詳しくいうと、「お客さまは商品を5000円以上購入する」という部分が条件になります。数学的にはこの条件は式(条件式)として表現できます。例えば、お客さまが購入する商品の総額をxとすると、この条件は x ≧ 5000 という式で表すことができます。この条件式に対して、実際に「お客さまが商品を6000円分購入している」場合は、条件式のxに6000を代入すると6000 ≧ 5000となるので、条件が成り立ちます。このとき、この条件式の評価値は真(true)となります。逆に「お客さまが商品を3500円分購入している」場合は、この条件式は3500 ≧ 5000となるので、条件が成り立ちません。このとき、この条件式の評価値は偽(false)となります。
こういった条件式やその評価結果をプログラムで扱えるようにするために、Javaでは論理型(boolean)や、評価結果が論理値となる演算子が用意されています。また、真を表すtrueと偽を表すfalseも論理値リテラルとして用意されています。プログラムにおいて処理の流れを制御するには、条件をどのように指定するかということが重要になってきます。条件は、評価結果が論理値となる条件式で表現するということをここで理解しておきましょう。
条件によって処理の流れを変えるには、if文を使います。if文にはif-then文とif-then-else文の2種類があります。順番に見ていきましょう。
「ある条件が成り立つときだけある処理をしたい」という単純な条件分岐の場合は、if-then文を使います。if-then文は次のように記述します。
if (条件式) 文
直感的に処理の流れを理解できるように図で表してみると、図1のようになります。図では、前処理の後に条件式の判定をして、条件式が真の場合は処理1を実行してから処理2を実行しますが、条件式が偽の場合は処理1を飛ばして処理2を実行するという処理の流れを示しています。このうち赤線で囲んだ部分がif-then文と対応することになります。
参考 UML図
本連載では処理の流れを表すのに、UML(Unified Modeling Language)という表記法のアクティビティ図を使っています。UMLを使うことによりオブジェクト指向プログラムの設計を図で表せるので、プログラムを直感的に理解しやすくなります。UMLの詳細は本連載の範疇(はんちゅう)ではないので説明しませんが、興味のある読者は「5分で絶対に分かるUML」などを参考にしてください。
ここで、処理を複数の文を使って記述したい場合があります。この場合はブロックを使って、複数の文を1つのブロック文にします。複数の文を中括弧({ })で囲むとブロックとなります。前述のif-then文をブロック文で書き直すと次のようになります。ここでは1つしか文がありませんが、中括弧({ })内には複数の文を記述することができます。
if (条件式) {
文
}
それでは、単純なサンプルプログラムを動作させてみましょう。第2回の「Eclipseの基本操作に慣れる」と同様にEclipseを起動し、パースペクティブを[Java]に切り替えておいてください。パースペクティブが[Java]になっていないときは、メニューの[ウィンドウ]→「パースペクティブを開く」→[Java]を指定すれば、切り替えることができます。今回は次のような手順で新規にクラスを作成することにします。
出来上がったSample40クラスにリスト1の水色部分を追加してください。
最初のif文では条件式がtrueなのでSystem.out.println(true);が実行されます。次のif文では条件式がfalseなのでSystem.out.println(false);は実行されません。次にboolean型の変数bを用意してtrueを代入しています。3つ目のif文ではこの変数を条件式として使っています。bの値がtureなので、この場合はブロック内の3つの処理が実行されます。これらのことから、実行結果は画面1のようになります。
true
0
1
2
興味がある人は、変数bの値を変更したり、if文の条件式を変更したりして、どの処理が実行されるかを確認してみると理解が深まります。これで、条件が成立するときだけ処理を実行するにはif-then文を使えばよいことが分かったと思います。
Copyright © ITmedia, Inc. All Rights Reserved.