目次 閉じる
なぜ条件判断が必要なのか
上から書かれている順序通りに実行し、文がなくなれば終わりになるというプログラムでは、単純な処理しか実行できません。
少しでも複雑な処理をさせようとするためには、条件によって処理の内容を変えるようにします。
お金がある→焼肉定食、金がない→牛丼並のような、条件による判断が必要になってきます。
コンピュータの世界では、条件と言えば、数値に他ありません。
さらに具体的に言えば、2つの数値の比較こそが条件になります。
条件判断をする文
C言語には条件による判断を行う文、if文が用意されています。
if文は2つの数値の値を比較して、その結果を元に処理分けを行います。
if(条件式) 文;
if文による数値の比較は、非常に明快で単純です。すなわち、指定された数値が、0であるかを判断するだけです。
C言語では、条件による判定を行う場合、0を偽、0以外を真と呼んでいます。
if文では、指定された数値が真である(数値が0以外の)場合だけ横の文を実行します。
そうでない場合、文は飛ばされて、if文の後の文を実行します。
次のプログラムは、数値が真(数値が0以外)の時だけ、数値を実行します。
#include<stdio.h>
int main(){
int kazu =100;
if(kazu)printf("%d¥n",kazu);
return 0;
}
実行結果は以下。
100
このプログラムでは、int kazu =100;としてみますが、これは、宣言と同時に代入を同時に行う場合の書き方です。
この書き方は、変数の値を最初に決められるため、初期化とも呼ばれます。
初期化
変数の宣言と同時に数値を代入すること。
このプログラムでは、kazuの値を0にすると何も表示されませんが、それ以外の値にしたときは、その値が表示されます。
比較のための演算子
さっきの説明を読んだだけでは、if文はかなり使い道がない文に見えるかもしれません。
しかし、普通の計算とif文を組み合わせれば、もっと高度な比較が可能です。
例えば、値が同じ数同を減算すると、答えは当然0になります。
この性質を利用すれば、引き算によって値の判定が可能になります。
次のプログラムは、その性質を利用し、入力された値が100であるかを判断します。
#include<stdio.h>
int main(){
int kazu;
scanf("%d",&kazu);
if(kazu -100)printf("入力値は100ではありません。¥n");
return 0;
}
実行し、100を入力した場合の結果は、次の通りになります。
100 //入力したデータ
このプログラムを実行させて、100以外を入力した場合の結果は、次の通りになります。
99 //入力したデータ
入力値は100ではありません。
この方法をさらに複雑に応用すれば、非常に高度な比較も可能になります。
しかし、変数の値が100かどうかを調べるのに、減算しなければならないというのは不自然です。
そこでC言語には比較専用の演算子が用意されています。2つの数値が等しいかどうかを調べる場合には、==演算子を使用します。
この演算子は、2つの値が等しいときには結果が真になるという計算を行います。
次のプログラムは、==演算子で入力された値が100かどうかを調べる例です。
#include<stdio.h>
int main(){
int kazu;
scanf("%d",&kazu);
if(kazu ==100)printf("入力値は100です。¥n");
return 0;
}
このプログラムを実行し、100を入力した場合の結果は、以下のようになります。
100 //入力したデータ
入力値は100です。
100以外を入力した場合の実行結果は以下。
135 //入力したデータ
先ほどと表示・非表示の対応が反対ですが、ちゃんと判定が行われていますね。
本日はここまでです。次回はif文のより発展的な書き方について書きたいと思います。
ご覧いただき、ありがとうございました。