この記事では、プログラミングに頻出の「if文」をわかりやすく解説します。
また、8つの言語*のif文の書き方も紹介します。
※C言語, Python, JavaScript, Ruby, PHP, Java, C#, エクセル
if文とは?
if文は「もし〜なら、〇〇する」を実現する制御構文です。
制御構文とは「if文」や「for文」のように、プログラムの処理の流れを制御する構文です。
if文を使うと「ある条件を満たしたときだけ、次の処理を実行する」という制御ができます。
if文は「条件文」や「条件分岐」とも呼ばれます。
if文はどんなときに使う?
if文の動作は、日常生活に例えるとわかりやすいです。
普段の生活でも、条件によって行動を変えることがありますよね。
- 明日晴れたら、ピックニックに行く
- 彼女がOKしてくれたら、デートに行く
- 戸棚に何も入っていなかったら、お菓子を買う
- 貯金が10万円以上あったら、パソコンを買う
これらはif文の動作そのものです。
プログラミングでも、条件によって処理を変えたい場合があります。
例として「SNSのアカウントの新規作成」をイメージしましょう。
アカウントを作成するときに、メールアドレスやパスワードを登録しますよね。
このとき、セキュリティのために「パスワードの文字数が十分か」「大文字小文字の両方を含むか」をチェックしなければいけません。
こういうときにif文を使います。
たとえば「パスワードの長さが8文字未満のときにエラーを表示」したい場合、以下のようにif文を書くとパスワードの長さをチェックできます。
var password = "short";
if (password.length < 8) {
throw new Error("Password is too short!");
}
このように、if文を使うと「もし〜なら、〇〇する」を実現できます。
if文の書き方
if文の書き方には、主に3つのパターンがあります。
- if文だけを使う場合
- if-elseのセットで使う場合
- if-elseと「else if」をセットで使う場合
それぞれ詳しく見ていきましょう。
※ここではサンプルコードに「JavaScript」の構文を用います。他の言語のif文の書き方について、いますぐ知りたい方は「【言語別】if文の書き方」をご覧ください。
if文だけを使う場合
まずはif文を単体で使う場合です。
if (条件式) {
条件式が真のときの処理
}
条件式には「真」か「偽」のいずれかになる式を書きます(条件式については後述します)。
条件式が真のとき、if文の内側に書いた処理を実行します。
条件式が偽のときは何も実行しません。
たとえば、変数xの値が10以上のときだけ処理を実行する場合、以下のように書きます。
if (x >= 10) {
// xが10以上のときに実行する処理
}
if-elseのセットで使う場合
条件式が偽のときにも実行したい処理がある場合「else節」を追加します。
else節を追加すると、
「もし〜なら〇〇する、そうでなければ代わりにXXする」
という処理を実現できます。
※elseは英語で「代わりに」を意味する副詞です。
if文をif-elseのセットで使う場合、以下のようにします。
if (条件式) {
条件式が真のときの処理
} else {
条件式が偽のときの処理
}
条件式には、結果が「真」か「偽」のいずれかになる式を書きます。
条件式が真のとき、if文の内側に書いた処理を実行します。
条件式が偽のとき、else節の内側に書いた処理を実行します。
たとえば「変数xの値が10以上のとき〇〇する。そうでなければXXをする」という処理は、以下のように書くことができます。
if (x >= 10) {
// xが10以上のときに実行する処理
} else {
// xが10未満のときに実行する処理
}
if-elseと「else if」をセットで使う場合
2つ以上の条件で処理を分岐するには、if-elseに「else if」節を追加します。
「else if」を使うと、
もしAなら(1)する。AではないがBなら(2)する。いずれでもなければ(3)する。
という処理を実現できます。
if (条件式A) {
// Aのときに実行する処理(1)
} else if (条件式B) {
// AではないがBのときに実行する処理(2)
} else {
// いずれの条件も満たさないときに実行する処理(3)
}
たとえば、
「もし、晴れならピクニックに行く。晴れではないが、曇りなら図書館に行く。晴れでも曇りでもなければ家にいる」
という処理は次のように書くことができます。
if (天気 == 晴れ) {
// ピクニックに行く
} else if (天気 == 曇り) {
// 図書館に行く
} else {
// 家にいる
}
このように、ifは「もし〜ならば〇〇する」、else ifは「代わりに、もし〜ならば〇〇する」、elseは「いずれでもなければ〜する」という役割を果たします。
if文の中にif文を書く
if文はif文の中にも書くことができます。
これにより、ある条件を満たした場合に、さらに別の条件を満たすかチェックできます。
if (条件式A) {
// 以下のif文は条件式Aが真の場合のみ実行される
if (条件式1) {
// 条件式Aが真、かつ、条件式1が真
} else if (条件式2) {
// 条件式Aが真、かつ、条件式1が偽で、条件式2が真
} else {
// 条件式Aが真、かつ、条件式1と条件式2が偽
}
} else {
// 条件式Aが偽
}
これだけではわかりにくいので、例を示しましょう。
以下では、まず、天気(weather)が空文字(文字数が0の文字列)でないことを確認します。空文字でなければ、天気の内容によって処理を分岐します。
天気が空文字の場合は、空文字チェックのところで条件分岐を終了します。
var weather = "晴れ"
if (weather != "") { // xが空文字列でないことを確認する
if (weather == "雨") {
console.log("傘が必要になりそうです");
} else if (weather == "雪") {
console.log("暖かい格好で出かけましょう");
} else {
console.log("いい天気になりそうです");
}
} else {
console.log("天気が設定されていません");
}
このようにif文は入れ子の形で使うことができます。
ある前提条件を満たすことを確認したうえで、さらに細かい条件分岐をしたいときに使えます。
条件式とは?
if文では「条件式」によって処理を分岐できる、と説明しました。
それでは「条件式」とは何でしょうか?
条件式とは「値や式の比較、論理演算などを組み合わせて作る式」のことです。
条件式の計算結果は、真(true)か偽(false)のどちらかになります。
こういうと難しそうですが、要するに「真か偽か」のどちらかに決められる式のことです。
例を見てみましょう。
たとえば、以下のようなものです。
- x > 10(xの値は10より大きいか)
- y <= 10(yの値は10以下か)
- z == 0(zの値は0か)
- result != null(resultの値はnull以外か)
どれも「真か偽か」をはっきり決められますよね。
このような式を条件式といいます。
条件式は「関係演算子」や「論理演算子」を組み合わせて作ります。
それぞれ詳しく説明しましょう。
関係演算子
条件式は「関係演算子」という演算子を使って作ることができます。
関係演算子とは「値の大小関係や等価関係などを判定する演算子」です。
わかりやすくいうと「大きいか小さいか、同じ値かを判定する記号」のことです。
関係演算子には以下のようなものがあります。
演算子 | A > B | A >= B | A < B | A <= B | A == B | A != B |
意味 | 大きい | 大きいか等しい | 小さい | 小さいが等しい | 等しい | 等しくない |
条件式の例 | x > 0 | x >= 0 | x < 0 | x <= 0 | x == 0 | x != 0 |
これらの演算子を使うことで、条件式を書くことができます。
論理演算子
関係演算子を使えば「ある値が大きいか小さいか、同じ値か」を表すことができました。
それでは「0 < x < 10(xが0より大きい、かつ、xは10より小さい)」のような関係を表すにはどうすればいいでしょうか。
「論理演算子」を使うと「かつ(and)」や「または(or)」といった条件を表すことができます。
論理演算子とは、以下のようなものです。
演算子 | A && B | A || B | !A |
意味 | かつ(and) | または(or) | でない(not) |
条件式の例 | 0 < x && x < 10 | x < 0 || 10 < x | !(x == 0) |
条件式の意味 | xが0より大きい、かつ、xが10未満 | xが0未満、または、xが10より大きい | xが0でない |
このように論理演算子を使うことで、より複雑な条件を表す条件式を作ることができます。
ブール値
条件式として、ブール値(trueとfalse)を使うこともできます。
var result = true;
if (result) {
console.log("真");
} else {
console.log("偽");
}
任意のオブジェクトを条件として使える場合
言語によっては、ブール値以外のオブジェクトも条件式に使うことができます。
たとえば、Pythonでは、以下のように文字列オブジェクトや数値オブジェクトを条件に使うことができます。
ここで、変数nameは文字列オブジェクト(テキストシーケンス)ですが、長さが0文字(空文字)なら「False」、それ以外なら「True」と判定されます。
name = "太郎"
if name:
print(f"名前は{name}です") // 名前は太郎です
name = ""
if not name:
print("名前がありません") // 名前がありません
条件式のよくある使い方
ここで条件式のよくある使い方を示しましょう。
等価の関係演算子(==)でシンプルな分岐
if (weather == "rainy") {
console.log("傘を持っていきましょう");
} else {
console.log("傘はいらないでしょう");
}
大小比較の関係演算子でシンプルな分岐
if (savings >= 100) { // 貯金が100以上あったら
you.buy(car); // 車を買う
}
論理演算子を使って複雑な条件で分岐
if (weather == "snowy" || temperature <= 10) {
console.log("特に冷えるので暖かい格好で外出しましょう");
} else {
console.log("暖かい格好で外出しましょう");
}
ブール値で分岐
var her_approval = true;
if (her_approval) {
console.log("これから食事にいきましょう")
} else {
console.log("...");
}
nullチェック
var cupboard = null;
if (cupboard == null) { // 戸棚に何もなかったら
you.buy(orange); // みかんを買う
}
フローチャート
if文をフローチャートで表すと以下のようになります。
【言語別】if文の書き方
ここからは言語別にif文の書き方を紹介します。
C言語のif文
C言語のif文はオーソドックスなif文です。
「if」「else if」「else」の3つの節を使用します。
C言語のif文の詳細についてはこちらを参照してください。
構文
if (条件式1) {
処理1
} else if (条件式2) {
処理2
}
...
} else if (条件式N) {
処理N
} else {
すべての条件式が偽のときの処理
}
使用例
int x = 10;
if (x > 10) {
printf("xは10より大きいです\n");
} else if (x > 0) {
printf("xは0より大きいです\n");
} else {
printf("xは0以下です\n");
}
Pythonのif文
Pythonのif文は「if」「elif」「else」の3つの節を使って書きます。
「else if」が「elif」になる点に注意しましょう。
Pythonのif文の詳細は、公式のドキュメントを参照してください。
構文
if 条件式1:
処理1
elif 条件式2:
処理2
...
elif 条件式N:
処理N
else:
すべての条件式が偽のときの処理
使用例
x = 0
if x > 10:
print("xは10より大きいです")
elif x > 0:
print("xは0より大きいです")
else:
print("xは0以下です")
JavaScriptのif文
JavaScriptのif文はオーソドックスなスタイルです。
「if」「else if」「else」の3つの節を使って書きます。
JavaScriptのif文の詳細はMozillaのドキュメントを参照してください。
構文
if (条件式1) {
処理1
} else if (条件式2) {
処理2
}
...
} else if (条件式N) {
処理N
} else {
すべての条件式が偽のときの処理
}
使用例
var x = 0;
if (x > 10) {
console.log("xは10より大きいです");
} else if (x > 0) {
console.log("xは0より大きいです");
} else {
console.log("xは0以下です");
}
Rubyのif文
Rubyのif文は「if~then」「elsif~then」「else」という3つの節を使って書きます。
また、if文の最後に「end」を書きます。
他の言語と異なり、各節で「then」を、if文の最後に「end」を書くことに注意しましょう。
また、Rubyでは「else if」が「elsif~then」となることにも注意が必要です。
Rubyのif文の詳細は、公式ドキュメントを参照してください。
構文
if 条件式1 then
処理1
elsif 条件式2 then
処理2
...
elsif 条件式N then
処理N
else
すべての条件式が偽のときの処理
end
使用例
if x > 10 then
print "xは10より大きいです\n"
elsif x > 0 thn
print "xは0より大きいです\n"
else
print "xは0以下です\n"
end
PHPのif文
PHPのif文は「if」「elseif」「else」の3つの節を使います。
他の言語における「else if」が「elseif」となる点に注意しましょう。
elseとifの間のスペースを書かず「elseif」です。
PHPのif文の詳細は、公式ドキュメントを参照してください。
構文
<?php
if (条件式1) {
処理1
} elseif (条件式2) {
処理2
}
...
} elseif (条件式N) {
処理N
} else {
すべての条件式が偽のときの処理
}
?>
使用例
<?php
if ($x > 10) {
echo "xは10より大きいです";
} elseif ($x > 0) {
echo "xは0より大きいです";
} else {
echo "xは0以下です";
}
?>
Javaのif文
Javaのif文はオーソドックスなスタイルです。
「if」「else if」「else」の3つの節で条件分岐します。
Javaのif文の詳細はOracleのドキュメントを参照してください。
構文
if (条件式1) {
処理1
} else if (条件式2) {
処理2
}
...
} else if (条件式N) {
処理N
} else {
すべての条件式が偽のときの処理
}
使用例
public class Main {
public static void main(String[] args) throws Exception {
int x = 10;
if (x > 10) {
System.out.println("xは10より大きいです");
} else if (x > 0) {
System.out.println("xは0より大きいです");
} else {
System.out.println("xは0以下です");
}
}
}
C#のif文
C#のif文はオーソドックスなスタイルです。
「if」「else if」「else」の3つの節で条件分岐します。
C#のif文の詳細はMicrosoftのドキュメントを参照してください。
構文
if (条件式1)
{
処理1
}
else if (条件式2)
{
処理2
}
...
else if (条件式N)
{
処理N
}
else
{
すべての条件式が偽のときの処理
}
使用例
int x = 10;
if (x > 10)
{
Console.WriteLine("xは10より大きいです");
}
else if (x > 0)
{
Console.WriteLine("xは0より大きいです");
}
else
{
Console.WriteLine("xは0以下です");
}
エクセルのif関数
エクセルにはif文は存在しませんが、if関数がif文に相当します。
エクセルのif関数の詳細はMicrosoftの公式ドキュメントを参照してください。
構文
=IF(条件式, 条件式真のときに返す値, 条件式が偽のときに返す値)
使用例
A | B | C | |
1 | 10 | =IF(A1 > 10, “A1は10より大きいです”, “A1は10以下です”) | |
2 |
if文が長くなりすぎるときは?
if文を使うとき、条件分岐が増えるとif文が長くなることがあります。
例として曜日を条件に分岐する場合を考えましょう。
var dayOfWeek = "日曜日"
if (dayOfWeek == "日曜日") {
// 任意の処理
} else if (dayOfWeek == "月曜日") {
// 任意の処理
} else if (dayOfWeek == "火曜日") {
// 任意の処理
} else if (dayOfWeek == "水曜日") {
// 任意の処理
} else if (dayOfWeek == "木曜日") {
// 任意の処理
} else if (dayOfWeek == "金曜日") {
// 任意の処理
} else if (dayOfWeek == "土曜日") {
// 任意の処理
} else {
// 任意の処理
}
とても長いコードになりましたね。
このように条件分岐が増えすぎると、if文が読みにくくなります。
このような場合、switch文を使うと便利です。
switch文とは?
switch文は、式の「値」で分岐する制御構文です。
if文では分岐する条件として「真偽値(trueかfalse)」を設定する必要がありました。
一方、switch文では、分岐する条件に文字列や数値などの値を設定できます。
言葉で理解するよりも、コードを見たほうがわかりやすいです。
先ほどの曜日の分岐をswitch文に置き換えてみましょう。
var dayOfWeek = "日曜日";
switch (dayOfWeek) {
case "日曜日":
// 任意の処理
break;
case "月曜日":
// 任意の処理
break;
case "火曜日":
// 任意の処理
break;
case "水曜日":
// 任意の処理
break;
case "木曜日":
// 任意の処理
break;
case "金曜日":
// 任意の処理
break;
case "土曜日":
// 任意の処理
break;
default:
// 任意の処理
break;
}
このように、switch文では「case [比較する値]:」という記述で条件分岐を書くことができます。
if文のように「変数 == 比較する値」と条件式を書かなくて済むため、シンプルなコードになります。
switch文が使える言語
switch文はほとんどの言語で使用できます。
詳細は各言語のドキュメントを参照してください。
- C言語のswitch
- Pythonのmatch(Python3.10より追加)
- JavaScriptのswitch
- Rubyのcase
- PHPのswitch
- Javaのswitch
- C#のswitch
まとめ
この記事では、プログラミングのif文について説明しました。
- if文は「もし〜なら、〇〇する」を実現するために使います
- 「if」「else if」「else」の3つの節を使って条件分岐します
- if文の条件式は、関係演算子や論理演算子を使って書くことができます
- if文の書き方は言語によって若干異なります
- if文の条件分岐が長いときはswitch文を使ったほうがいい場合もあります
if文はアプリ開発には必須の制御構文です。よく理解してマスターしましょう!
コメント