選択構造と条件式

プログラミングをするうえで欠かせないのが、「もし~ならば…する」という処理です。
これを「選択構造」といい、C言語では、if文を用いて書くことができます。

  if (条件式) {
    処理;
  }

「条件式」に当てはまれば、「処理」が実行されます。

条件式 – 比較演算子

記号数学的記述意味
===等しい
!=等しくない
<<左辺が右辺より小さい
>>左辺が右辺より大きい
<=左辺が右辺以下
>=左辺が右辺以上

例えば、「aとbが等しい」ことを確かめるには、「a == b」のように記述します。
このとき、左辺や右辺に式を記述することもできます。
例えば、「a + b == c + d」のように記述できます。

条件式 – 論理演算子

比較演算子を用いて記述した条件を「かつ(AND)」や「または(OR)」、「でない(NOT)」を用いて組み合わせることができます。

記号意味
&&かつ(AND)
||または(OR)
!でない(NOT)

例えば、「aとbが等しい かつ bとcが等しい」ことを確かめるには、「a == b && b == c」のように記述します。

演算子の優先順位

今まで学習した演算子には次のような優先順位があります。
表の上に行くほど、優先順位が高いです。

演算子
( )
++ — +(符号) -(符号)
* / %
+(加算) -(減算)
< > <= >=
== !=

条件式の書き換え

次の条件式を考えてみます。

12 <= a && a <= 27

この条件式の反対は、どのように書き換えられるでしょうか。
主に、次の2つの書き換え方があります。

  • !(12 <= a && a <= 27)
  • 12 > a || a > 27

実際、if文の条件を書くときは、elseを使って書くことで、条件式を1つだけ書けば済みますが、今後の学習につながる内容なので、理解しておいてください。

True(真) / False(偽)

条件式に当てはまると「True(真)」、条件に当てはまらないと「False(偽)」と評価されます。
そして、Trueと評価された条件式が書かれたブロックの中の処理が実行されます。

なお、C言語では、TrueとFalseは次のように定義されています。

  • True …0以外
  • False…0

このため、次のようなプログラムを書くこともできます。

  if (!a) {
    //aが0だったら処理が実行される
  }

else / else if

プログラミングをするとき、条件分岐が「もし~ならば…する」だけだと、不便なことが多いです。
「もし~ならば…する でなければ…する」という書き方があります。
それが、「else」です。

  if (a == 1) {
    //aが1の時だけ実行される
  } else {
    //aが1以外の時だけ実行される
  }

更に、「もし~ならば…する でなくて~ならば…する」という書き方もあります。

  if (a == 1) {
    //aが1の時だけ実行される
  } else if (a == 2) {
    //aが2の時だけ実行される
  } else if (a == 3) {
    //aが3の時だけ実行される
  } else {
    //それ以外だったら実行される
  }

このプログラムは、順に上から条件に当てはまるかどうかの判定が行われます。
そして、条件に当てはまったら、そのブロック内のプログラムが実行され、それ以降の条件式の評価は行われません。
つまり、例えば次のようなプログラムの場合、後ろの処理Bは絶対に実行されないことになります。

  if (a <= 0) {
    //処理A
  } else if (a == -1) {
    //処理B
  }

練習問題

1639 – [第3話]運動不足の高木くん – Hamako Online Judge
0009 – パスタ – Hamako Online Judge

[補足]
ターミナルで、[Ctrl]+[Shift]+[V]を押すことで、事前にコピーしたクリップボードの中身を貼り付けることができます。

このページは役に立ちましたか?
役に立った役に立たなかった