プログラミングの真骨頂! Javaで“反復処理”を覚える:【改訂版】Eclipseではじめるプログラミング(4)(3/3 ページ)
これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります
do文もサンプルプログラムで使ってみよう
それでは、1から10までの整数を合計した値を計算するプログラムを作成して動作させてみましょう。while文サンプルプログラムのときと同様にして新規にクラスを作成することにします。
- [パッケージ・エクスプローラー]の[Sample]をマウス右ボタンでクリック
- 表示されるポップアップメニューで[新規]→[クラス]を指定
- 表示される[新規Javaクラス]ダイアログで、[名前]に「Sample41」と入力
- 同じ[新規Javaクラス]ダイアログで、[どのメソッド・スタブを作成しますか?]のところにある[public static void main(String[] args)]をチェック
- [終了]ボタンをクリック
出来上がったSample41クラスをリスト5の内容になるように編集をしてください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
リスト5のプログラムを実行すると、足し算が実行されていく様子が画面へ出力されて、下記のようになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
今回のプログラムは、「while文を使ったリスト4のプログラムと同じ画面出力になる」という点に気付いたでしょうか。このように、同じ結果を出力するプログラムでも中の作り方は全然違うということはよくあります。こういった点がプログラムは難しいと思うところですが、同時に面白いところでもあります。
繰り返す回数が決まっているときの「for文」
実は、1から10までの整数を合計した値を計算するプログラムのように、処理を繰り返すときに繰り返す回数が分かっているものについては、while文を使うよりも「for文」というものを使った方がプログラムは分かりやすくなります。
Javaのfor文には「基本for文」「拡張for文」があります。ただし、拡張for文を理解するには、後で説明をする配列やクラス、インターフェイスといった文法事項を理解してからの方がいいので、ここでは基本for文についてだけ説明をすることにします。
for文の構文は次のとおりです。条件式の前後に式を記述できることに注目しましょう。条件式が真の間、処理を繰り返す点はwhile文やdo文と同様です。( ) 内には、例えば「( i=1 ; i<=10 ; i++)」といった感じで記述します。つまり初期化部には「繰り返しで必要な前処理式」を、条件式には「繰り返しを継続するか否かの条件式」を、更新部には「繰り返しで必要な後処理式」を記述するということになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
1から10までの整数を合計した値を計算するプログラムを作成するときにfor文を使うようにすると、処理の流れはwhile文と同じになります。ただし、for文の方がプログラムのソースコードを読んだときに、「繰り返しに必要な変数、前処理と後処理」が分かりやすくなります。while文とfor文とを比較し、表1へ示しました。「繰り返しに必要な変数、前処理と後処理」がfor文の最初の( ) に含まれてくるのがポイントになります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
処理を繰り返す回数が分かっているときには、iのように繰り返す回数を数え上げる変数を用意します。while文だとプログラムをきちんと理解しないと、この役割を持つ変数がどれか分かりません。一方、for文だと一目で分かります。whileとforのどちらを使うか悩んだときは、「処理を繰り返す回数が分かっているプログラムかどうか」という視点で取りあえずの判断をするといいでしょう。
コラム 「while文とfor文の使い分け」
for文を使うと、繰り返しに必要な変数は何か、必要な前処理は何か、後処理では何をしないといけないか、といったことがすぐに分かります。
ただし、複雑な前処理や後処理が必要な反復処理ではfor文で記述できなかったり、無理に記述すると分かりにくくなってしまったりする場合があります。単純な前処理、単純な後処理が必要な反復処理においてはfor文を使いますが、そうでない場合はwhile文を使うことになります。
ここでは、「単純な前処理、単純な後処理が必要な反復処理」のよくある単純な例として「繰り返す回数が分かっている処理」を紹介しています。まずはこれで判断できるようにして、プログラミングに慣れてきたら、反復処理を書くときに、while文をfor文に直した方が分かりやすくならないか、検討して置き換えができるようになればよいでしょう。
最後にfor文のサンプルプログラムも
それでは、1から10までの整数を合計した値を計算するプログラムを作成して動作させてみましょう。while文サンプルプログラムのときと同様にして、新規にクラスを作成することにします。
- [パッケージ・エクスプローラー]の[Sample]をマウス右ボタンでクリック
- 表示されるポップアップメニューで[新規]→[クラス]を指定
- 表示される[新規Javaクラス]ダイアログで、[名前]に「Sample42」と入力
- 同じ[新規Javaクラス]ダイアログで、[どのメソッド・スタブを作成しますか?]のところにある[public static void main(String[] args)]をチェック
- [終了]ボタンをクリック
出来上がったSample42クラスをリスト6の内容になるように編集をしてください。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
for文の( ) 内の初期化部においてint型の変数iを宣言し、1で初期化している点に注意してください。このように、for文の中で変数を宣言すると、その変数は宣言されたfor文の中だけでしか使えなくなります。for文では、このように専用の変数を宣言することがよくあるので覚えておきましょう。
リスト6のプログラムを実行すると、足し算が実行されていく様子が画面へ出力されて、下記のようになります。今回のプログラムも、while文を使ったリスト4のプログラムと同じ画面出力になります。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
実用的なプログラムの作成に向けて
今回は、反復処理(繰り返し同じ処理)をするプログラムを作成するのに、必要なwhile文やdo文、for文について解説をしました。基本的には、while文を使えば反復処理を実現することはできますが、場合によってはdo文やfor文を使用するとよいということが理解できたでしょうか。
これまでの解説で、プログラムの処理の流れを完全に制御するために、必要な文法事項はすべて押さえたことになります。これでプログラムを見れば、どんな順番で処理が実行されているのかを把握できるようになったはずです。これが分かると、プログラムを読む楽しみが増えてきます。いろいろなJavaのサンプルプログラムを探して読んでみるといいでしょう。
さて、処理の流れを制御することはできるようになりましたが、これを理解するだけではまだ十分ではありません。プログラミングにおいては、「データ構造」というもう1つ重要なものがあります。
つまり、プログラムの中でデータを扱うためのデータ構造について理解しなければ、実用的なプログラムを作成できません。基本的なデータ構造としては、配列というものがあります。そこで、次回は配列について解説する予定です。
筆者紹介
小山博史(こやま ひろし)
情報家電、コンピュータと教育の研究に従事する傍ら、オープンソースソフトウェア、Java技術の普及のための活動を行っている。長野県の地域コミュニティである、SSS(G)やbugs(J)の活動へも参加している。
著書に「基礎Java」(インプレス)、共著に「Javaコレクションフレームワーク」(ソフトバンククリエイティブ)、そのほかに雑誌執筆多数。
- Javaの例外処理で知らないと損する7つのテクニック
- プログラマの宿命! 例外とエラー処理を理解する
- いまさら聞けない「Javadoc」と「アノテーション」入門
- 7ステップで理解するJavaでの列挙型/enum使用法
- 拡張for文の真の実力を知り、反復処理を使いこなせ
- キュー構造をJavaで実装してジェネリック型を理解する
- 強く型付けされているJavaの理解に必修の“型変換”
- あなたの知らない、4つのマニアックなJava文法
- “ネスト”した型で始める軽量Javaプログラミング!?
- Javaは「抽象クラス」で実装を上手に再利用できる
- 再利用性の高いクラス作成に重要な“アクセス制御”
- “コンストラクタ”と初期化、本当に理解できてる?
- 継承やオーバーライドで簡単にクラスを“拡張”しよう
- 「static」でクラス共有の変数・メソッドを使いこなせ!
- Javaの実案件に必須のパッケージとインポートを知る
- プログラムを「変更」しやすくする“インターフェイス”
- Javaの参照型を文字列操作で理解して文法を総復習
- クラスの振る舞いを表すJavaの“メソッド”とは?
- 複雑なデータを表現できるクラスやフィールドって?
- データ集合を扱うのに便利なJavaの配列と拡張for文
- プログラミングの真骨頂! Javaで“反復処理”を覚える
- プログラミングの醍醐味! Javaで“条件式”を理解する
- Javaで一から理解するプログラムの変数と演算子
- Eclipse 3.4で超簡単Javaプログラミング基礎入門
Copyright © ITmedia, Inc. All Rights Reserved.