プログラミングの真骨頂! Javaで“反復処理”を覚える:【改訂版】Eclipseではじめるプログラミング(4)(2/3 ページ)
これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります
繰り返しをするときによく使う「while文」
図1のような処理の流れを実現するためには、Javaでは「while文」というものが用意されています。while文の構文は次のとおりです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
条件分岐の「if- then文」のifのところがwhileに変わっただけですが、処理の流れはまったく違います。if-then文はそのまま次の文へ処理が流れていきましたが、while文の場合は条件式が真である間は処理の流れが戻ってきます。
while文を使ったプログラムwhile文を使ったプログラム
図1の処理をwhile文で表すと、リスト3のようになります。図1の赤い枠で囲まれた部分とwhile文が対応するのが分かるはずです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト2と比較してみると、かなりすっきりしているのではないでしょうか。リスト2では繰り返しをする回数を知るためには、行数を数えたり、コメントを付けたりしないと分かりませんでしたが、while文を使えば、条件式からすぐに分かります。
この例では、条件式として「iが10以下である」ということを意味する「i <= 10」を指定しています。このことから、「iが10以下の間、sumへsum+iを代入する処理と、iを1増加する処理を繰り返す」ということが、すぐに分かります。
while文のサンプルプログラムを書いてみよう
それでは、1から10までの整数を合計した値を計算するプログラムを作成して動作させてみましょう。Eclipseを起動し、パースペクティブを[Java]に切り替えておいてください。パースペクティブが[Java]になっていないときは、メニューの[ウィンドウ]→[パースペクティブを開く]→[Java]を指定すれば、切り替えができます。今回は次のような手順で新規にクラスを作成することにします。
- [パッケージ・エクスプローラー]の[Sample]をマウス右ボタンでクリック
- 表示されるポップアップメニューで[新規]→[クラス]を指定
- 表示される[新規Javaクラス]ダイアログで、[名前]に「Sample40」と入力
- 同じ[新規Javaクラス]ダイアログで、[どのメソッド・スタブを作成しますか?]のところにある[public static void main(String[] args)]をチェック
- [終了]ボタンをクリック
出来上がったSample40クラスをリスト4の内容になるように編集をしてください。説明のときには「sum = sum + i; i = i + 1; という処理を10回繰り返す」と書きましたが、繰り返す処理を「sum = sum + i; System.out.println(sum); i++;」と若干変更して、計算過程を画面で確認できるようにしているので、注意してください。動作確認ができるように、計算の途中でsumの値をコンソールへ出力するために「System.out.println(sum)」を追加しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
基本的な処理の内容については、ここまでの説明で十分理解できると思います。ここでは新しく出てきた文法について簡単に説明をしておきます。
まず変数についてです。これまでは変数の宣言をしてから、値を代入するというように説明してきましたが、実はリスト4のように変数の宣言と同時に値を代入することもできます。つまり、「int sum; sum = 0;」の2つの処理を記述する代わりに、省略して「int sum = 0;」と書けます。
後置インクリメント/デクリメント演算子
次に、「i++;」という文についてです。この場合の「++」は「後置インクリメント演算子」といわれるものです。現時点では「i = i + 1;」と同じ処理をするものだと覚えておけばよいでしょう。「i--;」というように使う演算子もあり、それは「後置デクリメント演算子」といわれます。--の場合は「i = i - 1;」と同じ処理をするものだと覚えておけばよいでしょう。
コラム 「インクリメント/デクリメント演算子には“前置”もある」
ちなみに、「前置インクリメント演算子」という演算子を使うと、「++i;」のような文も書くことができます。これも「i++;」と同じで「i = i + 1;」と同じ処理をするものです。
「前置デクリメント演算子」という演算子もあり、これを使うと「--i;」のような文も書くことができます。これも「i--;」と同じで「i = i - 1;」と同じ処理をするものです。
「++i」「i = i + 1」「i++」は微妙な違いがありますが、ここではそこまでは説明しません。「--i」「i=i-1」「i--」についても同様です。
リスト4のプログラムを実行すると、下記のような出力になります。変数sumの値がどのように変化しているのかが分かります。この結果から、「1」「1+2」「1+2+3」の足し算が実行されて、最終的に「1+2+3+4+5+6+7+8+9+10」が計算される様子が分かります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
繰り返す際に最低1回は処理をするときの「do文」
while文では繰り返し実行する処理の前に条件式の判定をしていました。実際にプログラムを作成するようになると、「最低1回は処理をしてから、もう1度同じ処理をするかしないか条件式で判定をする」といった制御をしたい場合があります。そのために、Javaでは「do文」が用意されています。
1から10までの整数を合計した値を計算するプログラムを作成するときにdo文を使うようにすると、処理の流れは図2のようになります。while文との違いが分かるように、while文の処理の流れも併記しました。
do文の構文は次のとおりです。最後に「;(セミコロン)」が必要であることに注意しましょう。図2を見て分かるようにwhile文の条件式を記述する場所が移動しただけなので、処理を繰り返すという点についてはwhile文と同じように理解すればいいでしょう。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
次ページでも、引き続きwhile文やdo文、for文について説明します。
Copyright © ITmedia, Inc. All Rights Reserved.