★基本制御文★


どの言語も基本的な制御のための命令があります。

C言語に限らず、(構造化)プログラムは、次の3つの基本的な形式から成り立っています。


・順次

最も基本的な構造です。

これまでに記載したサンプルもこの構造で書かれています。

順次とは、プログラムが書かれた順番に処理を行っていくということです。

つまり、上から順に処理が進んでいくという構造です。

・分岐

その名の通り、プログラムを分岐させる構造です。

色々な命令がありますが、基本的には条件に応じて、実行するプログラムを変更するという構造です。

・反復

これも名前の通り、繰り返して実行するという構造です。

ただし、単純に同じことを繰り返すのではなく、工夫次第で様々なことが出来るようになります。

・分岐構造


順次構造については、説明するまでも無く、これまで行ってきた構造ですので、分岐構造から説明を始めます。

分岐とは、(前述しましたが)条件に応じて、実行するプログラムを変更する構造です。

この分岐構造をしっかりと理解すれば、皆さんがC言語で作れるプログラムが飛躍的に拡がります。

(その分、工夫のしどころも多くなってきますが・・・)

代表的な制御文は「if」文です。

「if」は、英語での意味の通り、「もしも」という意味です。

制御文には「文法」の理解も必要ですので、まずは「文法」から説明します。


・if文の文法

if (条件) {
    条件が成立している時の処理
}

まずは、簡単な形から始めます。

「もしも」括弧内の「条件」が「成立」していれば、中括弧「{}」内の「処理」を行う、という形です。

抽象的なので、具体的なプログラムを書きます。


<sample program 007-01>

#include <stdio.h>

int main(void)
{
    int data = 20;

    if (data < 50) {
        printf("dataは50より小さいです。\n");
    }

    return 0;
}

<実行結果>

dataは50より小さいです。
続行するには何かキーを押してください・・・

変数「data」の中身は「20」です。

if文の部分は、

もしも、dataの中身が50未満であれば、「dataは50より小さいです。」という文字列を表示する

という内容になっています。

当然、変数「data」の中身は50未満ですから、きちんとメッセージが表示されます。

では、条件が成立しなければどうなるのでしょうか?


<sample program 007-02>

#include <stdio.h>

int main(void)
{
    int data = 60;

    if (data < 50) {
        printf("dataは50より小さいです。\n");
    }

    return 0;
}

<実行結果>

続行するには何かキーを押してください・・・

実行結果には、何も表示されていません。

つまり、「条件」が「成立していなければ」、何もしないのです。

コンピュータは本当に便利なのか?」にも書きましたが、コンピュータは指示されていないことは実行しません

逆に、指示があれば間違っていても実行します

こうやって、「条件」が「成立している時」と「成立していない時」で実行するプログラムを変更しているのです。


・条件


では、色々と具体例を書く前に「条件」について説明します。

上の例では、変数「data」の中身が「50」未満であれば、という条件を設定しています。

他には、どのような条件の設定が可能なのでしょうか?

「未満」が使えるのであれば、「以上」とか「以下」とか「等しい」とか「等しくない」とかも使えそうですよね。

ここで、どういったものが使えるのかを表にまとめてみます。

記号(演算子) 関係 説明
< a < b aはb未満
> a > b aはbより大きい
<= a <= b aはb以下
>= a >= b aはb以上
== a == b aはbと等しい
!= a != b aはbと等しくない

基本的には、この6つの演算子を使います。

これらの「条件」が、「成立している」か「成立していない」かで実行するプログラムを変化させるのです。

ここで、注目して欲しいことがいくつかあります。

まず、「以上」や「以下」ですが、「>=(以上)」、「<=(以下)」という演算子になります。

「=>」や「=<」では、エラーになります。(決まりごとですから、覚えてください)

また、「等しい」は「=(イコール)」ではありません。

これは、前に書きましたが、「=」演算子は「代入する」という意味しかありません。

「等しい」は「==」演算子を使います。

これは、初心者や別の言語からC言語に移って来た方がよく間違えることです。(回避方法はありますが、慣れてくると間違えなくなります)

「等しくない」は「!=(ノットイコール)」と書きます。

これも言語によって書き方は色々ですが、C言語では、「!=」です。

では、サンプルを書きましょう。


<sample program 007-03>

#include <stdio.h>

int main(void)
{
    int data = 60;

    if (data > 50) {
        printf("dataは50より大きいです。\n");
    }

    return 0;
}

<実行結果>

dataは50より大きいです。
続行するには何かキーを押してください・・・

<sample program 007-04>

#include <stdio.h>

int main(void)
{
    int data = 50;

    if (data <= 50) {
        printf("dataは50より以下です。\n");
    }

    return 0;
}

<実行結果>

dataは50より以下です。
続行するには何かキーを押してください・・・

<sample program 007-05>

#include <stdio.h>

int main(void)
{
    int data = 50;

    if (data >= 50) {
        printf("dataは50以上です。\n");
    }

    return 0;
}

<実行結果>

dataは50以上です。
続行するには何かキーを押してください・・・

<sample program 007-06>

#include <stdio.h>

int main(void)
{
    int data = 50;

    if (data == 50) {
        printf("dataは50です。\n");
    }

    return 0;
}

<実行結果>

dataは50です。
続行するには何かキーを押してください・・・

<sample program 007-07>

#include <stdio.h>

int main(void)
{
    int data = 40;

    if (data != 50) {
        printf("dataは50ではありません。\n");
    }

    return 0;
}

<実行結果>

dataは50ではありません。
続行するには何かキーを押してください・・・

とりあえず、「成立している」ようにプログラムを書いてみましたが、「成立していない」時は全部何も表示されません。

ここで、掲載したサンプルは、単純に「使い方」を書いただけです。

次は、これらを使って、「意味のある?」プログラムを書いていきます。


次へ

戻る

目次へ