第6話-プログラム3大道具その3-繰り返し【現役エンジニア解説によるプログラミング入門】

じっくりプログラミングコース

今回は「繰り返し」について学んでいきます。繰り返しとは、処理を繰り返し行うことの出来るプログラムです。それでは、やっていきましょう!

プロジェクトの作成

今回も説明は省略しますが、「forloop」というプロジェクトを作成してください。

作成方法を確認したい方は、過去の記事を参照してください!

繰り返しを使ってみる

さっそく、繰り返しのプログラムを書いてみましょう。以下のプログラムを真似して書いてみてください。Mainの塊の中を書き換えてくださいね。

using System;

namespace forloop
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 0; i < 5; i++)
            {
                Console.WriteLine("Hello World!");
            }
        }
    }
}

解説の前に実行してみましょう。実行結果は以下の通りです。

「Hello World!」が5回分表示されました。

forループの使い方

for文は、以下の書き方をします。

for文の書き方

for(使用する変数の宣言; 繰り返し条件; ループ毎の変数の変化量) {処理}

少々難しくなっていますので、順番に説明します。

使用する変数の宣言

プログラムの例では、「int i = 0;と記載しています。

ここで宣言するものは、ループのカウンタに使用する変数です。変数名はなんでも良いのですが、慣例として「i」を使うことが多いです。そして、この例では、iは0からスタートするとしています。

慣例について

コンピューター目線と人間目線の話が出てきます。コンピューター目線で言えば、変数名なんて何でも構いませんので、「i」であってもそうでなくても同じように動きます。ただ、人間目線でプログラムを見た時に、「i」であることで、見た人が「あぁ、これはループに使用している変数なんだな」と素早く理解することが出来ます。

今後、「慣例によってそうなっている」という言葉が出てくると思いますが、基本的に人間目線で見た時のメリットがあるからそうなっていると考えてもらえればと思います。

繰り返し条件

プログラムの例では、「i < 5;」となっています。これは、ループする度に「i」の値が変化していく中で、「i」が5未満の場合は「{}」内の処理を行う、という意味になります。

「i」が変化する量については、次の項目で説明します。

ループ毎の変数の変化量

プログラムの例では、「i++」となっています。これは実は省略形で、「i + 1」を表しています。つまり、処理を終えて戻ってきたら、変数「i」に1を足す、という意味になります。

では、部品ごとの説明を終えたので、全体像について解説します。

forループの処理の動き

for(int i = 0; i < 5; i++)
{
     Console.WriteLine("Hello World!");
}

この部分だけ切りとって見てみましょう。

まず、「int i = 0;」が動きます。変数宣言はみなさん、もう大丈夫ですね?int型の「i」という変数を宣言して、かつ同時に、宣言した変数に0を代入する、ということをやっています。

続いて、「i < 5」で判定を行い、変数「i」の中身が5未満であれば、{}内の処理を行うことになります。

そして、「i++」ですが、ループの処理を終えた後にiに1をプラスするということを覚えておいてください。

先ほど、「i < 5」で判定を行いました。最初の状態では、「i」は0が入っているので判定は「true」。つまり、{}の中の「Console.WriteLine(“Hello World!”);」を実行し、「Hello World!」がコンソールに表示されます。

処理が終わったところで、「i」に1を追加して、0 + 1となり、「i」の中身は1になります。

ここで再び、forの文に戻ります。「i」はすでに宣言されているので無視され、「i < 5」の判定を行います。「i」は1なので、5未満、つまり、判定は「true」。再びループ内の処理が実行され、「Hello World!」が表示されます。{}を抜けると「i」は1追加され、2になります。

こうして、iの値が2,3,4と増えていき、4の時の「Hello World!」が出力されたら「i」に1が追加され、5になります。5になったら、「i < 5」の判定で結果は「false」となるので、{}内の処理は行われず、6回目のHello World!は出力されずに処理が終了します。

iの中身を確認してみる

「本当にそんな動きになってるの?」と疑いを持っている人もいると思いますので、実際の動きを確認してみましょう。以下のプログラムに書き換えてください。

using System;

namespace forloop
{
    class Program
    {
        static void Main(string[] args)
        {
            for(int i = 0; i < 5; i++)
            {
                Console.WriteLine("Hello World!" + i.ToString());
            }
        }
    }
}

Hello World!の後ろに、変数「i」の中身を表示させるようにしました。「.ToString()」という新しいものが出てきていますが、これについては後で紹介します。

実行結果は以下の通りです。

1回目のHello World!の後ろには0、進むごとにそれぞれ1,2,3,4と数字が付いています。5が出力されていないのは、iが5になった場合は、繰り返し条件から外れるので、処理が実行されないためです。

forループの動きが理解できましたか?

.ToString()について

「.ToString()」は、文字列型ではない変数の後ろにつけることで、文字列型として扱うことができるようになる「メソッド」と呼ばれるものです。メソッドについての説明はもっと後でやりますので、ここでは、「.ToString()を付けると、文字型になるんだなぁ」と思っていてください。

ポイントとしては、変数「i」は数値型なので、文字列型と足し算しようとすると、「文字+数値?そんなこと出来ねえよ!」とVisual Studioが怒り出します。なので、数値型の変数「i」を文字列型に変換してあげる必要があるというところですね。

まとめ

今回は、繰り返しについて扱ってみました。実は、繰り返しというのは力技でプログラムすれば使わなくても出来るのですが、非常に膨大な量のプログラムになってしまうため、現実的ではありません。ループを使うことで、プログラムの記述量も減りますし、分かりやすいプログラムを書くことが出来ます。

ここまでの、プログラム3大道具の使い方をしっかり把握できた人は、次のステップ、道具の組み合わせへと進みましょう!先に進んでみて、不安を覚えた人は、ぜひ3大道具のページに戻って復習してもらえると嬉しいです。

それではまた次回!お楽しみに!

コメント

タイトルとURLをコピーしました