プログラミング言語共通の知識(2)ー分岐

if文

値によって処理を分けることが出来ます。
よく使う比較の記号(比較演算子といいます)を紹介します。

==(等号)
 → 左辺の値と右辺の値が等しいかどうかの判定で使用します。
   「=」ひとつだと代入となってしまうので注意しましょう。
!=(不等号)
 → 左辺の値と右辺の値が等しくないかどうかの判定で使用します。
>(大なり)
 → 左辺の値の方が右辺の値より大きいかどうかの判定で使用します。
>=(大なりイコール)
 → 左辺の値が右辺の値以上かどうかの判定で使用します。
<(小なり)
 → 左辺の値の方が右辺の値より小さいかどうかの判定で使用します。
>=(小なりイコール)
 → 左辺の値が右辺の値以下かどうかの判定で使用します。
!(否定)
 → ある判定を否定するときに使用します。
   ※否定は比較演算子ではなく論理演算子になります。
  ※Python3では「!」ではなく「not」になります。

なお、四則演算同様に( )も使うことが出来ます。

C

// ここの値を変えて試してみましょう。
int num = 50;

if (num == 50) {
	printf("numは50です。\n");
}

if (num != 50) {
	printf("numは50以外です。\n");
}

if (num > 50) {
	printf("numは50より大きいです。\n");
}

if (num >= 50) {
	printf("numは50以上です。\n");
}

if (num < 50) {
	printf("numは50より小さいです。\n");
}

if (num <= 50) {
	printf("numは50以下です。\n");
}

if (!(num == 50)) {
	printf("numは50ではないです。\n");
}

C++

// ここの値を変えて試してみましょう。
int num = 50;

if (num == 50) {
	std::cout << "numは50です。" << std::endl;
}

if (num != 50) {
	std::cout << "numは50以外です。" << std::endl;
}

if (num > 50) {
	std::cout << "numは50より大きいです。" << std::endl;
}

if (num >= 50) {
	std::cout << "numは50以上です。" << std::endl;
}

if (num < 50) {
	std::cout << "numは50より小さいです。" << std::endl;
}

if (num <= 50) {
	std::cout << "numは50以下です。" << std::endl;
}

if (!(num == 50)) {
	std::cout << "numは50ではないです。" << std::endl;
}

Java

// ここの値を変えて試してみましょう。
int num = 50;

if (num == 50) {
	System.out.println("numは50です。");
}

if (num != 50) {
	System.out.println("numは50以外です。");
}

if (num > 50) {
	System.out.println("numは50より大きいです。");
}

if (num >= 50) {
	System.out.println("numは50以上です。");
}

if (num < 50) {
	System.out.println("numは50より小さいです。");
}

if (num <= 50) {
	System.out.println("numは50以下です。");
}

if (!(num == 50)) {
	System.out.println("numは50ではないです。");
}

PHP

// ここの値を変えて試してみましょう。
$num = 50;

if ($num == 50) {
	echo "numは50です。\n";
}

if ($num != 50) {
	echo "numは50以外です。\n";
}

if ($num > 50) {
	echo "numは50より大きいです。\n";
}

if ($num >= 50) {
	echo "numは50以上です。\n";
}

if ($num < 50) {
	echo "numは50より小さいです。\n";
}

if ($num <= 50) {
	echo "numは50以下です。\n";
}

if (!($num == 50)) {
	echo "numは50ではないです。\n";
}

Ruby

# ここの値を変えて試してみましょう。
num = 50;

if num == 50
	puts "numは50です。";
end

if num != 50
	puts "numは50以外です。";
end

if num > 50
	puts "numは50より大きいです。"; 
end

if num >= 50
	puts "numは50以上です。"; 
end

if num < 50
	puts "numは50より小さいです。";  
end

if num <= 50
	puts "numは50以下です。";  
end

if !(num == 50)
	puts "numは50ではないです。";  
end

Python3

# ここの値を変えて試してみましょう。
num = 50;

if num == 50:
	print("numは50です。");

if num != 50:
	print("numは50以外です。");

if num > 50:
	print("numは50より大きいです。");

if num >= 50:
	print("numは50以上です。");

if num < 50:
	print("numは50より小さいです。");

if num <= 50:
	print("numは50以下です。");

if not num == 50:
	print("numは50ではないです。");

JavaScript

// ここの値を変えて試してみましょう。
const num = 50;

if (num == 50) {
	console.log("numは50です。");
}

if (num != 50) {
	console.log("numは50以外です。");
}

if (num > 50) {
	console.log("numは50より大きいです。");
}

if (num >= 50) {
	console.log("numは50以上です。");
}

if (num < 50) {
	console.log("numは50より小さいです。");
}

if (num <= 50) {
	console.log("numは50以下です。");
}

if (!(num == 50)) {
	console.log("numは50ではないです。");
}

if-else文

if文では条件に当てはまったときの処理を書くことが出来ました。
では、「偶数の時はこの処理、そうじゃない時はこの処理」とif文を何個も書くしか無いのでしょうか。

いいえ、ちゃんとあります。
else文を使えば、「ifの条件に当てはまらなかったとき」の処理を書くすることが出来ます。

ちなみに以下のような
・Aの条件に当てはまったとき
・Aの条件に当てはまらず、Bの条件に当てはまったとき
・上のどれにも当てはまらなかったとき
という書き方も「else if」のような書き方で可能です。

C

// ここの値を変えて試しみましょう。
int number = 0;

// numberが0のとき
if (number == 0) {
	printf("numberは0です。\n");
} else if (number > 0) {
	// numberが0ではなく、0より大きいとき
	printf("numberは正の数です。\n");
} else {
	// numberが0でも0より大きくもないとき
	printf("numberは負の数です。\n");
}

C++

// ここの値を変えて試しみましょう。
int number = 0;

// numberが0のとき
if (number == 0) {
	std::cout << "numberは0です。" << std::endl;
} else if (number > 0) {
	// numberが0ではなく、0より大きいとき
	std::cout << "numberは正の数です。" << std::endl;
} else {
	// numberが0でも0より大きくもないとき
	std::cout << "numberは負の数です。" << std::endl;
}

Java

// ここの値を変えて試しみましょう。
int number = 0;

// numberが0のとき
if (number == 0) {
	System.out.println("numberは0です。");
} else if (number > 0) {
	// numberが0ではなく、0より大きいとき
	System.out.println("numberは正の数です。");
} else {
	// numberが0でも0より大きくもないとき
	System.out.println("numberは負の数です。");
}

PHP

// ここの値を変えて試してみましょう
$number = 0;

// numberが0のとき
if ($number == 0) {
	echo "numberは0です。\n";
} else if ($number > 0) {
	// numberが0ではなく、0より大きいとき
	echo "numberは正の数です。\n";
} else {
	// numberが0でも0より大きくもないとき
	echo "numberは負の数です。\n";
}

Ruby

# ここの値を変えて試してみましょう
number = 0;

# numberが0のとき
if number == 0
	puts "numberは0です。"
elsif number > 0
        # numberが0ではなく、0より大きいとき
	puts "numberは正の数です。"
else
	# numberが0でも0より大きくもないとき
	puts "numberは負の数です。"
end

Python3

# ここの値を変えて試してみましょう
number = 0;

# numberが0のとき
if number == 0:
	print("numberは0です。")
elif number > 0:
        # numberが0ではなく、0より大きいとき
	print("numberは正の数です。")
else:
	# numberが0でも0より大きくもないとき
	print("numberは負の数です。")

JavaScript

// ここの値を変えて試してみましょう
const number = 0;

// numberが0のとき
if (number == 0) {
	console.log("numberは0です。");
} else if (number > 0) {
	// numberが0ではなく、0より大きいとき
	console.log("numberは正の数です。");
} else {
	// numberが0でも0より大きくもないとき
	console.log("numberは負の数です。");
}


条件式の組み合わせ

今までに出てきた条件式は「numberが0のとき」のように単一のものだけでした。
でも、例えば「年齢が16歳~18歳」や「年齢が12歳以下か60歳以上」のような場合はどのように書けばよいのでしょうか?

そういうときには論理演算子というものを使い、「xxかつyy」とか「xxまたはyy」を表現します。

&&(かつ)
 → &&の左の条件式と右の条件式がどちらも成り立つときに真(TRUE)となります。
   ※Python3では「&&」ではなく「and」になります。
||(または)
 → ||の左の条件式と右の条件式のどちらかが成り立つときに真(TRUE)となります。
   ※Python3では「||」ではなく「or」になります。

C

// ここの値を変えて試してみましょう
int age = 16;

// ageが16歳以上18歳以下の場合
if (age >= 16 && age <= 18) {
	printf("16歳以上18歳以下です。\n");
}

// ageが12歳以下もしくは60歳以上の場合
if (age <= 12 || age >= 60) {
	printf("12歳以下もしくは60歳以上です。\n");
}

C++

// ここの値を変えて試してみましょう
int age = 16;

// ageが16歳以上18歳以下の場合
if (age >= 16 && age <= 18) {
	std::cout << "16歳以上18歳以下です。" << std::endl;
}

// ageが12歳以下もしくは60歳以上の場合
if (age <= 12 || age >= 60) {
	std::cout << "12歳以下もしくは60歳以上です。" << std::endl;
}

Java

// ここの値を変えて試してみましょう
int age = 16;

// ageが16歳以上18歳以下の場合
if (age >= 16 && age <= 18) {
	System.out.println("16歳以上18歳以下です。");
}

// ageが12歳以下もしくは60歳以上の場合
if (age <= 12 || age >= 60) {
	System.out.println("12歳以下もしくは60歳以上です。");
}

PHP

// ここの値を変えて試してみましょう
$age = 16;

// ageが16歳以上18歳以下の場合
if ($age >= 16 && $age <= 18) {
	echo "16歳以上18歳以下です。\n";
}

// ageが12歳以下もしくは60歳以上の場合
if ($age <= 12 || $age >= 60) {
	echo "12歳以下もしくは60歳以上です。\n";
}

Ruby

# ここの値を変えて試してみましょう
age = 16

# ageが16歳以上18歳以下の場合
# Rubyの場合は「&&」の代わりに「and」でも良いです。
if age >= 16 && age <= 18
	puts "16歳以上18歳以下です。"
end

# ageが12歳以下もしくは60歳以上の場合
# Rubyの場合は「||」の代わりに「or」でも良いです。
if age <= 12 || age >= 60
	puts "12歳以下もしくは60歳以上です。"
end

Python3

# ここの値を変えて試してみましょう
age = 16

# ageが16歳以上18歳以下の場合
if age >= 16 and age <= 18:
	print("16歳以上18歳以下です。")

# ageが12歳以下もしくは60歳以上の場合
if age <= 12 or age >= 60:
	print("12歳以下もしくは60歳以上です。")

JavaScript

// ここの値を変えて試してみましょう
const age = 16;

// ageが16歳以上18歳以下の場合
if (age >= 16 && age <= 18) {
	console.log("16歳以上18歳以下です。");
}

// ageが12歳以下もしくは60歳以上の場合
if (age <= 12 || age >= 60) {
	console.log("12歳以下もしくは60歳以上です。");
}

switch文

処理の分岐はif文の他にswitch文というものがあります。
if文は広範囲での条件分岐(0以上など)に適していますが、switch文は「1の場合」「2の場合」など、単純な場合分けに適しています。

switch文で指定した変数の値に応じて、caseで場合分けした処理を書きます。
場合分けした各処理の最後にbreak文を入れないと、その下の場合分けの処理も実行されてしまうので注意してください。

なお、Rubyの場合はcase文で指定した変数の値に応じてwhenで場合分けした処理を書きます。
Rubyはbreak文を入れなくても他の場合分けの処理が実行されることはありません。

C

// ここの値を変えて試してみましょう
int type = 0;

// typeの値を見て分岐
switch(type) {
	// typeが0の場合
	case 0:
		printf("食品です。\n");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが1の場合
	case 1:
		printf("飲料です。\n");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが2の場合
	case 2:
		printf("日用品です。\n");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが上のどれでもない場合
	default:
		printf("その他です。\n");
}

C++

// ここの値を変えて試してみましょう
int type = 0;

// typeの値を見て分岐
switch(type) {
	// typeが0の場合
	case 0:
		std::cout << "食品です。" << std::endl;
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが1の場合
	case 1:
		std::cout << "飲料です。" << std::endl;
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが2の場合
	case 2:
		std::cout << "日用品です。" << std::endl;
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが上のどれでもない場合
	default:
		std::cout << "その他です。" << std::endl;
}

Java

// ここの値を変えて試してみましょう 
int type = 0;

// typeの値を見て分岐
switch(type) {
	// typeが0の場合
	case 0:
		System.out.println("食品です。");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが1の場合
	case 1:
		System.out.println("飲料です。");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが2の場合
	case 2:
		System.out.println("日用品です。");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが上のどれでもない場合
	default:
		System.out.println("その他です。");
}

PHP

// ここの値を変えて試してみましょう 
$type = 0;

// typeの値を見て分岐
switch($type) {
	// typeが0の場合
	case 0:
		echo "食品です。\n";
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが1の場合
	case 1:
		echo "飲料です。\n";
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが2の場合
	case 2:
		echo "日用品です。\n";
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが上のどれでもない場合
	default:
		echo "その他です。\n";
}

Ruby

# ここの値を変えて試してみましょう 
type = 0;

# typeの値を見て分岐
# Rubyの場合はcase-whenになる
case type
when 0
	# typeが0の場合
	puts "食品です。"
when 1
	# typeが1の場合
	puts "飲料です。"
when 2
	# typeが2の場合
	puts "日用品です。"
else
	# typeが上のどれでもない場合
	puts "その他です。"
end

Python3

# Python3にswitch文はありません。

JavaScript

// ここの値を変えて試してみましょう 
const type = 0;

// typeの値を見て分岐
switch(type) {
	// typeが0の場合
	case 0:
		console.log("食品です。");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが1の場合
	case 1:
		console.log("飲料です。");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが2の場合
	case 2:
		console.log("日用品です。");
		break; // これがないと以降の処理も行ってしまうので注意
	// typeが上のどれでもない場合
	default:
		console.log("その他です。");
}

この記事が気に入ったらサポートをしてみませんか?