ネストしたループ
CoddyのC#ジャーニー「基礎」セクションの一部。レッスン 46/69。
ネストされたループとは、別のループの中にあるループのことです。内側のループは、外側のループの1回の反復ごとに、すべての反復を完了します。
これをうまくたとえると、時計です。各時間(外側のループ)ごとに、分針(内側のループ)は60分の周期をすべて完了する必要があります。
ネストされたループの例:
int rows = 2;
int cols = 2;
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cols; y++) {
Console.WriteLine(x + " " + y);
}
}
// 出力は次のようになります:
// 0 0
// 0 1
// 1 0
// 1 1外側のループ(x)はrows回実行され、その各回で内側のループ(y)がcols回実行されます。つまり、内側のループ本体は合計で2 × 2 = 4回実行されます。各ループにはそれぞれ独自のカウンターがあります。yは外側のループが実行されるたびに0から再び始まり、rowsとcolsはそのまま変わらず、ループをいつ終了するかを示すだけです。
ネストしたループを扱うときは、Console.Write()も必要になる場合があります。テキストを出力して改行するConsole.WriteLine()とは異なり、Console.Write()は末尾に改行を追加せずにテキストを出力します。これにより、同じ行に出力を積み重ねられます:
for (int y = 0; y < 4; y++) {
Console.Write("* ");
}
Console.WriteLine();
// これを実行すると、次のように出力されます:
// * * * * ここでは、Console.Write()は同じ行に出力し続け、最後のConsole.WriteLine()は次の行に移動します。
チャレンジ
初心者指定された幅と高さのアスタリスク(*)でできた長方形を出力するプログラムを書きましょう。
入力: 2つの整数: width と height
例:
width = 5 かつ height = 3 の場合、出力は次のようになります:
*****
*****
*****width = 4 かつ height = 6 の場合、出力は次のようになります:
****
****
****
****
****
****ループごとに新しいカウンターを使い(たとえば、行にはi、1行内のアスタリスクにはj)、それをheightまたはwidthと比較しましょう。heightとwidth自体は変更しないでください。各行でwidthが再び必要になります。
自分で試してみよう
using System;
public class Program {
public static void Main(string[] args) {
int width = int.Parse(Console.ReadLine());
int height = int.Parse(Console.ReadLine());
// 以下にコードを書いてください
}
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: C#オンラインコンパイラ