連載
» 2014年05月21日 10時00分 公開

【問題3】「選択処理」とif文を理解しよう完全マスター! 組み込みC言語プログラミング(4)(2/2 ページ)

[横田一弘 埼玉県立新座総合技術高等学校 教諭,MONOist]
前のページへ 1|2       

if文の使い方

 C言語で選択処理を書くには、if文を使います。if文の使い方には、次の「双岐選択(IF THEN ELSE型)」と「単岐選択(IF THEN型)」があります。

 双岐選択では条件が満たしているかいないかによって異なる処理を実行するのに対し、単岐選択では条件を満たす場合のみ処理を実行します。

図4 図4 双岐選択と単岐選択の違い

 if文の構文規則は次のようになっています。

if(式)文(1)else文(2)

または

if(式)文(1)



 if文は式に条件を書きます。もし条件を満たす場合は最初の文(1)を実行し、条件を満たさない場合はelseに続く文(2)を実行します。例として、

if (a > b) {
        max = a;
}else {
        max = b;
}

は双岐選択、

if (c > max) {
        max = c;
}

は単岐選択です。

 ここでC言語の文(statement)について、詳しく説明しましょう。C言語の文の構文規則は、次のようになっています。

複合文

または

式文

または

空文

または

if文

または

switch文

または

while文

または ……



 最初の複合文は、文の集合を波かっこ({と})で囲んだもので、複数の文を1つの文としてまとめる働きをします。複合文はブロックとも呼ばれます。

 式文は、代入式や関数呼び出し式の後ろにセミコロン(;)を付けたものです。if文において、複合文の中が1つの文の場合は波かっこを省略できるものと思えますが、正確にはCコンパイラは複合文も式文も、文として解釈しているだけなのです。

 空文はセミコロン(;)だけを書きます。空文は何も処理しないことを意味します。何もないという意味なので、アセンブラのNOP命令とは異質なものです。

 if文やswitch文、while文などの制御文も1つの文です。この構文規則によって、制御文の入れ子構造が可能になります。その例として、if文の中にif文を入れた場合の、課題3のプログラム(max3b.c)が以下となります。


#include <stdio.h>
int main(void)
{
    int a, b, c;
    printf("3つの整数を入力してください->");
    scanf("%d%d%d", &a, &b, &c);
    if (a > b)
        if (c > a)
            printf("最大値は%dです。\n", c);
        else
            printf("最大値は%dです。\n", a);
    else
        if (c > b)
            printf("最大値は%dです。\n", c);
        else
            printf("最大値は%dです。\n", b);
}
 
プログラム2 「max3b.c」

宿題4:奇数偶数の判別

 それでは、次回の宿題です。

宿題4:

整数を入力し、それが奇数であるか偶数であるかを表示するプログラムを作成してください。


解答と解説は次回



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.