これまでの記事では、Javaの基本的な文法を少しずつ学んできました。
最初は「変数」や「if文」など、それぞれの文法を個別に学習しました。
しかし、実際のプログラムでは、1つの文法だけを使うことはほとんどありません。
変数・条件分岐・繰り返し・配列・メソッドなどを組み合わせて、1つの処理を作っていきます。
今回は、これまで学んだ基本文法を一度整理してみましょう。
変数は、データを入れておくための箱のようなものです。
int score = 80;
String name = "山田";
Javaでは、変数を作るときに「どのようなデータを入れるのか」を指定します。
例えば、点数を扱う場合はintを使うことができます。
int score = 80;
演算子は、計算や比較などを行うために使用します。
int a = 10;
int b = 3;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
score >= 70
比較演算子を使うと、「70点以上か?」のような条件を作ることができます。
この条件は、次に紹介するif文などで利用できます。
if文は、条件によって処理を分けるために使用します。
int score = 80;
if (score >= 70) {
System.out.println("合格");
} else {
System.out.println("不合格");
}
この例では、scoreが70以上なら「合格」、それ以外なら「不合格」と表示します。
if文では、範囲を指定した条件や複数の条件を組み合わせることもできます。
switch文は、決められた値によって処理を分けるときに便利です。
int menuNo = 2;
switch (menuNo) {
case 1:
System.out.println("メニューA");
break;
case 2:
System.out.println("メニューB");
break;
case 3:
System.out.println("メニューC");
break;
default:
System.out.println("該当するメニューはありません。");
}
if文とswitch文は、どちらも条件によって処理を分けるために使います。
範囲や複雑な条件ならif文、決められた値による分岐ならswitch文というように使い分けるとよいでしょう。
同じ処理を何度も実行したい場合は、繰り返し処理を利用します。
回数が決まっている処理に向いています。
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
この例では、0から4までの数字を表示します。
条件を満たしている間、繰り返したい場合に使用します。
int count = 0;
while (count < 5) {
System.out.println(count);
count++;
}
for文とwhile文は、どちらも繰り返し処理に使用できます。
同じ種類のデータを複数まとめて管理したい場合は、配列を使用できます。
int[] scores = {80, 65, 90, 55};
この配列には、4つの点数が入っています。
配列の要素は、添字(インデックス)を使って取り出すことができます。
System.out.println(scores[0]);
実行すると、最初の要素である80が表示されます。
ここからが今回の振り返りで特に重要な部分です。
実際のプログラムでは、配列だけ、for文だけというように、1つの文法だけを使うとは限りません。
例えば、配列に入っているすべての点数を表示してみます。
int[] scores = {80, 65, 90, 55};
for (int i = 0; i < scores.length; i++) {
System.out.println(scores[i]);
}
80
65
90
55
ここでは、
というように、それぞれの機能を組み合わせています。
さらに、if文も組み合わせてみましょう。
int[] scores = {80, 65, 90, 55};
for (int i = 0; i < scores.length; i++) {
if (scores[i] >= 70) {
System.out.println(scores[i] + "点:合格");
} else {
System.out.println(scores[i] + "点:不合格");
}
}
80点:合格
65点:不合格
90点:合格
55点:不合格
このプログラムでは、これまで学んだ内容を組み合わせています。
このように、基本文法を組み合わせることで、少し実用的なプログラムを作ることができます。
処理が長くなってきたら、メソッドを使って処理をまとめることができます。
public static void judgeScores(int[] scores) {
for (int i = 0; i < scores.length; i++) {
if (scores[i] >= 70) {
System.out.println(scores[i] + "点:合格");
} else {
System.out.println(scores[i] + "点:不合格");
}
}
}
このように処理をメソッドとしてまとめることで、必要なときに呼び出して利用できます。
int[] scores = {80, 65, 90, 55};
judgeScores(scores);
「何をする処理なのか」をメソッドとしてまとめることで、プログラムを整理しやすくなります。
プログラムを読むときは、いきなり1行ずつ理解しようとすると混乱することがあります。
まずは、次の順番で確認してみましょう。
例えば、先ほどのプログラムなら、
int[] scores = {80, 65, 90, 55};
for (int i = 0; i < scores.length; i++) {
if (scores[i] >= 70) {
System.out.println(scores[i] + "点:合格");
} else {
System.out.println(scores[i] + "点:不合格");
}
}
まず「点数を配列で管理している」と考えます。
次に「for文で1つずつ取り出している」と考えます。
最後に「if文で合格・不合格を判定している」と考えると、全体の流れが見えてきます。
ここまで学んだ文法は、それぞれ単独で使うものではありません。
実際のプログラムでは、次のように組み合わせて使います。
変数
↓
条件分岐
↓
繰り返し
↓
配列
↓
メソッド
もちろん、すべてを毎回使う必要はありません。
「どの処理に、どの文法を使うのか」を考えることが重要です。
まずは、for文とif文を別々に考えてみましょう。
for (...) {
if (...) {
}
}
これは、
「繰り返して、その中で条件を判定する」
という処理です。
配列の添字は0から始まります。
int[] scores = {80, 65, 90};
「最初の要素は0番」という点を覚えておきましょう。
複雑なコードを見たときは、最初からすべて理解しようとする必要はありません。
「変数はどこ?」
「繰り返しはどこ?」
「条件分岐はどこ?」
というように、知っている部分を一つずつ探してみましょう。
ここまで学んだ内容を組み合わせることで、少しずつ「プログラムを作る」ことができるようになります。
次回は、クラス・オブジェクト・コンストラクタ・カプセル化・継承・ポリモーフィズムなど、オブジェクト指向について振り返ります。