こんにちは、Takymです。
今回は、繰り返し文(for)について説明します。
forとは?
以下のソースコードをVisual Studio 2017のプロジェクトにコピーして実行してみてください。
// おまじない開始
using System;
namespace part7
{
class Program
{
// おまじない終了
// Main関数
static void Main(string[] args)
{
int x = 0, y; // 変数はカンマ(,)で区切って宣言できる
// インクリメント
x++; // xに1を加算
++x; // この書き方もできる
// デクリメント
x--; // xに1を減算
--x; // この書き方もできる
// ※上記でインクリメントしてデクリメントしているので0になる
// ++x(前置インクリメントと呼ぶ)とx++(後置インクリメントと呼ぶ)の違い
y = ++x; // yには1が代入される。(xを加算してから代入)
y = x++; // yには1が代入される。(代入してからxを加算)
// デクリメントも同じ
// for (ループ変数定義;ループ条件;ループ変数加算) { ループ内容; }
for (int i = 0; i < 10; ++i) { // 前置インクリメントの方が微妙に速い
// 何回目のループか表示
Console.WriteLine(i + "回目のループです。");
}
// ループ変数定義、ループ条件、ループ変数加算は省略する事もできる。
for (int i = 0; i < 5;) {
++i;
}
// 全て省略すると無限ループになる。
// for (;;) { }
// 以下の様にしても無限ループになる。
// for (;true;) { }
Console.ReadLine();
}
// おまじない開始
}
}
// おまじない終了
まずは、for文で必要な機能を少し紹介します。
15~31行目を見てください。
インクリメントというのは、指定した変数に1を加算するという命令です。
デクリメントは、その逆で指定した変数に1を減算するという命令です。
インクリメント・デクリメントには前置と後置があり、前置は値を代入してから計算し、後置は計算してから値を代入します。
(26~31行目)
for文は、
for (ループ変数定義;ループ条件;ループ変数加算) { ループ内容; }
の様な形式でプログラムを記述します。
ループ変数は、ループした回数を記録しておくための変数です。
ループ条件は、bool値で条件がtrueの時だけループ内容が実行されます。
ループ変数加算の所でループ変数を加算します。
例えば、次の様なfor文を実行してみてください。
for (int i = 0; i < 10; ++i) {
Console.WriteLine(i + "回目のループです。");
}
以下の様に表示されるはずです。
1回目のループです。
2回目のループです。
3回目のループです。
4回目のループです。
5回目のループです。
6回目のループです。
7回目のループです。
8回目のループです。
9回目のループです。
最初と最後に注目してください。0と9になっています。
まず、最初にiは0に初期化されます。
次に、「Console.WriteLine(i + “回目のループです。”);」が実行されます。この時に「0回目のループです。」と表示されます。
次に1づつ加算しながら画面に「i回目のループです。」と表示されます。
そして、iが10になった時に「i < 10」の条件が成り立たなくなり、ループは終了します。
ですので、10は絶対に表示できません。
10を表示させて0を表示させたくないならば、以下の二つのパターンがあります。
// パターン1
for (int i = 1; i <= 10; ++i) {
Console.WriteLine(i + "回目のループです。");
}
// パターン2
for (int i = 0; i < 10; ++i) {
Console.WriteLine(i + 1 + "回目のループです。");
}
因みに、パターン1の方が速いプログラムです。パターン2の場合だと毎回、iに1足して表示する事になるからです。
以下の様に書くと、偶数だけ表示する様になります。
// パターン1
for (int i = 0; i <= 10; i += 2) {
Console.WriteLine(i + "回目のループです。");
}
(※「i += 2」はiに2を加算するという意味です。)
最後に
今回はここまでです。
次回は、while文という繰り返し文を説明します。
分からない事・間違いの指摘等はこの記事のコメント欄にお願いします。
最後まで読んでくださってありがとうございました。