C言語

-C言語- 繰り返し処理(ループ文)の基本

繰り返し処理とは

今回はC言語における「繰り返し処理(ループ)」について解説します。
そもそも繰り返し処理とはなんなのかということをまずは見ていきましょう。

まず、どの様な時にこの繰り返し処理を使うのか。
例えば以前紹介した、配列変数を扱うときです。

#include <stdio.h>
int main()
{
    int array[5];

    array[0] = 10;
    array[1] = 20;
    array[2] = 30;
    array[3] = 40;
    array[4] = 50;

    printf("%d, %d, %d, %d, %d n", array[0], array[1], array[2], array[3], array[4]);
}

このように配列を代入するときに、一つずつ配列の要素を指定して代入していますが、これだとあまりに煩雑ですよね。
*配列について復習したい方はこの記事を参考にしてください。

http://itthestudy.com/c%E8%A8%80%E8%AA%9E%E5%85%A5%E9%96%80-%E9%85%8D%E5%88%97%E3%81%A8%E3%81%AF%EF%BC%9F/

そこで、今回勉強する繰り返し処理(ループ)が便利なんです。
実際に上のサンプルコードと同じ処理を繰り返し処理(ループ)を使って簡単にしてみましょう。

#include <stdio.h>
int main()
{
    int array[5];
    int number = 10;
    /*
    ** ここの部分をループ処理に変えてみます。
    array[0] = 10;
    array[1] = 20;
    array[2] = 30;
    array[3] = 40;
    array[4] = 50;
    */
    for(int i = 0; i < 5; i++)
    {
        array[i] = number;
        number = number + 10;
    }
    printf("%d, %d, %d, %d, %d n", array[0], array[1], array[2], array[3], array[4]);
}

このサンプルコードのように前までは配列の要素を指定して、
一つずつ代入していたものを"for文"という繰り返し処理(ループ文)で簡単にしています。

簡単に説明すると、繰り返し処理をするのに"for"関数を今回は使いました。

  • 第一引数には、ループする回数の基準となる値の変数の宣言をしています。
  • 第二引数では、ループする回数を決めており、
  • 第三引数で、カッコ内の処理が終わった時にループの基準となる変数のインクリメント(カウントアップ)をしています。
IT博士
IT博士

つまり、ループの回数は基準値を0として、ループの回数(変数 "i")が5よりも下の間、処理を繰り返しています。

そしてその変数"i"を使うことで配列の要素を指定して値を代入しています。

すごい。今まで5行も6行も書いていたコードがかなりすっきりしました!

 

繰り返し処理(ループ)の種類

先ほどは、一例として"for()"関数を使って紹介しましたが、他にもループの仕方があるので紹介していきます。

大きく分けて3種類のループ分があります。

  • for文
  • While文
  • do文

この3つの特徴や使い方を順番に見ていきましょう。

"for"

for文は、ループを開始する前に実行される「初期化式」というものと,繰り返しの条件を指定する「条件式」、そして繰り返し部分の最後に実行され、その次の繰り返しをするための準備をする「後始末の式」で構成されるものを、まとめて指示する文です。

for (/* 初期化式 */; /* 条件式 */; /* 後始末の式 */)
{
    /* 条件式が成立している間は実行される処理 */
}

基本的にはこんな形で構成されます。

for文の無限ループの書き方

for文での無限ループの書き方についてちょっとだけ説明します。
無限ループとは「無限に回り続ける」ということです。

for (;;)
{
    /* 無限に繰り返し続けられる処理 */
}

このように、条件式などを省略することで無限にループを続けることができます。

"while"

while文は条件式を指定して、その条件式が成立している間ループし続けます。

while (/* 条件式 */)
{
    /* 条件式が成立している間実行される処理 */
}

このように、条件式を定義してやってその条件式が成立(真[true])の間ループし続けます。

while文での無限ループの書き方

while (1 /* もしくは "true" */)
{
    /* 無限に繰り返し続けられる処理 */
}

while文の時はこのように条件式を"0"か"true"を指定することで常に条件式は成立していることになり、無限にループすることが可能です。

"do"

このdo文は必ずdoの後にwhileを記述します。

do
{
    /* 条件式が成立している間実行される処理 */
}while(/* 条件式 */)

ん?これwhile文と何が違うのですか?

IT博士
IT博士

良いところに目を付けましたね。
今の話を聞いただけでは何が違うのかわかりませんよね。
そのあたり詳しく見ていきましょう!

do文とwhile文の違い

構文だけ見ると"do"文と"while"文はほぼ同じにみえますが、
while文との違う点は一つだけ存在します。
それは、

「条件が成立している間は実行が繰り返される部分」を、条件にかかわらず最低でも必ず1回は実行されることが保証されていることです。


while文の場合は、条件式によって一度も実行されないことがあるのに対し、do文は必ず一回は処理を実行してくれます。

ループの途中で抜け出すための”break”

すべてのループおけることなのですが、ループ処理の途中でどうしてもループを抜け出したいときには"break"構文を使います。
使い方は簡単です。

#include <stdio.h>
int main()
{
    int array[5];
    int number = 10;

    for(int i = 0; i < 5; i++)
    {
        array[i] = number;
        number = number + 10;
        if (number == 30)
        {
            // ループを抜け出す
            break;
        }
    }
    printf("%d, %d, %d, %d, %d n", array[0], array[1], array[2], array[3], array[4]);
}

このように、"break"を使うことで、ループの途中で抜けることができるのです。

「この条件になるまで、永遠にループして期待する条件を満たしたら"break"で抜ける」
のような実装が可能になります。

まとめ

今回は、C言語における繰り返し処理(ループ)についてみていきました。
似たような処理を繰り返して行いたい場合にコードの節約になったり、見やすくなったりと、とても便利なので積極的に使っていきましょう!

https://itthestudy.com/c%e8%a8%80%e8%aa%9e%e3%81%a7%e6%9d%a1%e4%bb%b6%e5%88%86%e5%b2%90%e3%81%97%e3%81%a6%e3%81%bf%e3%82%88%e3%81%86%ef%bc%81-if-switch/


Copyright© FUNA BLOG , 2020 All Rights Reserved.