制御文とは?

制御文とは、処理の流れを指示するために用いるプログラミング文のことです。制御文には、①順次処理 ②選択処理 ③反復処理の3種類があります。
順次処理は上から順にプログラミング処理を行なっていくことです。選択処理は別名で分岐処理とも呼ばれており、これから学習するif文やswitch文がこれに該当します。反復処理はその名の通り反復して処理を行うもので、後に学習するwhile文、for文などがこれに該当します。それでは各制御文に関して詳しく学習していきましょう。
選択処理

前述したように選択処理にはif文やswitch文が該当します。選択処理というように、条件式によって、その動作を行うかどうかを選択したい場合に使用します。
if文
まずはif分を学習していきましょう。ifは英語で「もし〜」を示すので慣れ親しみやすい人が多いのではないでしょうか?if文には3つの種類があります。
通常のif文
1つ目に紹介するのは通常のif文です。記述方法は以下の通りです。
if(条件式) {
//処理したい内容
}
条件式の中がtrueの時に中の処理を実行します。それ以外の場合は、処理をスキップします。よって、条件式の部分はtrueかfalseが返る形にしてあげましょう。
if else
2つ目に紹介するのは、if else文です。if else文はtrueとfalseで行いたい条件が決まっている場合に使用します。
if(条件式) {
//処理したい内容①
}else{
//処理したい内容②
}
このように記述することで、条件に合うときは①の中身を実行し、条件に合わないときは②の中身を実行します。
else if
else if文は分岐が2つ以上ある時に記述します。elseとifの間に改行を入れてしまうと、else文とif文というふうに認識されてしまうので、改行はしないようにしましょう。else if文の記述方法は以下の通りです。
if(条件式) {
//処理したい内容
}else if(条件式) {
//処理したい内容
}
else if文は最初のif文がfalseだった場合に、条件分岐を行います。複数記述したり、else文と一緒に使ったりすることも可能です。
if(条件式) {
//処理したい内容
}else if(条件式) {
//処理したい内容
}else if(条件式){
//処理したい内容
}else{
//処理したい内容
}
こうすることで、条件分岐で全て漏れてしまったらelseの内容を実行するということができるので、有効に使っていきましょう。
switch文
switch文もif文に少し似ていますが、条件式をbooleanにしなくて良いという点が違います。switch文の記述方法は以下の通りです。
switch (式) {
case 定数式1:
処理内容1;
break;
case 定数式2:
処理内容2_1;
処理内容2_2;
break;
default:
処理内容;
break;
}
式に記載できるものはbyte、char、short、int、enum、String自体やこれらで返る計算式やリテラルです。処理内容は複数行書く事ができ、処理内容の最後にbreakと記載する事でそのケースの処理を終わらせる事ができます。breakを記載しないと処理が継続してしまうので気をつけましょう。
また、defaultを記載する事でどの条件にも合わなかった場合の処理を記述する事ができます。条件に合わせて複雑に分岐することができるので、分岐が多いときはSwitch文を検討しましょう。
反復処理

次に反復処理を学習していきましょう。反復処理にはfor文とwhile文の2つがあります。繰り返しの回数が決まっている時はfor文、繰り返し回数が特に決まっていない場合はwhile文を使う事が多いです。それでは角文章について学習していきましょう。
for文
まず、for文です。for文には2種類あります。
通常のfor文
まず普通のfor文です。通常のfor文ではforの後ろの()の中に初期化式、条件式、変化式を記述します。
for (初期化式; 条件式; 変化式){
//処理内容
}
変化式が実行されるタイミングは処理内容が終わった地点です。また、初期化式はfor文を初めて実行する時にのみ適応されます。これらは試験などにも出る内容なのでしっかり覚えましょう。また変化式にはメソッドを呼び出す事も可能です。
拡張for文
拡張for文は配列やコレクションの中身を全て取り出したいときなどに使われるfor文です。
for(データ型 変数名:コレクション名){
//処理内容
}
データのたくさん詰まったコレクションの中から一つずつ取り出し、それを変数名の中に1つ1つ入れていきます。そして、その変数を処理内容の中で利用します。全て取り出し終わるまで処理は終わらないので、「たくさんあるデータの全てに対して操作をしたい時に利用する。」というイメージを持っておきましょう。
また、たくさんあるデータを全て取り出すときは拡張forと普通のforの両方を使うことができますが、通常は拡張forを用いることが多いです。これは記述量が少なくなるからです。逆に普通のforは処理内容の中で「繰り返しの回数などを記述したい場合」に利用します。
より高度なfor文
for文の基本を学習したところでより高度なfor文を学習していきましょう。
複数の一時変数を使用したfor文
for文の初期化式や変化式は複数個 記述する事が可能です。変数の型が同じでなくてはならないというルールがあるのでこのルールだけは守って書くようにしましょう。
for(int y = 0, j=0; y<3; y++){
//処理内容
}
while文
次にwhile文を学習していきましょう。while文は、条件式が成立する時に処理を繰り返す式です。while文には通常のwhile文とdo while文の2種類があります。
while
まず、通常のwhile文です。先ほど説明したように、条件式がtrueの場合に継続して処理を行います。
while(条件式){
//処理内容
}
処理内容の部分で変数に対して変化を起こすことで、処理を実行するか否かを変更することができます。例えば以下のようなコードが該当します。
int score = 10;
while(score < 15){
//出力
System.out.println("15点以下です。")
//1点追加
int++;
}
上のような文章を書くことで、条件に当てはまる場合は処理を継続することができます。この文章はfor文で書くことで記述内容をよりわかりやすくすることができるので、挑戦してみてくださいね!
do while
次にdo while文を紹介します。do whileは、doの部分でまず処理を実行し、その後にwhileで判定を行い、処理を繰り返していくというものになります。whileの前に何か絶対実行したいものがある場合はこの式で記載すると良いでしょう。
do{
//処理内容
}while(条件式){
//処理内容
}
より高度な繰り返し文の利用
繰り返し文の途中で、処理を中断したい。特定の処理だけスキップしたいなんてこともあるかもしれません。繰り返し文をを使いこなすには、continue、break、ラベルの3つを知り尽くす必要があります。
continue
continueはある条件の時に特定の繰り返し処理をスキップして、繰り返し文自体は続けたい時に記述します。例えば下のようなコードです。
for (int i = 0; i < 10; i++){
if (i == 8){
continue;
}
System.out.println(i);
}
上のコードではfor文中にif分が記述してあります。変数iが8の時は、continueがそれ以降の処理をスキップして再度繰り返し文を実行してくれます。よって、上のコードを実行すると、12345679が出力されます。
break
break文はcontinue文と違い、繰り返し文自体も終了するという特性があります。先程のコードのcontinue部分をbreakに変更したコードを用意しました。
for (int i = 0; i < 10; i++){
if (i == 8){
break;
}
System.out.println(i);
}
このコードを実行すると、処理結果は1234567となります。よって、break文は繰り返し文の処理を途中で中断したい場合に記述します。if文などと組み合わせて使うようにしましょう。
ラベル
ラベルは文に対して名前をつける役割を果たします。例えば以下のようなコードがあったとします。
for (int t = 0; i < 10; i++){
for (int i = 0; i < 10; i++){
if (i == 8){
break;
}
System.out.println(i);
}
}
このコードを実行した際にbreakが読み込まれたとしても内側のfor文しか抜けることができません。このような場合にラベルを使用します。
sample:
for (int t = 0; i < 10; i++){
for (int i = 0; i < 10; i++){
if (i == 8){
break sample;
}
System.out.println(i);
}
}
このように記述することで、breakが読み込まれた場合に、2つのfor文から抜け出すことができます。
continue、break、ラベルをしっかり活用することで、想定通りの挙動になるようにコーディングしていきましょう。
最後に
いかがだったでしょうか?今回紹介した処理式はJavaを触る上で絶対使うと言っても過言ではないものです。使い方をしっかりと押さえて、コーディングに生かしてくださいね!特にこれらの式は実際に書いた方が覚えることができるので、コードを書くことのできる環境がある人は実際に書いて覚えましょう。