Forループ
メニューを表示するにはスワイプしてください
ループは、コードの一部を任意の回数だけ実行することを可能にする構造体。
ループにはさまざまな種類がある。C# では、特定の回数だけコードを実行したい場合、for loopを使用。
for ループのテンプレート(構文)は次のとおり。
main.cs
123for(initiation; condition; operation) { // code to execute }
この構文を使った例を考察。
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // Output "Hello World" ten times. for(int i = 0; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
注意
i++はi = i + 1と同じ意味。変数の値を1増加させる。 同様に、i--は値を1減少させる。
int i = 0は初期化部分。初期化はループ開始時に行われる。ループの開始時に、一時変数iが新しく作成され、値0で初期化される;i < 10は条件部分。条件はループの各反復(繰り返し)ごとにチェックされる。条件が真である限り、ループは囲まれたコードブロックを実行し続ける;i++は各反復後に実行される操作。操作は通常、増加または減少。各反復後にiの値が増加するため、10回の反復後にi < 10の条件が偽となり、ループが終了する。
for ループの3つの構成要素(initialization、condition、operation)はすべて省略可能であることを理解することが重要。いずれかを省略することもできるが、ループの動作が変わる可能性がある。
推奨はされないが、ループ変数をループ外で宣言し、initialization 部分を空にすることも可能。この場合でもループは動作するが、適切に扱わないと予期しない結果を招く可能性があるため注意が必要。
main.cs
12345678910111213141516using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10; i++) { Console.WriteLine("Hello World"); } } } }
operation 部分を省略し、ループのコードブロックの末尾に記述することも可能です。変数 i は各反復ごとに増加するため、ループの動作は以前と同じです。
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { int i = 0; for(; i < 10;) { Console.WriteLine("Hello World"); i++; } } } }
上記のコードでは、; が期待されるループ構文の位置にもセミコロン(int i = 0)を記述している点に注意してください。このセミコロンは、ループ変数を作成するかどうかに関わらず、常に必要です。
ループ条件を省略することも可能ですが、その場合、手動で終了しない限りループが無限に実行されます(この点については後の章で詳しく学びます)。
main.cs
1234567891011121314151617using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { // In this case the variable `i` is useless so we don't create it. // The loop never ends for(;;) { Console.WriteLine("Hello World"); } } } }
注意
ループ構文
for(;;)には両方のセミコロンを含めています。これらは必須であり、省略するとコンパイラエラーが発生します。
i の値は各イテレーションごとに変化するため、これを活用できます。これを理解するために、各イテレーションで i の値を出力する簡単なプログラムを見てみましょう:
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 0; i < 10; i++) { Console.WriteLine(i); } } } }
9 から始まるため、0 で終了します。繰り返し回数は合計で10回です。初期化、条件、操作を変更することで、2から20までの10個の偶数を出力できます。
注意
偶数とは、
2で割り切れる数値です。例えば、2、4、6、8、10 などです。偶数には0も含まれますが、これらの例では0より大きい偶数のみを扱います。
main.cs
123456789101112131415using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }
注意
i += 2はi = i + 2を短く書いたもの。この構文は他の演算子にも有効で、例えばi -= 2、i *= 2、i /= 2、i %= 2などがある。
ループは 0 から始まり、各イテレーションごとに i の値を 2 ずつ増やす。条件を i <= 20 に変更しているため、ループは 20 で終了する。
上記のロジックは for ループの動作を理解するためのもの。最初の 10 個の偶数を出力するには、もっと簡単なロジックを使うことができる。
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 10; i++) { Console.WriteLine(i * 2); } } } }
この場合、条件はさらに簡単になる。例えば、最初の 27 個の偶数が必要な場合、前の方法では 27 番目の偶数が何かを知る必要があるが、この方法では単に条件を i <= 27 に変更するだけでよい。
main.cs
1234567891011121314using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください