Macintosh (OS 10.15 Catalina)でC言語をプログラミングする方法を解説していきます。
この記事の対象者
前回は画面に文字を出力する、printf を解説しました。今回は1歩踏みこんで、プログラミングには欠かせない条件分岐を解説していきます。
前回の記事はこちら↓
条件分岐の重要性
プログラミングにおいて条件分岐は欠かせません。むしろこれさえ覚えれば、処理的には何でも出来ます。
条件分岐は人間の行動にも深く結びついていることなのでイメージもしやすいと思います。
例えば、家で牛乳を飲んでいたとしましょう(牛乳嫌いな人すみません)。だんだんと少なくなってきたら買い足しますよね?
この「買い足す」という行動に至る条件(理由)として、「残りが少なくなってきた」ことが挙げられます。少なくなってきたから買い足す、これが条件分岐と行動です。
実際にプログラミングでは、「残りが少なくなってきた」という条件分岐は難しく、具体的に「残りが2割以下」のような指定が必要になります。が、大まかな考え方は同じです。
まず「変数」の理解
ソースコードには必ずと言っていいほど「変数」というものが登場します。この変数とは何かというと、なにかしら(なんでもいいですが)値を入れておく「箱」のようなものです。
例えばこのようなコードがあったとして、
"number"の部分が変数です。"int"の部分は「変数の型」で、整数を表します。が、まあ"int"はひとまずおまじないとして覚えておいてください(笑)。
このコードはプログラミングをまだ始めたばかりの人から見ると、数学の恒等式のように見えると思います。"number"が数学でよく出てくる"x"(エックス)みたいな感じですね。つまり"number"っていうのが0(ゼロ)なんだと。
その理解でも一応あっているんですが、プログラミングでは少しニュアンスが違います。この場合は「"number"を0(ゼロ)にした」というニュアンスが正しいです。この処理は代入と呼ばれてます。
数学と似てはいますが、異なるものなので数学苦手な人でも頑張ってほしいです(笑)。
コーディング
if 文には条件式を書く箇所があり、それを書くにあたって比較演算子というものが登場します。そんなに種類も多くないので覚えるのが手っ取り早いですが、少し後ろの方で説明します。とりあえずコードの方から見てみましょう。
if
if(条件式){処理}
もし〜だったら処理をする、というプログラム(命令文)です。例えば、"number"の値が10よりも大きい場合に処理をするプログラムはこのように書きます。
{
printf("numberは、10よりも上です。\r\n");
}
printf は前回やったので大丈夫ですね。
else
if(条件式){処理①}
else{処理②}
もし〜だったら処理①をする、それ以外の場合は処理②をする、というプログラムです。先ほどの if 文の下に続けて書く形で else を書きます。
{
printf("numberは、10よりも上です。\r\n");
}
else
{
printf("numberは、10以下の数字です。\r\n");
}
"number"が10以下の場合に、else の中の処理を行ます。
else if
if(条件式){処理①}
else if(条件式){処理②}
もし〜だったら処理①をする、そうじゃなくて〜だったら処理②をする、というプログラムです。最初の if 文の下に続けて書く形で else if を書きます。
{
printf("numberは、10よりも上です。\r\n");
}
else if (number >= 5)
{
printf("numberは、5以上です。\r\n");
}
"number"が5以上の場合に、else if の中の処理をします。この時、"number"が10を超えると最初の if の中の処理しかせず、else if の処理は行わないので注意です。
- "number"が11の場合:「numberは、10よりも上です。」を出力して終了
- "number"が7の場合:「numberは、5以上です。」を出力して終了
比較演算子の種類
演算子 | 意味 |
---|---|
> | 〜よりも大きい |
< | 〜よりも小さい |
>= | 〜以上 |
< | 〜以下 |
== | 〜と等しい |
!= | 〜ではない(等しくない) |
ネスト?
条件分岐をやっていくと、ネストという言葉に巡り合うことになります。
ネストとは「入れ子」のことであり、条件分岐処理においてはif文の中にまたif文がある状態です。この中にある方のif文がネストされた(した)if文と表現されます。
if(条件式){
if(条件式){処理}
}
まあ人間生活で例えると、朝9時に家を出る人がいたとしましょう。時刻が来たので家を出ます。ここが1つ目のif文だとします。
外へ出ると雨が降っているのに気がついたので、傘を持って外出していきました。この「傘をもつ」というのが2つ目のif文があったことによる行動結果です。
この一連の流れについて、より詳しく解説します。
1つ目のif文では「朝9時に家を出る」という条件分岐なので、単純に9時になったら家を出ようとします。
2つ目のif文は「外出する時に雨が降っていたら傘を持って出る」という条件分岐です。なので雨が降ってなければ当然、傘は持っていきません。
ここで注意が必要なのが、雪が降っていても傘を持っていくことにはならない、ということです。この説明では敢えてそういう条件分岐にしましたが、実際にプログラムを書いているとこういった考慮不足が出てきます。要はバグですね(笑)。
そしてバグを出さないために、プログラムのテストを行うのが一般的なのですが、それはまた別の機会に。
続きはこちら