博士

次はif文の書き方じゃ☆


ぷうさん「?」

あれ~?博士~!前にもif文ってやらなかったっけ!?


博士「(^^♪」

ちゃんと覚えとったか。一日目・その二で教えたのう。
じゃがあれはさわりだけなのじゃ。
これからが本番じゃぞい。


ぷうさん

えー!!

まずは簡単な省略方からじゃ

博士「ここをチェックじゃ」

まずは前のif文を見てから、下のif文をみるのじゃ!

if文の省略文プログラム

#include <stdio.h>
main()
{
   int a=0;
   if(a) printf("a\n");
   else printf("x\n");
}

ぷうさん「?」

何、このif文は?条件がaだけ?・・・実行文が{ }で囲んでないじゃない?


博士「Good!」

そうなんじゃ。
実は、実行文が単文の時だけ{ }は省略できるんじゃ。
勿論、複文の時は囲まないといけないんじゃがな。


ぷうさん「OK」

へー、ここでもカットできるんだ~。


博士「ここをチェックじゃ」

条件式がなくただ単に変数だけ書いてあるのは、その値が0以外なら真となって文1を、
0ならば偽となって文2を実行するんじゃよ。elseの次のが文2じゃぞ。

{ }の省略はwhile文やfor文などにでも言えるんじゃ。


ぷうさん

ふ~ん、そうなん?!

次はif-else文じゃ

多重分岐if文プログラムの書き方

if ( /*式1*/ )
    文1;
if ( /*式2*/ )
    文2;
if ( /*式3*/ )
    文3;
else
    文4;

チェックポイント

フローチャート「if-else文」








if文は多重に(入れ子にして)使うことができるんじゃが、多方向に分岐する場合によく使われるのがこの『else-if』文じゃ。

if-elseサンプル文

include <stdio.h>
main()
{
   int a;
   for (a=0;a<=5;a++) {
      if (a==1)
         printf("case2 a=%d\n",a);
      if (a==2)
         printf("case2 a=%d\n",a);
      if (a==3)
         printf("case3 a=%d\n",a);
      else
         printf("case4 a=%d\n",a);
   }
}

実行結果

case4 a=0
case1 a=1
case2 a=2
case3 a=3
case4 a=4
case5 a=4

論理演算子を使って条件式を表記

博士「ここをチェックじゃ」

if文などの条件式には論理演算子を使って条件を記述することもできるんじゃぞ。

&&…AND(論理積)
例.a=1かつb=2の場合
a==1 && b==2


||…OR(論理和)
例.a=1またはb=2の場合
a==1 || b==2


!…NOT(論理否定)
例.(a=1またはb=2)でない場合
!(a==1 || b==2)

サンプル &&を使ったプログラム

include <stdio.h>
main()
{
   int a;
   for (a=0;a<=5;a++) {
      if (1<=1 && a<=3)
         printf("case1 a=%d\n",a);
      else
         printf("case2 a=%d\n",a);
   }
}

実行結果

case2 a=0
case1 a=1
case1 a=2
case1 a=3
case2 a=4
case2 a=5

博士「ここをチェックじゃ」

多方向分岐の制御には、このelse-if文の他に、switch文も用意されておるぞい。
switch文はif文と分岐の仕方がかわってくるんじゃが・・・。(チラリ)


困った顔のぷうさん

え、こんがらがりそう。
ていうか絶対こんがらがる!!

その三 switch文の書き方へ

三日目 C言語らしい書き方 目次

二日目へ

ぷうさんの七日間戦争 三日目

四日目へ