カテゴリー
C

C(Step2-2)

繰り返し処理

同じ処理を何度も繰り返す「繰り返し処理」は、コンピュータの意味のある利用に欠かせない処理です。人間がやたら時間がかかる大量な作業もプログラムでコンピュータにさせることができるようになります。

決まった回数の繰り返し(for文)

まずは、最も基本的な繰り返し処理を理解しましょう。次のプログラムを実行してみましょう。

#include <stdio.h>

int main(){
    double inch, cm;
    int i; //100まで数えるための変数を用意
    inch = 2.54;

    for(i = 1; i <= 100; i++){
        cm = i*inch;
        printf("%3d inch : %.2lf\n", i, cm);
    }
    return(0);
}
sample2-2.1実行結果

このプログラムでは、1inchから100inchまでの対応表を作成しています。しかし、このプログラムでは、100inchまでを少ない処理で実現しています。繰り返し処理の記述内を見ていきましょう。

for(i = 1; i <= 100; i++){
        cm = i*inch;
        printf("%3d inch : %.2lf\n", i, cm);
    }

この記述内には計算1回、表示1回という記述しかないですが、実行すると100回分の処理を行ってくれます。これは、for(フォア)文を使っているためです。この記述によって繰り返し処理を実現できます。

繰り返し処理の詳細(for文)

■for文の書き方
for(初期値; 条件; 変化)
{
     [処理];
}
  • 多くの場合、初期値には「X = 0」、条件には「X < Xの最大値」、変化には「X++」と記述し、Xの最大値の回数だけ[処理]をX回繰り返す
  • はじめに条件を満たさない時には、[処理]は1度も実行されない
  • 条件を省略した場合、[処理]を無限に繰り返す「無限ループ」となる
  • [処理]の内容が1つの演算式、またはひとまとまりの文だけの場合{ }を省略できる

for文の記述はどのように実行されていくか処理の流れも以下にまとめておきます。

[処理1] -①
for(i = 0; i < 5; i++) -②
{
    [処理2]; -③
}
[処理3] -④

○○となるまで繰り返す(while文)

繰り返し処理の中には、繰り返しの初期条件や繰り返しの中で利用する変数の変化を自由に決めることができる記述方法があります。「条件が○○となるまで何度でも繰り返す」という記述です。

次のプログラムを実行し、理解を深めましょう。

#include <stdio.h>

int main(){
    int num, total;

    /*それぞれの変数に初期値を代入する*/
    num = -1;
    total = 0;

    /*条件式が成り立っている間、処理を繰り返す*/
    while (num!=0){
        printf("整数値を入力してください\n");
        scanf("%d", &num);

        total = total + num;
        printf("これまでの合計:%d\n", total);
    }
    return(0);
}
sample2-2.2実行結果

サンプルプログラム中の以下の部分が繰り返し処理を記述している部分です。

/*条件式が成り立っている間、処理を繰り返す*/
    while (num!=0){
        printf("整数値を入力してください\n");
        scanf("%d", &num);

        total = total + num;
        printf("これまでの合計:%d\n", total);
    }

whileという記述を使って繰り返し処理を実現しています。これをwhile(ホワイル)文といいます。for文と似た構造ですが、それよりも記述が少なくなっています。上の処理では、numの値が0でない限り繰り返す記述になっています。すなわち、while文では、繰り返しをする条件だけを与えることで繰り返し処理を記述することができます。

繰り返し処理の詳細(while文)

■while文の書き方
while(条件)
{
     [処理];
}
  • 条件が成り立つ間、何度でも[処理]を繰り返す
  • [処理]の内容が1つの演算式、またはひとまとまりの文だけの場合には、{ }を省略できる

while文の記述はどのように実行されていくか処理の流れも以下にまとめておきます。

[処理1] -①
while(条件) -②
{
    [処理2]; -③
}
[処理3] -④

次のことを繰り返す、ただし○○となると終了する(do while文)

これまでのfor文、while文では、処理1を繰り返す際に、条件判断→処理1と条件判断を行って繰り返すかどうか判断していました。ここで紹介するのは、処理1→条件判断と処理を先に行うプログラムについて説明していきます。

まずは、次のプログラムを実行してみて下さい。

#include <stdio.h>
int main(){
    int num, total;

    total = 0; //①
    do{        //②
        printf("整数値を入力して下さい\n");
        scanf("%d", &num);

        total = total + num;
        printf("これまでの合計: %d\n", total);
    }while(num != 0);
}
sample2-2.3実行結果

1つ前のwhile文との違いは、2か所あります。

  • ①の部分で「num = -1」の初期化の記述がない
  • ②の部分でwhileは最後に記述し、その場所にdoを記述している

この記述をdo while(ドゥ ホワイル)文といいます。これを利用すると、numの初期化が不要になり、繰り返しをする条件の判断が1度処理をしたあとにはじめておこなわれます

繰り返し処理の詳細(do while文)

■do while文の書き方
do
{
    [処理];
}while(条件);
  • 上から順に実行していき、whileの条件を満たした場合は、doの位置に戻って再び[処理]を続け、繰り返しをする
  • [処理]の内容が1つの演算式、またはひとまとまりの文だけの場合は、{ }を省略できる

do while文の記述はどのように実行されていくか処理の流れも以下にまとめておきます。

[処理1] -①
do -②
{
    [処理2]; -③
}while(条件); -④
[処理3] -⑤