演習 - 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 EXPLORER ビューで、 Program.csを選択します。
Visual Studio Code の選択 メニューで、[ すべて選択] を選択し、Delete キーを押します。
各ビンの完成品の数を格納する型
intの配列を作成するには、次のコードを入力します。int[] inventory = { 200, 450, 700, 175, 250 };
配列を反復処理するための foreach ステートメントを追加する
foreach配列の各要素を反復処理するinventoryステートメントを作成するには、次のコードを入力します。foreach (int items in inventory) { }foreachステートメントでは、現在の配列要素の値をintという名前のitems変数に一時的に割り当てることに注目してください。コードが以下と一致していることを確かめます。
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ステートメントの上に新しい空白のコード行を作成します。intに初期化されたbinという名前の0変数を宣言するには、次のコードを入力します。int bin = 0;binを使用して、在庫が現在処理されているビンの番号を格納します。foreachコード ブロック内で、コード ブロックが実行されるたびにbinをインクリメントするには、次のコードを入力します。bin++;++演算子を使用して変数の値を 1 ずつインクリメントしていることに注目してください。 これは、bin = bin + 1のショートカットです。ビン番号、ビン内の完成品の数、および完成品の累計を報告するには、
foreachの後のbin++;コード ブロック内に次のコードを入力します。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 を加算します。