Login
Immutable PageDiscussionInfoAttachments
alstamber/Clanguage/if

MMA

一本調子のプログラムには飽きた

今まで紹介してきたプログラムはすべて一本調子のプログラムです。
どういうことかというと今まで書いてきたプログラムはみんな上から下まで順番に実行して終わり、だったわけです。
しかしプログラムの本領は、 「○○のときはこれをして、××の時はこれをする」とか「同じ事を何回も繰り返す」みたいな複雑な処理にこそあるわけです。
ここからはそういった複雑な制御について学んでいきます。

条件式

そのために条件式というものを覚えないといけません。例えば「○○のときはこれをして、××の時はこれをする」の「○○のときは」に当たる部分です。
C言語はこういった条件も数式のような式で表すようにします。
条件式を書くのに使うのが「関係演算子」というものです。別に言葉は覚えなくていいので、役割だけ覚えましょう。この演算子は2つのものの大小関係を比較する演算子です。
実際に例を挙げれば

演算子

意味

>

より大きい

>=

以上

<

より小さい

<=

以下

==

等しい

!=

等しくない

式全体が正しければ、正しくなければといいます。
少々難しいと思うので実際に見て見ることにします。

   1 int a = 10;
   2 int b = 20;

上の状態で下の条件式は真でしょうか、偽でしょうか。

a < b
a > b
a == b
a != b

答えを言うと、それぞれ真・偽・偽・真となります。
この条件式を使うことで例えば「aという変数が40より大きければ」という条件は「aという変数が40より大きい という式が真ならば」という感じで表せるようになるわけです。

if文

それでは関係演算子を使った条件式を用いて実際に複雑な制御をやってみましょう。
まず覚えるのはif文というものです。if文は次のような形をしています。

   1 if (条件式){
   2     〜〜
   3 }

これで、「もし条件式が真ならば、〜〜を実行する」という意味になります。偽ならば何もしません。
例えば

   1 if (a > 40){
   2     printf("aは40より大きい\n");
   3 }

と書けば、「もしaという変数が40より大きければ、printf("aは40より大きい\n");を実行する」という意味です。

else 文

真の時の動作だけじゃなくて、偽の時の動作も決めたい時があります。そういう時はelseを使います。

   1 if (条件式){
   2  //真の時に実行される場所
   3 }else{
   4  //偽の時に実行される場所
   5 }

例を挙げれば、

   1 if (a > 40){
   2     printf("aは40より大きい\n");
   3 }else{
   4     printf("aは40より大きくない\n");
   5 }

というかんじになります。

else if 文

if文だと単純な二分岐しかできません。もっと複雑な分岐をしたいときはelse if文を使います。

   1 if (条件式1){
   2     //条件式1に当てはまった時に実行
   3 }else if (条件式2){
   4     //条件式1には当てはまらず、条件式2に当てはまった時に実行
   5 }else{
   6     //条件式1にも条件式2にも当てはまらなかった時に実行
   7 } 

else ifは何個でもくっつけられます。例えば

   1 if (条件式1){
   2     //条件式1に当てはまった時に実行
   3 }else if (条件式2){
   4     //条件式1には当てはまらず、条件式2に当てはまった時に実行
   5 }else if (条件式3){
   6     //条件式1,2には当てはまらず、条件式3に当てはまった時に実行
   7 }else if (条件式4){
   8     //条件式1,2,3には当てはまらず、条件式4に当てはまった時に実行
   9 }else{
  10     //条件式1,2,3,4に当てはまらなかった時に実行
  11 } 

入れ子のif

ifの中にifを入れることも出来ます。何を言っているのかよくわからないと思うので実例を示します。

   1 if (条件式1){
   2     if (条件式2){
   3         //条件式1,2に当てはまった時に実行
   4     }else{
   5         //条件式1には当てはまって、条件式2には当てはまらなかったときに実行
   6     }
   7 }else{
   8     //条件式1に当てはまらなかった時に実行
   9 } 

こんな感じで、if文の中身を実行しているときにif文を実行することも可能です。
理論上はいくらでもなかにif文を入れられますが、あんまりやり過ぎると醜くなるので、程々が重要です。

論理演算子

複数の条件式を組み合わせて、更に複雑な条件式を作ることができます。
その時に使うのが、論理演算子です。代表的なのを挙げると、

種類

意味

&&

かつ

||

または

!

〜でない

たとえば、

(a > 40) && (c <= 10) //aが40より大きい かつ cが10以下

というふうに使います。

演習問題

問一 次の仕様を満たすプログラムを作りなさい。

GPAは? 0.55
留年と向き合えますか

GPAは? 10
真面目に答えてください

GPAは? 4
あなたが神か

GPAは? 2.77
この調子で行きましょう

alstamber/Clanguage/if (last edited 2011-10-09 06:40:22 by alstamber)