連載
» 2009年03月16日 00時00分 公開

【改訂版】Eclipseではじめるプログラミング(4):プログラミングの真骨頂! Javaで“反復処理”を覚える (3/3)

[小山博史,株式会社ガリレオ]
前のページへ 1|2|3       

do文もサンプルプログラムで使ってみよう

 それでは、1から10までの整数を合計した値を計算するプログラムを作成して動作させてみましょう。while文サンプルプログラムのときと同様にして新規にクラスを作成することにします。

  1. [パッケージ・エクスプローラー]の[Sample]をマウス右ボタンでクリック
  2. 表示されるポップアップメニューで[新規]→[クラス]を指定
  3. 表示される[新規Javaクラス]ダイアログで、[名前]に「Sample41」と入力
  4. 同じ[新規Javaクラス]ダイアログで、[どのメソッド・スタブを作成しますか?]のところにある[public static void main(String[] args)]をチェック
  5. [終了]ボタンをクリック

 出来上がったSample41クラスをリスト5の内容になるように編集をしてください。

リスト5
public class Sample41 {
    /**
    * @param args
    */

    public static void main(String[] args) {
        int sum = 0;
        int i = 1;

        do {
            sum = sum + i;
            System.out.println(sum);
            i++;
        } while (i <= 10);
    }
}

 リスト5のプログラムを実行すると、足し算が実行されていく様子が画面へ出力されて、下記のようになります。

リスト5の実行結果
1
3
6
10
15
21
28
36
45
55

 今回のプログラムは、「while文を使ったリスト4のプログラムと同じ画面出力になる」という点に気付いたでしょうか。このように、同じ結果を出力するプログラムでも中の作り方は全然違うということはよくあります。こういった点がプログラムは難しいと思うところですが、同時に面白いところでもあります。

繰り返す回数が決まっているときの「for文」

 実は、1から10までの整数を合計した値を計算するプログラムのように、処理を繰り返すときに繰り返す回数が分かっているものについては、while文を使うよりも「for文」というものを使った方がプログラムは分かりやすくなります。

 Javaのfor文には「基本for文」「拡張for文」があります。ただし、拡張for文を理解するには、後で説明をする配列クラスインターフェイスといった文法事項を理解してからの方がいいので、ここでは基本for文についてだけ説明をすることにします。

 for文の構文は次のとおりです。条件式の前後に式を記述できることに注目しましょう。条件式が真の間、処理を繰り返す点はwhile文やdo文と同様です。( ) 内には、例えば「( i=1 ; i<=10 ; i++)」といった感じで記述します。つまり初期化部には「繰り返しで必要な前処理式」を、条件式には「繰り返しを継続するか否かの条件式」を、更新部には「繰り返しで必要な後処理式」を記述するということになります。

for (初期化部 ; 条件式; 更新部) 文

 1から10までの整数を合計した値を計算するプログラムを作成するときにfor文を使うようにすると、処理の流れはwhile文と同じになります。ただし、for文の方がプログラムのソースコードを読んだときに、「繰り返しに必要な変数、前処理と後処理」が分かりやすくなります。while文とfor文とを比較し、表1へ示しました。「繰り返しに必要な変数、前処理と後処理」がfor文の最初の( ) に含まれてくるのがポイントになります。

表1 while文とfor文の比較
while文 for文
前処理文
while (条件式) {
    
    後処理文
}

for (前処理式; 条件式; 後処理式) {
    
}


 処理を繰り返す回数が分かっているときには、iのように繰り返す回数を数え上げる変数を用意します。while文だとプログラムをきちんと理解しないと、この役割を持つ変数がどれか分かりません。一方、for文だと一目で分かります。whileとforのどちらを使うか悩んだときは、「処理を繰り返す回数が分かっているプログラムかどうか」という視点で取りあえずの判断をするといいでしょう。

コラム 「while文とfor文の使い分け」

for文を使うと、繰り返しに必要な変数は何か、必要な前処理は何か、後処理では何をしないといけないか、といったことがすぐに分かります。

ただし、複雑な前処理や後処理が必要な反復処理ではfor文で記述できなかったり、無理に記述すると分かりにくくなってしまったりする場合があります。単純な前処理、単純な後処理が必要な反復処理においてはfor文を使いますが、そうでない場合はwhile文を使うことになります。

ここでは、「単純な前処理、単純な後処理が必要な反復処理」のよくある単純な例として「繰り返す回数が分かっている処理」を紹介しています。まずはこれで判断できるようにして、プログラミングに慣れてきたら、反復処理を書くときに、while文をfor文に直した方が分かりやすくならないか、検討して置き換えができるようになればよいでしょう。


最後にfor文のサンプルプログラムも

 それでは、1から10までの整数を合計した値を計算するプログラムを作成して動作させてみましょう。while文サンプルプログラムのときと同様にして、新規にクラスを作成することにします。

  1. [パッケージ・エクスプローラー]の[Sample]をマウス右ボタンでクリック
  2. 表示されるポップアップメニューで[新規]→[クラス]を指定
  3. 表示される[新規Javaクラス]ダイアログで、[名前]に「Sample42」と入力
  4. 同じ[新規Javaクラス]ダイアログで、[どのメソッド・スタブを作成しますか?]のところにある[public static void main(String[] args)]をチェック
  5. [終了]ボタンをクリック

 出来上がったSample42クラスをリスト6の内容になるように編集をしてください。

リスト6
public class Sample42 {
    /**
    * @param args
    */

    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 10; i++) {
            sum = sum + i;
            System.out.println(sum);
        }
    }
}

 for文の( ) 内の初期化部においてint型の変数iを宣言し、1で初期化している点に注意してください。このように、for文の中で変数を宣言すると、その変数は宣言されたfor文の中だけでしか使えなくなります。for文では、このように専用の変数を宣言することがよくあるので覚えておきましょう。

 リスト6のプログラムを実行すると、足し算が実行されていく様子が画面へ出力されて、下記のようになります。今回のプログラムも、while文を使ったリスト4のプログラムと同じ画面出力になります。

リスト6の実行結果
1
3
6
10
15
21
28
36
45
55

実用的なプログラムの作成に向けて

 今回は、反復処理(繰り返し同じ処理)をするプログラムを作成するのに、必要なwhile文やdo文、for文について解説をしました。基本的には、while文を使えば反復処理を実現することはできますが、場合によってはdo文やfor文を使用するとよいということが理解できたでしょうか。

 これまでの解説で、プログラムの処理の流れを完全に制御するために、必要な文法事項はすべて押さえたことになります。これでプログラムを見れば、どんな順番で処理が実行されているのかを把握できるようになったはずです。これが分かると、プログラムを読む楽しみが増えてきます。いろいろなJavaのサンプルプログラムを探して読んでみるといいでしょう。

 さて、処理の流れを制御することはできるようになりましたが、これを理解するだけではまだ十分ではありません。プログラミングにおいては、「データ構造」というもう1つ重要なものがあります。

 つまり、プログラムの中でデータを扱うためのデータ構造について理解しなければ、実用的なプログラムを作成できません。基本的なデータ構造としては、配列というものがあります。そこで、次回は配列について解説する予定です。

筆者紹介

小山博史(こやま ひろし)

情報家電、コンピュータと教育の研究に従事する傍ら、オープンソースソフトウェア、Java技術の普及のための活動を行っている。長野県の地域コミュニティである、SSS(G)bugs(J)の活動へも参加している。

著書に「基礎Java」(インプレス)、共著に「Javaコレクションフレームワーク」(ソフトバンククリエイティブ)、そのほかに雑誌執筆多数。



「【改訂版】Eclipseではじめるプログラミング」バックナンバー
前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。