2005後期
情報グラフィックス論U
担当 鳥海有紀
授業資料 情報グラフィックス論U
戻る(アニメーションへの応用) 次へ(補足)

プログラムを書く3−条件文:if文を使う−

if文の基本
条件が2つある場合−if-else文−
条件が3つ以上ある場合−if-else if文−
剰余算を使ったif文


if文の基本

条件文は、ある指定した場合にプログラムを実行するように制御を行うためのものである。


#include <stdio.h>

int main(void)
{
    int  i;
    int  x;
    int  y;

    gopen(200, 200);
    for (i=0; i < 3; i++) {
        x = i * 20;
        y = 0;

        if (0 == i) { 
            gline(50+x, 50+y, 150+x, 150+y, 255, 0, 0);
        } 
    }
    gclose();

    return 0;
}

条件文は次のように書く


if  (条件式)  {
    文;
    :
}

構文がifで始まるので、if文とも言う。 ifに続く()内に条件式を書き込む。条件式が真(合ってる)であれば、{}で括られた部分の文を実行する。 条件式が偽(正しくない)であれば、{}の部分は実行せずに次にいく。

a < b aよりbが大きい
a > b aよりbが小さい
a == baとbが等しい
a <= baよりbが大きいか等しい
a >= baよりbが小さいか等しい
a != baとbが等しくない

条件式は2つの変数の大小を比較するときに使い、比較演算子(><==など)を使う。 条件式は結果が正しければ真(1)を返し、正しくなければ偽(1以外)を返す。 よく使う条件式は、次のものがある。





トップへ


条件が2つある場合−if-else文−


条件が2つあり、それぞれ別の処理をしたい場合は、elseを使う。


if  (条件式)  {
    文1;
    :
}
else {
    文2;
}

最初のif文の条件式に合わない状態(偽)では文2が実行される。
if文はforループの中だけでなく、どの位置でも記載することができる。 if文の{}内にはどんな文(ループ文やif文etc.)でも入れることができる。


#include <stdio.h>

int main(void)
{
    int  i;
    int  x;
    int  y;

    gopen(200, 200);
    for (i=0; i < 3; i++) {
        x = i * 20;
        y = 0;

        if (0 == i) { 
            gline(50+x, 50+y, 150+x, 150+y, 255, 0, 0);
        } 
	   else {
            gline(50+x, 50+y, 150+x, 150+y, 0, 255, 0);
        }
    }
    gclose();

    return 0;
}


トップへ


条件が3つ以上ある場合−if-else if文−

条件が2つ以上ある場合は、else ifを使う。一般に次のように書く。


#include <stdio.h>

int main(void)
{
    int  i;
    int  x;
    int  y;

    gopen(200, 200);
    for (i=0; i < 3; i++) {
        x = i * 20;
        y = 0;

        if (0 == i) {        /* 条件式1 */
            gline(50+x, 50+y, 150+x, 150+y, 255, 0, 0);    /*   文1  */
        } 
	else if (1 == i) {   /* 条件式2 */
            gline(50+x, 50+y, 150+x, 150+y, 0, 255, 0);    /*   文2  */
        }
	else {
            gline(50+x, 50+y, 150+x, 150+y, 0, 0, 255);    /*   文3  */
        }

    }
    gclose();

    return 0;
}

プログラムの進み方は次のようになる。

  1. if文に書かれた条件式1が真(合っている)かどうか調べる。
    1. 真であれば文1を実行して次に進む(他のelse if文、else文は行わない)。
    2. 偽(合っていない)であれば次のelse if文を調べる。
  2. else ifに書かれた条件式2に真かどうか調べる。
    1. 真であれば文2を実行して次に進む(他のelse if文、else文は行わない)。
    2. 偽であれば文3を実行する。
  3. 次の処理に進む

else if文はif文の後にいくつでも繋げることができる。

トップへ


剰余算を使ったif文


#include <stdio.h>

int main(void)
{
    int  i;
    int  x;
    int  y;

    gopen(200, 200);
    for (i=0; i < 10; i++) {
        x = i * 5;
        y = 0;

        if (0 == (i % 3)) {        /* 条件式1 */
            gline(50+x, 50+y, 150+x, 150+y, 255, 0, 0);    /*   文1  */
        } 
	else if (1 == (i % 3)) {   /* 条件式2 */
            gline(50+x, 50+y, 150+x, 150+y, 0, 255, 0);    /*   文2  */
        }
	else if (2 == (i % 3)) {
            gline(50+x, 50+y, 150+x, 150+y, 0, 0, 255);    /*   文3  */
        }

    }
    gclose();

    return 0;
}

剰余算(%)は余りを結果として出力する演算である。 i % 3の結果は3の余りの0か1か2となる。 この結果をif文の条件文に使う。 剰余算を使うとループの回数が多い場合でも指定したパターンを繰り返すようなループにすることができる。

トップへ


授業資料 情報グラフィックス論U 戻る(アニメーションへの応用) 次へ(補足)

Copyright 2002-2005 Yuki Toriumi