アットウィキロゴ
 

2.1 条件分岐(if文)


 さて、プログラムのもっとも重要な所といえる条件分岐の方法を教えようと思います。

 まずは簡単な条件文から行きましょう。その内容は

「〜の時は…を実行しろ」

というものです。

 そこで使用するというのがif命令というものです。
 書き方は以下のようになっております。

if(条件式){
   条件式が成立するときに実行する内容。
}

 さて、では非常に簡単なプログラムをやってもらいましょう。
  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. int a;
  5.  
  6. scanf("%d",&a);
  7. if(a>20){
  8.   printf("0より大きい数が入力されました。\n");
  9. }
  10. }
  11.  
 動きとしては、
  1. 整数型変数aを宣言する。
  2. 端末から値を読み込ませてその値をaに格納する。
  3. if文により、整数型変数aの値がが20よりも大きかったら、「0より大きい数が入力されました。」と表示する。

 以上です。このようにしてif文は使います。
 括弧内に書いた条件によって命令が実行される否かが判断されると思います。

 では、条件指定で使われている代表的な演算子を以下に挙げようと思います。
a及びbは式
a<b aがbより小さい
a>b aがbより大さい
a<=b aがb以下
a>=b aがb以上
a==b aとbが等しい
a!=b aとbが等しくない

 一つ注意して欲しいのは、==演算子=演算子が混同して間違ったプログラムを作成してしまいがちであることです。
 ==は等価判定、=は代入という具合に意味は全く違うので間違えないようにしてください。

 以上のように、条件を指定するのに使う演算子のことを条件演算子と呼び、a<32のように成立するか否かによってその結果が異なる式を条件式と呼びます。

 では、以上のような演算子を使うとa<32とかa>10とかの大小による条件して尾をすることが可能です。
 しかし、以下の様な条件指定を作るとき どうすればいいか…

{10<a<32

 この条件指定だと、最小値と同時に最大値も指定しなければいけなくなります。
 当然何も知らない方は以下のように書くことだと思います。
if(10<a<32){~~~}
 しかしこれは、C言語の記述上通用しません。というのも基本的にif文の条件をしてする括弧内に書くことができる条件式はひとつだけなので、これは文法違反となりコンパイルエラーとなります。

 そこで、やる方法というのが複数の条件式をひとつの条件式にまとめるという手法です。
 そこでまた新たに以下に示した3つの演算子を使用します。
 (※A及びBは条件式及び変数など)
A&&B AかつB
A||B AまたはB
!A Aでない

 これらの演算子を使用したら、複数の条件式をひとつにまとめることが出来ます。
 では、以下の例を見てください。

  1. #include <stdio.h>
  2.  
  3. int main(void){
  4. int i,j;
  5.  
  6. scanf("%d %d",&i,&j);
  7.  
  8. if(i<=20&&i>=10){printf("iの値は10≦i≦20\n");}
  9. if(i>20||i<10){printf("iの値は10より小さいか20よりも大きい\n");}
  10.  
  11. if(i!=j&&i>20&&j<32){/*まとめあげられる条件式は3つ以上も可能*/
  12. printf("iが20より大きくjが32より小さくi≠j\n");
  13. }
  14.  

 このプログラムの解説は… ソースに書いたようなものですねw ^^;
最終更新:2010年02月25日 22:35