【C言語の入門】if文の使い方:if文の条件分岐や論理演算子switch文の使い方

c言語の入門方法を、どんな方でもわかるように、まとめました。 また、具体的に勉強することなどもまとめていますので、読めば誰でも、c言語がかけるようになります。

どうもピーマンです。こんかいは、c言語の「条件分岐」について説明していきたいと思います。c言語のプログラミングでは、条件分岐が使える様になると、前章の変数よりも、もっとたくさんのことができる様になるので、必ず習得しましょう。

if文

それでは条件分岐について具体的に説明していきます!

if文とは?

c言語で条件分岐を使いたいときは、主に、「if文」と呼ばれるものを使用します。このif文を使用すると、以下のことができる様になります。

  • 入力に対して異なる処理を実行
  • プログラムに自動で仕事をさせるときに、状況に合わせて、処理内容を変更

このif文を例えば前章の変数と組み合わせると、入力された数字が偶数なのか奇数なのかを判定したり、血液型占いを作ることができたりします。エアコンの温度調整だってこの条件分岐のおかげで動いています。

それでは、以下のc言語のソースコードをコンパイルして実行して見ましょう!

※return 0;というのはプログラムを終了させるコードです。

このプログラムは、例えばキーボードから4と入力した場合は、

4は偶数です

と表示され、5と入力した場合は、

5は奇数です

と表示されます。

ここで、新しく登場した9行目のif文を紹介します。

if(条件)
{
    //条件があっている場合実行される
}

if文は、( )の中に書いてある条件が、真である場合に、{}内の処理を行います。

このソースコードの場合は、条件が(a % 2 == 0)でした。a%2というのはaという変数を2で割ったあまりという意味です。また、== というのは、右辺と左辺が等しいという意味です。

この条件は2で割り切れるかどうかを判断しているので、割り切れた場合の条件は真ということになり、{ } 内のprintf関数が実行されるというわけです。

色々な条件(関係演算子)

if文の条件の説明するときに、「== は右辺と左辺が同じだという意味」という説明をしました。このif文の条件に使用される == のことを関係演算子と呼びます。

関係演算子には、== 以外にも、いくつか種類があるので紹介したいと思います。

関係演算子意味
==a == baとbは等しい
!=a != baとbは等しくない
<a < baよりbが大きい
>a > bbよりaが大きい
<=a <= bbはa以上の大きさ
>=a >=baはb以上の大きさ

それでは実際に上記の関係演算子を使用して、偶数かどうか判定するソースコードを書き換えて見ます。

出力結果は、書き換える前のプログラムと変わりません。しかし、if文の条件を書き換えています。今回のコードは、関係演算子の != を使用して、割り切れない場合にif文の処理をさせる様にしてみました。

複数の条件分岐

次に説明するのが「else if」と「else」です。

else ifとelse

例えば、血液型占いをするc言語のプログラムを書いたとします。しかしif文だけだと、「ある血液型かどうか」しか判定することができず、2通りしか分岐できないので面白くありません。

そこで使うのが「else if」と「else」です。以下のプログラムをコンパイルして実行して見ましょう。

実行できましたか?

初めに「else if」と「else」の紹介をしたいと思います。

if(1つ目の条件)
{
    1つ目の条件が真の場合の処理
}
else if(2つ目の条件)
{
    2つ目の条件が真の場合の処理
}
else if(3つ目の条件)
{
    3つ目の条件が真の場合の処理
}
else    1〜3の条件が偽の場合の処理

この様に、「else if」と「else」は、1つ目のif文の条件が偽だった場合に、その下の「else if」に進み、その条件も偽だった場合に「else」へ進むという動きをします。

そのため、ソースコードを実行すると、A型だった場合はifの処理をして、そうでないときは、「else if」に進み、全ての条件が偽の場合に、「入力が間違っている」という表示をさせることが可能になっています。

複数の条件(論理演算子)

次に説明するのは、複雑な条件分岐を書くときに役に立つ論理演算子というものです。例えば、BMIを計算した後に、肥満型か痩せ型か判断するプログラムを作ってみましょう。

ちなみに、BMIは18.5未満が痩せすぎで18.5から25未満が適正体重、25以上が肥満です。

※長くなってしまうので、ここには、条件分岐の部分だけを書きます。

どうでしょう。条件分岐の中に条件分岐があったり、else ifの中にif文があったり、もうわけわかりませんよね?(笑)

こんな汚いコードはあとで見たときに混乱してしまいます。ということで、論理演算子を使用していい感じに書き変えたいと思います!!それが以下の条件文です。

「なんということでしょう!!」

論理演算子を使うことにより、とても綺麗に、しかも3文で書くことができました!これが論理演算子のすごいところです。上のコードでは、2つの条件(18.5以上と25未満)を以下の様に1つにまとめています。

(18.5 <= BMI && BMI < 25)

論理演算子は、複数の条件をまとめることができ、複雑な条件文を簡略化することができるのです。他にも種類があるので以下の表にまとめておきます!

//条件aと条件bがあるとします。

論理演算子意味
&&a && baかつb(AND)
||a || baもしくわb(OR)
!!aaでない(NOT)

switch文

最後に紹介するのがswicth文と呼ばれているもので、使うことが、たまにあるので、イメージだけ掴んでおきましょう!

switch文とは?

ちょうどいい例として、記事の頭の方で書いた、血液型占いのソースコードのif文をswitch文で書き直しましたのでコンパイルして、実行して見ましょう!

実行結果は、if文の時と同じになります。

それでは、switch文について説明をしていきます。まず、以下のコードを見てください。

switch (変数)
{
    case 0:
           変数が0の時に処理
           break;
    case 1:
           変数が1の時に処理
           break;
    case 2:
           変数が2の時に処理
           break;
    case N:
           変数がNの時に処理
           break;
    default:
           caseに当てはまらない時に処理
           break;
}

これがswitch文の主な使い方です。

switch(変数)に対応するcase 変数: のところに処理が飛び、その処理が終了するとswitch文から抜けます。また、対応するcase 変数が存在しない場合は、1番下のdefault:というところの処理が実行されます。

if → else if → else という流れにとてもよく似てますね!

break

上記のcaseの中に、break文というものが毎回書いてあります。このbreakというのは、今いる関数を抜けるという意味です。

switch文の中の処理をしている場合は、switch文のをとまで飛びます。

まとめ

ここまで、コンパイル、変数、条件文分岐などを習得しました。実は、プログラミングは、順次、条件分岐、ループという3つの動作が使えれば理論上できないことはないと言われています。順次は、普通にコンパイルして、実行すること。条件分岐はこの記事で習得しました。

ということは、あと1つ記事を読み勉強をすれば、c言語のプログラミングで出ないことがなくなるのです。!!!

ループの記事はこちら!!!

https://oretano.com/introduction-c-for-while