LINEで現役エンジニアに直接質問してみよう!登録無料

【プログラム基本構文】条件分岐 if文とは?else、and、or、notも含めて解説

アキ

独学でプログラミングを勉強しながらWeb制作会社で働き、プログラミングのエンジニア講師も勤めた経験がある、アキです。

  • プログラムの「if文」ってなに?
  • プログラムで「if」ってよく見るけど、そういう意味?
  • プログラムの「if」にはどんな役割があるの?
  • プログラムの「if」はどうやって使うの?
  • プログラムの「if」が使えるとどんな事が出来るの?

こんな疑問に答えていきます。

結論から言うと、プログラムの「if文」とは、プログラミングで使う構文で、「もし〜なら〇〇をしてね」という指示をコンピュータに与える書き方の1つです。 「もし〜なら〇〇をしてね」というのは、専門用語で「条件分岐」といいます。

条件分岐は、いくつも入れ子にすることができますが、やりすぎると見にくいプログラムになってしまうので、else、and、or、notを組み合わせて見やすいプログラムを書けるようにしましょう。

プログラムの「if文」ってなに?

冒頭にもお伝えした通り、プログラムの「if文」とは、プログラミングで使う構文の1つで、「もし〜なら〇〇をしてね」という指示をコンピュータに与える書き方の事を言います。専門用語で「if文」のことを「条件分岐」と言ったりもします。

条件分岐には「if文」の他にも、「case文」や「3項演算子」など複数の書き方があります。

そもそもプログラム&プログラミングとは?

プログラムとは、「コンピューターに仕事をさせる順序」の事です。

プログラミングとは、「コンピューターに仕事をさせる順序を書くこと」です。

「こういう場合はあれをして」「この場合はこれをして」と細かく指定していくと、コンピューターに自分がしてほしい仕事(計算)をさせることができます。

「if文」は条件によってコンピュータにやってほしいことを変える時に使う

「if文」はどういう時に使うのでしょうか?それは、「条件によって指定ほしい事を変えたい」場合に使います。

具体例を上げるならこのようになります。

  • ある値が100以上の時は〇〇をして、それ以外だったら△△をしてほしい
  • 変数の値が "success" だったら〇〇して、それ以外だったら△△してほしい

このように、条件によってコンピュータにしてほしい内容を変える処理の書き方(構文)の1つが「if文」なのです。

「if文」のように、条件によって変える書き方の総称を「条件分岐」といいます。条件分岐はifの他にも、「3項演算子(条件演算子ともいう)」や「case文」もあります。

「if文」はどのようにして書き、使うのか?

プログラミング言語ごとに書き方は異なりますが、概ね下記のように書きます。大きな違いはありません。

if (条件式1) {
    // 処理1
} else if (条件式2) {
    // 処理2
} else {
    // 処理3
}

このプログラムを実行すると、処理1、処理2、処理3のいずれかが必ず実行されます。どれが実行されるのかは、条件式1、条件式2によって判断されます。

  • 条件式1に当てはまると、処理1のみが実行され、終了します。
  • 条件式1に当てはまらなかったら、条件式2が試され、当てはまると処理2が実行され、終了します。
  • 条件式2にも当てはまらなかったら、処理3が実行され、終了します。

また、Rubyという違う言語風に同じ処理を書くと、このようになります。

if 条件式1 then
    # 処理1
elsif 条件式2 then
    # 処理2
else
    # 処理3
end

かなり似ている部分があると思います。もし、他のプログラミングの事が知りたくなったら「python if文」「javascript if文」とかで検索すると、詳しく見ることができます。

「if文」の条件式には「true」「false」に相当するものを使う

上記のif文の例では「条件式1」「条件式2」を使っていましたが、実際にはここに a > 10みたいな条件式が入ります。 a > 10のような書き方をすると、これ自体が「true」「false」の2値で表せるboolean型の値になります。 boolean型の値を「if文」で使うことで、プログラムを動かす事ができます。

条件式を記述するには、主に3つの書き方が用いられます。「比較演算子」と呼ばれる書き方です。「==」「>」「<」があり、「等しい」「大なり」「小なり」を使います。 また、これらを組み合わせて「=>」「=<」で「以上」「より小さい」を表すこともできます。

MEMO

数学の授業で、「≧」「≦」という書き方を習っているかと思います。プログラミングでは、この文字は使えないので注意しましょう。 同等の書き方がすでにあるので、使いたいときは、下記にならって使うようにします。

  • =>
  • =<

変数aが100未満の時は処理1、それ以外は処理2を実行するようにプログラムしてみる

具体例として、変数aが100未満の時は処理1、それ以外は処理2を実行するようにプログラムしてみます。

if (a < 100) {
    // 処理1
} else {
    // 処理2
}
if a < 100 then
    # 処理1
else 
    # 処理2
end
MEMO

true、falseは、boolean型の定数です。型とは、コンピュータ上でどのように計算するのかの情報だと考えてください。

例えば、「1」と「3」を足し合わせる動作をさせたいとしましょう。型が無ければ、コンピュータから見た時答えが「4」なのか「13」なのかわかりません。「1」と「3」が「数値型」とすれば答えは「4」、「文字列型」とすれば答え「13」(ただ文字を合わせただけ)と決まります。

このように、型は計算方法を決めるのに重要な役割を果たしています。

「if文」は入れ子構造にして、もっと複雑な条件分岐をさせることも可能

if文は入れ子にしてもっと複雑な条件分岐をさせることもできます。

しかし、入れ子構造にしすぎるとプログラムが見にくくなるので注意が必要です。


if (a > 100) {
	if (a < 200) {
		// 処理
	}
}

入れ子構造になってしまったら、「and」「or」「not」を使って入れ子構造を解消できないか考えてみましょう。

「if文」で「and・or・not」を使いこなして、見やすい条件分岐を作る

if文の入れ子を解消するには、主に3つの方法があります。

  • and(&&)を使う
  • or(||)を使う
  • not(!)を使う

andを使う

and(&&)は、「〇〇かつ△△」を表します。プログラムでは、&&を使ってandを表します。

「条件式1 && 条件式2」のようにすると、条件式1、2が両方ともtrueの時にtrueを返し、それ以外の時はfalseを返します。

先程のif文を入れ子にした構造を&&を使って書くと、このようにスッキと見やすく書けます。


// aが100以上かつ200未満の時
if ((a >= 100) && (a < 200)) {
	// 処理
}

条件式を()で囲っているのは、この部分を先に計算してもらって、何と何をandするのかを明確にしたいためです。言語によってはなくてもいいですが、余計なバグを生まないために()を付ける癖を付けましょう。

or(||)を使う

or(||)は、「〇〇または△△」を表します。数学で言う所の「和集合」に相当します。

「条件式1 || 条件式2」のようにすると、条件式1、2のどちらかがtrueの時にtrueを返し、両方falseの時にfalseを返します。

or(||)を使ったプログラムはこのような感じになります。


// aが50未満または300より大きい時
if ((a < 50) || (a > 300)) {
	// 処理
}

not(!)を使う

not(!)は、「〇〇でない」を表します。

「!条件式」のようにすると、条件式のture falseを逆転させることができます。つまり、条件式の値がtureのときにはfalseが、falseの時にはtureになります。


// aが50未満では無い時 = aが50以上の時
if (!(a < 50)) {
	// 処理
}

まとめ

ここまでをまとめると、下記のようになります。

  • 「if文」はプログラムで条件分岐を書くときの書き方です。
  • 「if文」は入れ子構造にして、もっと複雑な条件分岐をさせることも可能
  • 「if文」を使えるようになったら、and・or・notを使ってプログラムの見やすさを意識して書きましょう
この記事を書いた人

自身がプログラミングを独学で勉強し始めて躓いた経験を元に、これから勉強をする人に向けに「イラスト多めでわかりやすい記事」にこだわって情報を発信しています。

現在はフルスタックエンジニアとしてサービス開発などのお仕事をしています。