演習 - foreach ステートメントを実装する
あなたは製造会社に勤務しているとします。 その会社では、出荷準備ができている製品の数を確認するために、倉庫の在庫を調べる必要があります。 完成品の合計数に加えて、倉庫内の個々のビンに格納されている完成品の数と累計を報告する必要があります。 この累計は、作業を再確認し、"減少" を識別できるように監査証跡を作成するために使用されます。
foreach を使用した配列のループ
foreach
ステートメントでは、配列の要素の反復処理を、簡単かつ安全に行うことができます。 foreach
ステートメントでは、インデックス 0 から始まりインデックス - 1 で終わるインデックスの昇順で配列要素を処理します。 一時変数を使用して、現在の反復に関連付けられている配列要素の値を保持します。 各反復では、foreach
宣言の下にあるコード ブロックが実行されます。
簡単な例を次に示します。
string[] names = { "Rowena", "Robin", "Bao" };
foreach (string name in names)
{
Console.WriteLine(name);
}
foreach
キーワードの下にある Console.WriteLine(name);
を含むコード ブロックは、names
配列の各要素に対して 1 回ずつ実行されます。 .NET ランタイムによって配列の各要素がループされると、names
配列の現在の要素に格納されている値が、コード ブロック内で簡単にアクセスできるように、一時変数 name
に代入されます。
コードを実行すると、次の結果が表示されます。
Rowena
Robin
Bao
foreach
ステートメントを使用して、倉庫の各ビンにあるすべての項目の合計を作成します。
int の配列を作成して初期化する
Visual Studio Code で空の Program.cs ファイルが開かれていることを確認します。
必要であれば、Visual Studio Code を開き、次の手順のようにしてエディターで Program.cs ファイルを準備します。
[ファイル] メニューの [フォルダーを開く] を選択します。
[フォルダーを開く] ダイアログを使って CsharpProjects フォルダーに移動して開きます。
Visual Studio Code のエクスプローラー パネルで、Program.cs を選びます。
Visual Studio Code の [選択] メニューで、[すべて選択] を選択してから Delete キーを押します。
各ビンの完成品の数を格納する型
int
の配列を作成するには、次のコードを入力します。int[] inventory = { 200, 450, 700, 175, 250 };
配列を反復処理するための foreach ステートメントを追加する
inventory
配列の各要素を反復処理するforeach
ステートメントを作成するには、次のコードを入力します。foreach (int items in inventory) { }
foreach
ステートメントでは、現在の配列要素の値をitems
という名前のint
変数に一時的に割り当てることに注目してください。コードが以下と一致していることを確かめます。
int[] inventory = { 200, 450, 700, 175, 250 }; foreach (int items in inventory) { }
変数を追加して配列の各要素の値を合計する
foreach
ステートメントの上の空白のコード行にカーソルを置きます。倉庫内のすべての完成品の合計を表す新しい変数を宣言するには、次のコードを入力します。
int sum = 0;
foreach
ステートメントの外部で変数を宣言していることを確かめます。foreach
ステートメントのコード ブロック内にカーソルを置きます。items
に格納されている現在の値をsum
変数に追加するには、次のコードを入力します。sum += items;
コードが以下と一致していることを確かめます。
int[] inventory = { 200, 450, 700, 175, 250 }; int sum = 0; foreach (int items in inventory) { sum += items; }
sum の最終値を表示する
foreach
ステートメントのコード ブロックの下に空白のコード行を作成します。倉庫内の項目の最終的な合計を報告するには、次のコードを入力します。
Console.WriteLine($"We have {sum} items in inventory.");
コードが以下と一致していることを確かめます。
int[] inventory = { 200, 450, 700, 175, 250 }; int sum = 0; foreach (int items in inventory) { sum += items; } Console.WriteLine($"We have {sum} items in inventory.");
Visual Studio Code [ファイル] メニューの [保存] をクリックします。
[エクスプローラー] パネルで、TestProject フォルダーの場所にあるターミナルを開くには、TestProject を右クリックし、[統合ターミナルで開く] を選択します。
[ターミナル] のコマンド プロンプトで「dotnet run」と入力し、Enter キーを押します。
We have 1775 items in inventory.
現在のビン番号を保持する変数を作成し、累計を表示する
在庫報告プロジェクトの最終的な要件を満たすためには、ビンとそのビン内の完成品の数、およびそれまでに処理したビンの全項目の累計を表示できるように、foreach
ステートメントの現在の反復を保持する変数を作成する必要があります。
foreach
ステートメントの上に新しい空白のコード行を作成します。0
に初期化されたbin
という名前のint
変数を宣言するには、次のコードを入力します。int bin = 0;
bin
を使用して、在庫が現在処理されているビンの番号を格納します。foreach
コード ブロック内で、コード ブロックが実行されるたびにbin
をインクリメントするには、次のコードを入力します。bin++;
++
演算子を使用して変数の値を 1 ずつインクリメントしていることに注目してください。 これは、bin = bin + 1
のショートカットです。ビン番号、ビン内の完成品の数、および完成品の累計を報告するには、
bin++;
の後のforeach
コード ブロック内に次のコードを入力します。Console.WriteLine($"Bin {bin} = {items} items (Running total: {sum})");
このコードでは、カウンター変数
bin
、一時foreach
変数items
、およびsum
変数を使用して、適切に書式設定されたメッセージで在庫の現在の状態を報告します。コードが以下と一致していることを確かめます。
int[] inventory = { 200, 450, 700, 175, 250 }; int sum = 0; int bin = 0; foreach (int items in inventory) { sum += items; bin++; Console.WriteLine($"Bin {bin} = {items} items (Running total: {sum})"); } Console.WriteLine($"We have {sum} items in inventory.");
Program.cs ファイルに変更内容を保存してから、アプリケーションを実行します。
次の出力が表示されます。
Bin 1 = 200 items (Running total: 200) Bin 2 = 450 items (Running total: 650) Bin 3 = 700 items (Running total: 1350) Bin 4 = 175 items (Running total: 1525) Bin 5 = 250 items (Running total: 1775) We have 1775 items in inventory.
まとめ
ここでは、このユニットで学習した foreach
ステートメントと値のインクリメントについて覚えておくべきいくつかの点を示します。
foreach
ステートメントを使用して配列内の各要素を反復処理し、関連付けられているコード ブロックを配列の各要素に対して 1 回実行します。foreach
ステートメントでは、配列内の現在の要素の値を一時変数に設定します。この変数は、コード ブロックの本体で使用できます。++
インクリメント演算子を使用して、変数の現在の値に 1 を加算します。