MENU

プログラミング初心者最初の壁「条件分岐」を徹底解説!その1

プログラムは上から順番に実行されていくのが基本ですが、それだけでは流石に処理のアルゴリズム作りが難航してしまいます。

そこで、ほとんどのプログラミング言語には「制御構文」というものが実装されています。これは、様々な条件に従ってプログラムの実行順番を切り替えるというものです。

代表的な二つが「条件分岐」「繰り返し」です。今回は条件分岐について解説します。

ここはさほど難しくないのですが、プログラミングを勉強し始めた人が一番最初につまづく場所でもあります。基本からしっかり理解していきましょう!

目次

そもそも条件分岐とは?

条件分岐は文字通り、「条件によって動作を分岐させる」という制御構文です。

この条件分岐というものは、私たちが普段生活する上で無意識に行っていることです。ですので雰囲気は掴みやすいかと思います。具体的に例を出してみましょう。

・もし明日が晴れなら出かけよう。雨なら家にいよう。

これはまさしく条件分岐です。「天気」という条件に従って行動を分岐させていますね。これとやることは全く同じです。少し理解への道が開けたでしょうか。

TRUEかFALSEだけの Boolean型

Javaの基本!変数宣言と変数型を完全解説!」の回でBoolean型という変数型があったのを覚えていますでしょうか。条件分岐ではこの変数型を多用します。

変数について解説したときはBoolean型についてはさらっとしか触れていなかったので、まずはBoolean型の解説をしていきましょう。

Boolean型に代入できるのは「真偽値」と呼ばれるものです。聴き慣れない言葉ですね。一体これはなんなのでしょうか。

ここで例えとしてInt型を出してみましょう。

Int型では、整数を代入することができましたね。正確には「整数値」を代入しています。整数値のいうのはもちろん「数字」です。

一方Boolean型は「trueまたはfalseのみ」を代入することができます。この「true」「false」のことを真偽値と言います。

制御構文に必須の「条件式」とは?

さて、ここで先ほど出した

・もし明日が晴れなら出かけよう。雨なら家にいよう。

この例えをプログラム上で書いてみます。

public static void main(String[] args) {
		
		boolean weather = true;
		
		if(weather == true) {
			System.out.println("出かける");
		}else {
			System.out.println("家にいる");
		}

	}

この式では、「出かける」が出力されます。理由は後ほど。

さて、見慣れない文が出てきました。「if(weather == true)」とはなんなのでしょうか。

実は、これこそが条件分岐の基本中の基本、「if文」です。条件分岐は基本的にこれとその派生形を使って行います。

ところで「if(weather == true)」の、「if()」はif文ですが、()内にある「weather == true」は何者なのでしょうか。

実は、この「weather == true」は、条件式と呼ばれるものなのです。では条件式とはどういうものなのでしょうか。

条件式は今まで行ってきた四則演算とは少し違うものです。条件式も計算をするのですが、計算の結果がtrueまたはfalseしかありません。すなわち、先ほど出てきた「真偽値」のみが答えになるんですね。

さて、ここで条件式に用いられる「関係演算子」について話していきましょう。

関係演算子には以下のような種類があります。

  • 「==」
    左辺と右辺が等しい場合trueを返す
  • 「!=」
    左辺と右辺が異なる場合trueを返す
  • 「>」
    左辺が右辺よりも大きい場合trueを返す
  • 「<」
    左辺が右辺よりも小さい場合trueを返す
  • 「>=」
    左辺が右辺以上の時trueを返す
  • 「<=」
    左辺が右辺以下の時trueを返す

特に注意すべきは「==」です。先ほどのソースコードでも出てきましたね。似ているものに、代入演算子の「=」がありますが、全く意味が違いますね。基本的に条件式では必ず「==」を使います。代入演算子を使うような条件式はほとんどない上に、使うこともないので間違えないようにしてください。

また、関係演算子でも前回で解説した演算子のルールは適用されます。つまり、評価を行った後はその演算子とそれに使用された値がまとめて「true」か「false」に置き換わります。

if文の真の姿

前項でif文というものが出てきました。

ここで先ほどの処理を少し考え直してみましょう。ソースコードの直後、私は「出かけると出力される」と書きました。なぜそうなるのか順を追ってみていきましょう。

まず Boolean weather = true; で変数weatherにtrueが代入されます。

次にif(weather == true) という文が出てきました。先ほどの関係演算子を考えると、()の中のweather == trueはtrueという答えになります。もっというと、trueという値に置き換わります。

その後に、System.out.println(“出かける”); と System.out.println(“家にいる”);の二つの処理が書いてありますが、結果からして前者が実行されたと推測できます。

()の中がtrueだと前者が実行された。じゃあ、もし()の中がfalseだったら…?

はい、皆さんの予想通り、後者が実行されます。もう、if文の正体がわかってきたのではないでしょうか。では、ここでif文の一般書式を示しましょう。

if(条件式){ 条件式がTrueの時実行される処理 }else{条件式がFalseの時実行される処理}

if文はこのように書きます。ソースコードのif文はこれをみやすいように改行したものです。

コラム:1を聞いて10をする

私の記事は、他の方の記事と比べるとかなりまどろっこしい書き方をしていると思います。

いちいち読者の方に考えさせるような書き方をしたり、あえてソースコードを出さなかったり。これは、皆さんにプログラミングの学習をする上でとても大切なことを知って欲しいからです。

それは、「1を聞いて10をする」ということです。これは、「何か新しいことを知ったら10回それを試してみなさい」ということです。

プログラミングは、入門書やこの記事のような入門記事を見るだけでは絶対に成長できません。とりあえず書いてあることを見よう見まねでいろんなパターンで書いてみて、実行して、確かに成長できているという実感を得ましょう。

プログラミングは「できている」という感触を感じ続けることが大事です。そうすればモチベーションも続くというものです。

みなさんがプログラミングを楽しいと思っていただければ幸いです。

まとめ

いかがでしたでしょうか。今回はif文や条件式について解説をしてきました。長くなるので更なる条件分岐については次回にしようと思います。

条件分岐、もとい制御構文はプログラミングをする上で絶対覚えなくてはならないことの一つです。ですが、制御構文さえ覚えればあらゆるプログラムを組むことができるとさえ言われています。つまり、これをマスターすればひとまずプログラミングの基本的なやり方はマスターしたも同然ということです。ぜひ頑張って覚えていきましょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

管理人のよしぞと申します。
フリーランス業界で働いている管理人が、業界で働く様々な視点からフリーランスエンジニアに挑戦するためのノウハウを掲載。独立を考えている方にとって手助けになるサイトを目指しています。

目次