皆さんこんばんにちは、ユウです。
今回はC言語の選択処理について紹介したいと思います。
以前の記事では、データの出力と式の計算を取り扱っています。
この記事で分からない文などが合った場合はそちらの方を見てみて下さい。
選択処理は様々な条件を考え、それに併せて処理を行います。
かなり使う文となりますので覚えておくようにして下さい。選択処理はそこまで難しくなく、簡単に身につくので身構えなくて大丈夫です。
今回もコードはコピペして進めていくようにして下さい。コピペする際の注意点なのですが、「¥n」の部分がこのページ内では「\n」という表記になっていますが、実際にC言語でコードを書く際は「¥n」と表記されます。
必ずファイルを作りコンパイルしてファイルを実行させるようにして下さい。
if文と if ~ else文
if 文はかなり使用頻度が多い文です。使えると応用性がかなり広がるのでぜひ、マスターして下さい。
プログラミングで重要な考えとなるのですが、
プログラムの処理は上から順に動いていきます。その考え方を意識して勉強すると理解しやすくなります。
if 文の書き方は他に単文という書き方がありますが、今回はとりあえずコードに書いている表記の仕方で覚えてもらえればOKです。
実行結果
<解説>
8行目:if 文による条件の分岐
if 文の()の中身を条件式と言います。条件式は「<」や「>」のような関係演算子(表1)というもので書いていきます。
また、大小関係だけではなく等しい場合や等しくない場合の演算子もありそれらを等価演算子(表2)といいます。
条件式が成立した場合を真(true)、成立しない場合を偽(false)といいます。
if 文は条件式にあった条件の場合に、与えられた命令を実行する文です。
今回のコードでは、変数 aに代入された整数が変数 bに代入されている整数より大きい場合に、変数 aに代入された整数の方が大きいというように出力することになっています。
もし、変数 bの値が大きい場合はif 文の中身は無視され次の処理に移っていきます。
10行目:条件式以外の分岐
else は前の if 文の条件式で真にならなかった場合に最後に処理される文です。
今回のコードでは「a > b」が偽だった場合 else に移り、変数 bに代入された値の方が大きいときの処理に移ります。
表1 関係演算子
関係演算子 | 例 | 説明 |
< | a < b | aがbより小さい場合、真となる |
<= | a <= b | aがb以下の場合、真となる |
> | a > b | aがbよりも大きい場合、真となる |
>= | a >= b | aがb以上の場合、真となる |
表2 等価演算子
等価演算子 | 例 | 説明 |
== | a == b | aとbが等しい場合、真となる |
!= | a != b | aとbが等しくない場合、真となる |
else if文
else if 文は先ほど行った else の部分にまた、if 文を作るイメージです。
少しややこしいですがこの処理の仕方を覚えると、複数の条件分岐をスマートに記述することが出来るので、ぜひこのやり方も覚えておきましょう。
実行結果
<解説>
15行目:論理演算子
「&&」は両隣の式がどちらとも成り立つ場合に、真となります。
「&&」などは論理演算子と言われます。論理演算子は3つ存在しており複数の条件式を組み合わせる事が出来ます。表3にまとめているので後から見て下さい。
17行目:else if 文
以下のコードを見て下さい。
この項の最初に書いてもらった、else if 文はこのコードを短縮して書いたものです。
ここで注目してほしいのは、else の中に更に if 文があることです。
このように書くことで、変数a に対しての処理が終わった後に、b と c に対してのみの条件分岐を行えるようになります。
表3 論理演算子
演算子 | 演算 | 例 | 説明 |
&& | 論理積 | (式1)&&(式2) | (式1)と(式2)が同時に成り立つ場合、真となる |
|| | 論理和 | (式1)||(式2) | (式1)と(式2)のうち、少なくともどちらかが成り立つ場合、真となる |
! | 否定 | !(式) | (式)が成り立つ場合、偽となり、(式)が成り立たない場合真となる |
switch文
if 文が2方向に分岐させるのに対して、switch 文は多方向に分岐させることが出来ます。
実行結果
<解説>
15行目:switch 文
入力された値によって、処理を振り分けていきます。
ここで()の中身はint型(整数)のnを使っていますが、通常はint型やchar型を使うようにします。
16~20行目:n が1の場合の処理
case で値が1の場合に、この行間の処理を行っていきます。
switch 文は「break;」によって、処理を終了しswitch 文から抜け出し、次の処理に移ります。
break;を書き忘れると、次のcaseを実行してしまうエラーが出るので必ず書くようにしましょう。
確かめるために、break;を抜いてから実行してみてはどうでしょうか。
31行目:n が1,2,3以外の場合の処理
nが1,2,3以外の場合の行き先は「default」と書きます。
この行を実行し終わると、switch文も終了するので、break; は省略できます。
最後に
今回は条件分岐を紹介してきました。
この条件分岐をマスターできるようになると、かなり出来る事が増えてきます。
ぜひ、今回紹介したコード以外を自分で考えて書いてみてはどうでしょうか!
今回は以上となります。
最後まで読んでいただきありがとうございました!
この記事の続きは以下のリンクから行けます。
C言語学習についてまとめている記事があるので、そちらも見ていただくと嬉しいです。