Menu
Coddy logo textTech

ネストされたループ

CoddyのGOジャーニー「基礎」セクションの一部 — レッスン 49/109。

入れ子になったループ(ネストされたループ)は、別のループの中に配置されたループのことです。内側のループは、外側のループの各反復ごとに完全に実行されます。

ネストされたループを使用して、1から3の数字の乗算表を作成しましょう:

for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        fmt.Printf("%d×%d=%d\t", i, j, i*j)
    }
    fmt.Println()
}

このコードを実行すると、外側のループ変数 (i) の各値に内側のループ変数 (j) のすべての値を掛け合わせた九九の表(乗算表)が得られます。出力は画面に次のように表示されます:

1×1=1   1×2=2   1×3=3   
2×1=2   2×2=4   2×3=6   
3×1=3   3×2=6   3×3=9   

これがどのように動作するのか、順を追って理解していきましょう:

まず、外側のループが i=1 を設定し、内側のループが完全に実行されます:

i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"

内側のループが終了した後、fmt.Println() を使用して改行を出力します。

その後、外側のループが i=2 を設定し、内側のループが再び実行されます:

i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"

最後に、外側のループは i=3 を設定し、内側のループが最後にもう一度実行されます:

i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"

ループの中にループを入れるこのパターンは、データの表を扱ったり、グリッドのような構造を作成したりする際に非常に役立ちます。

challenge icon

チャレンジ

初心者

このチャレンジでは、入れ子になったループを使用して簡単なパターンを出力する練習をします。外側のループで行を、内側のループで列を反復処理し、文字の小さなグリッドを作成します。

入れ子になったループを完成させて、アスタリスク(*)の3x3グリッドを出力してください。各アスタリスクの後にはスペースを入れる必要があるため、各行は * * * (末尾にスペースあり)のようになります。期待される出力は以下の通りです:

* * * 
* * * 
* * * 

チートシート

入れ子になったループ(ネストされたループ)は、別のループの中に配置されたループのことです。外側のループの各反復に対して、内側のループが完全に実行されます。

for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        fmt.Printf("%d×%d=%d\t", i, j, i*j)
    }
    fmt.Println()
}

外側のループが行を制御し、内側のループが列を制御します。外側のループの各反復において、内側のループはすべての反復を完了してから、次の外側のループの反復に移動します。

自分で試してみよう

package main

import "fmt"

func main() {
	// グリッドの行数と列数
	rows := 3
	columns := 3
	
	// TODO: アスタリスク (*) のグリッドを表示するための入れ子のループを作成する
	// 外側のループで行を反復処理する
	// 内側のループで列を反復処理する
	for i := 0; i < rows; i++ {
		// 各列にアスタリスクを表示するための内側のループをここに追加する
		
		// 各行の後に改行を表示する
		fmt.Println()
	}
}
quiz icon腕試し

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

基礎のすべてのレッスン