Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ Forループ | ループ
/
C#の基礎

bookForループ

メニューを表示するにはスワイプしてください

ループは、コードの一部を任意の回数だけ実行することを可能にする構造体。 ループにはさまざまな種類がある。C# では、特定の回数だけコードを実行したい場合、for loopを使用。

for ループのテンプレート(構文)は次のとおり。

main.cs

main.cs

copy
123
for(initiation; condition; operation) { // code to execute }

この構文を使った例を考察。

main.cs

main.cs

copy
123456789101112131415
using 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つの構成要素(initializationconditionoperation)はすべて省略可能であることを理解することが重要。いずれかを省略することもできるが、ループの動作が変わる可能性がある。

推奨はされないが、ループ変数をループ外で宣言し、initialization 部分を空にすることも可能。この場合でもループは動作するが、適切に扱わないと予期しない結果を招く可能性があるため注意が必要。

main.cs

main.cs

copy
12345678910111213141516
using 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

main.cs

copy
1234567891011121314151617
using 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

main.cs

copy
1234567891011121314151617
using 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

main.cs

copy
123456789101112131415
using 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

main.cs

copy
123456789101112131415
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 2; i <= 20; i += 2) { Console.WriteLine(i); } } } }

注意

i += 2i = i + 2 を短く書いたもの。この構文は他の演算子にも有効で、例えば i -= 2i *= 2i /= 2i %= 2 などがある。

ループは 0 から始まり、各イテレーションごとに i の値を 2 ずつ増やす。条件を i <= 20 に変更しているため、ループは 20 で終了する。

上記のロジックは for ループの動作を理解するためのもの。最初の 10 個の偶数を出力するには、もっと簡単なロジックを使うことができる。

main.cs

main.cs

copy
1234567891011121314
using 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

main.cs

copy
1234567891011121314
using System; namespace ConsoleApp { internal class Program { static void Main(string[] args) { for(int i = 1; i <= 27; i++) { Console.WriteLine(i * 2); } } } }
question mark

次のプログラムの出力は何ですか?sum の値は各イテレーションごとに i だけ増加します。そのため、最初の4回のイテレーションでの値はそれぞれ 13610 となります。

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 4.  1

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 4.  1
some-alt