Menu
CoddyTech

ネストしたループ

CoddyのC#ジャーニー「基礎」セクションの一部。レッスン 46/70。

ネストされたループとは、別のループの中にあるループのことです。内側のループは、外側のループが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回実行され、その1回ごとに内側のループ(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()で次の行に移ります。

challenge icon

チャレンジ

初心者

指定された幅と高さで、アスタリスク(*)の長方形を出力するプログラムを書きましょう。

入力: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());
        // 以下にコードを書いてください

    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: C#オンラインコンパイラ