ベイジアン研究所

技術(人工知能、数学等)と心理の話をしています。

【C言語入門】for文、while文編

0. プログラムの流れの繰り返し
プログラミングは1回の流れで終了せずに、何度も同じ流れを繰り返させる事ができる。これを用いる事で作業を大幅に自動化させる事ができる。例えば、

#include <stdio.h>

int main(void)
{
    int i=1, j=1;

    for (i=1; i<10; i++) {
        for (j=1; j<10; j++) {
            print("%d¥n", i*j);
        }
    }

    return 0;
}

で、九九の表を書く事ができる。

1. while文
while文は次の形式で書かれる。

while (式) 文;

(式)をループ本体と言い、この式が非ゼロである限り文が何度も実行される。 例:

#include <stdio.h>

int main(void)
{
    int i = 1;
    while (i<=10) {
    printf("%d¥n", i);
    i++
    }
    
    return 0;
}

i++は、i=i+1と大体同じ意味で、iが10になるまで、iを一つづつ増やしながら表示する。 f:id:camelsan:20200921195338p:plain

2. do文
do文も繰り返しに用いる形式である。次の形式で書かれる。

do 文 while (式);

()内の式(制御式)を評価した値が非ゼロである限り、文を繰り返し実行する。

  • do文とwhile文の違い
    do文とwhile文はほぼ同じ内容だが、微妙に異なる点がある。それは後判定か前判定かである。
    do文は、文を実行してから、式の判定を行う。すなわち少なくとも一回は文が実行される。これに対して、while文は先に式を判定してから、文が実行される。この場合一度も文が実行されない場合がある。 f:id:camelsan:20200921201815p:plain

3. for文
for文は、よく次の形式で紹介される事が多い。

for (i=1; i<=10; i++);

この形式で覚えると、応用が効かない、と私は思う。次の形式で理解するべきである。

for (式1; 式2; 式3) 文;

式1 : "前処理"として評価・実行。ただし実行は1度のみ。
式2 : "継続条件"である制御式。これが非ゼロであれば文を実行。(省略すると無限ループ)
式3 : "次の繰り返しの準備"を実行。

for (i=1; i<=10; i++);

の例で説明すると、
式1(i=1) : まず最初だけiを1で初期化。
式2(i<=10) : iが10以下かどうか判定。これが非ゼロであれば後の文を実行。
式3(i++) : 文を実行した後、次のループの準備のため、iの値を一つ上げる。
このようなアルゴリズム的な理解で、少し形式が変わった場合でも対応できる。 f:id:camelsan:20200921204107p:plain

do文、while文、for文などのプログラムの流れを繰り返す文を、繰り返し文と呼ぶ。