Youtube登録者5000人突破!!

【C++】if文 【はじめてのC++プログラミング入門講座 #5】

はじめてのC++プログラミング入門講座では、プログラミングをやったことのない人でも分かるように、C++について解説します。まずは、C++を知るところからはじめて、初心者がつまづきやすい「ポインタ」までをゴールとして進めていきます。全て無料で学べる内容となってますので、ぜひ最後までお付き合いください。

丁寧に学ぶをモットーに、ひとつずつじっくりと理解しけるように解説します。 はじめは少し退屈かもしれませんが、基礎を身に着けておくと、後が楽になります。また、プログラミング学習でよくあるのが、飛ばしすぎて途中で挫折してしまうことです。続けさえすれば力になります。じっくりゆっくり学んでいきましょう。

本講座はC++の開発環境が必要です。環境構築には第1回のVisual Studioの環境構築を参考にしてください。下記からどうぞ。

前回の第4回では、代入演算子とインクリメントについて解説しました。詳細は下記からどうぞ。

重要なポイントは下記の通りです。 代入演算子とインクリメントを使えば美しいプログラムを書けるようになります。

  • 変数は数学のxやyのように好きなものを入れられる
  • 代入演算子を使うと、変数に追加で足したり引いたりするプログラムがシンプルになる
  • x += 3 はxに3を足すことを意味する(x=x+3 と同じ意味になる)
  • インクリメントを使うと、変数に1を足すプログラムがシンプルになる
  • x++ はxに1足すことを意味する(x=x+1 と同じ意味になる)

if文

if文を使えば、分岐を行うことが出来ます。例えば、ゲームの選択肢なんかはif文で作ることができます。「はい」と言ったら進む、「いいえ」といったら戻る、といったことが出来ます。

これからたくさんの機能を紹介していきますが、一番使うのはif文です。他の機能も共通する考え方は多いので、今回の講座で基本的な考え方を身につけましょう。

今回使用するコードは下記のようになります。VisualStudioに貼り付けて、Ctrl+F5で実行してみてください。結構長く見えますが身構えないでください、if文の繰り返しなので結構簡単です。

#include <iostream>

int main()
{
	bool is_ok = false;
	is_ok = true;

	if (is_ok) {
		std::cout << "is_ok = true" << "\n";
	}

	int x = 30;

	if (x > 100) {
		std::cout << "x > 100" << "\n";
	}
	else if(x > 10){
		std::cout << "x > 10" << "\n";
	}
	else {
		if (x == 10) std::cout << "x は 10 です" << "\n";
		std::cout << " x <= 10" << "\n";
	}

	int y = 50;

	if (x > 10 && y > 10) {
		std::cout << "xもyも10以上" << "\n";
	}

}

出力結果は下記のようになります。

is_ok = true
x > 10
xもyも10以上

それではいつも通り順番にプログラムを見ていきましょう。

ライブラリとメイン関数

#include <iostream>

int main()
{
・・・
}

今回もインクルードするライブラリは入出力ライブラリのiostreamだけです。残りのコードは全てメイン関数の中に書いていきます。

bool型

	bool is_ok = false;
	is_ok = true;

今回扱う主役はif文ですが、その前にbool型について理解する必要があります。bool型は変数型の一種で、整数型のintや浮動小数点型のdouble、文字列型のstringに並ぶ一つの型です。bool型は少し特殊で、TrueとFalseの2つしか入れられません。Trueがイエスを表し、Falseがノーを表します。つまり、イエス・ノーの条件分岐をするのに最適な型です。

bool is_ok = false; この行では、bool型として変数is_okにfalseを代入しています。一般的に、プログラムの最初でこのようにbool型にfalseを与えておき、何かトリガーがあったらTrueにして特別な作業を実行するというプログラムはたくさんあります。はじめにfalseを与えているbool型があったら、深く考えずに何かトリガーの準備をしていると思ってスルーすると良いです。

is_ok = true; この行では、bool型の変数is_okにtrueを代入しています。今回は例なのでなんの前触れもなくtrueを代入してますが、基本的には何かトリガーがあってtrueを代入します。例えばユーザーからの入力があったり、何か条件が揃った場合などです。

if文

	if (is_ok) {
		std::cout << "is_ok = true" << "\n";
	}

今回の主役のif文です。if文はカッコ内()にbool型の変数を与え、もしその変数がTrueだった場合は波カッコの中{}を実行します。今回はis_okにtrueを代入したので、if文の波カッコ内が実行されます。波カッコ内は文字列と改行の画面表示担っています。

if文はカッコ内()がtrueかfalseによって実行されるコードが変わる特性があるため、条件分岐と呼ばれます。

また、今までは上から下に全てのコードを実行するだけでしたが、このようにコードが分岐すると特殊な流れになります。今回の分岐や他にもループ等があり、このような特殊な流れを総称してアルゴリズムと呼びます。if文はアルゴリズムの入門に当たります。

比較演算子とelse

	int x = 30;

	if (x > 100) {
		std::cout << "x > 100" << "\n";
	}
	else if(x > 10){
		std::cout << "x > 10" << "\n";
	}
	else {
		if (x == 10) std::cout << "x は 10 です" << "\n";
		std::cout << " x <= 10" << "\n";
	}

次はif文を使用して数値の大小関係を調べていきます。

int x = 30; まず最初の行で整数型の変数xに30を代入します。

if (x > 100) { if文の丸カッコ内()にx >100と書かれています。このような大なり(>)・小なり(<)などは比較演算子と呼ばれます。比較演算子は以下の種類があり、式を満たしている場合はTrueを、式を満たさない場合はFalseを出力します。

  • x > y
  • x >= y
  • x < y
  • x <= y
  • x == y
  • x != y

大体見れば分かると思いますが、大小関係が合っていればTrueを返します。==は両辺が一致する場合にTrue、!=は両辺が一致しない場合にTrueを出力します。

if (x > 100) { ここではxに30が入っているため、if文の条件を満たしません。その場合はif文の波カッコ内{}が実行されず、次の行に移動します。

else if(x > 10){ この行で出てくるelse if文は、if文が実行されなかった場合にだけ実行されるif文です。つまり、else if文はif文がないと存在できません。elseは「そうでなければ」を意味するので、else ifは「if でなければ」という意味になります。xには30が入っているので、else if文の丸カッコ内()はtrueです。つまり、この波カッコ内が実行されることになります。(std::cout << “x > 10” << “\n”; の結果が画面出力されます)

else { 最後にelse文ですが、これは全てのif文とelse if文が実行されなかったときだけ実行される部分です。今回はelse ifが実行されたのでお役御免ですが、もしelse ifが実行されなかったらここの波カッコ内が実行されることになります。予想外の例外処理等で使用されることも多いです。

else {
 if (x == 10) std::cout << “x は 10 です” << “\n”;
今回のプログラムではelseの波カッコ内にif文を書いています。if文はこのように階層構造にして使用することもできます。このような使い方をすることで、例えば「身長は170cm以上の人の中で、体重は60kg以下の人を選ぶ」といった追加の条件を入れられます。

今回はx > 100とx > 10には当てはまらないが(else)、x==10である場合(if文)に画面出力しています。

ANDとOR

int y = 50;

	if (x > 10 && y > 10) {
		std::cout << "xもyも10以上" << "\n";
	}

最後は、条件の追加です。例えば結婚相談所のアプリで「30代で160cmで年収が500万で・・」みたいに非常に細かい条件を設定できますが、それは条件を追加しているからです。やりかたは簡単で、2つ以上の条件を&&でつなぐだけです。

x > 10 && y > 10 今回は、xが10より大きいかつyが10より大きい場合に画面出力します。条件の追加はANDとORの二種類だけです。よく使うので覚えておきましょう。

  • && :ANDを意味する(~かつ~の場合True)
  • ||  :ORを意味する(~もしくは~の場合True)

おわりに

今回は条件分岐であるif文について解説しました。if文はアルゴリズムを操作する方法の一種です。アルゴリズムとは、プログラムの実行順序のことです。if文は条件に応じて実行を分岐させることで、その時々に応じて最適な実行を行うことができます。

if文だけでもかなり多くの事ができます。今後紹介する機能もif文と組み合わせれば、さらに多くのことができるようになります。

重要な項目は以下の通りです。

  • bool型はTrueかFlaseのどちらかを返す
  • if文を使うことで条件に応じた分岐を行える
  • if文の条件にはbool型を使う
  • else文はif文が実行されなかった場合だけ実行される
  • else if文はif文が実行されなかった場合だけ判定を行う
  • 比較演算子は左右の値の大小に応じてTrueかFlaseを返す
  • AND条件は「&&」、OR条件は「||」を使用する

if文に関する内容をまとめて紹介しているので、少しボリュームが多めです。if文を中心としてその他の機能を覚えるとおぼえやすいです。ANDとORなどは必要に応じて調べられるように頭の片隅に置いておくぐらいでも大丈夫です。

次回は名前空間について解説します。下記からどうぞ。

youtube動画でも解説しています。詰まったらこちらもどうぞ。