Menu
Coddy logo textTech

ネストされたループ

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

Nested Loopsとは、別のloopの内側に配置されたloopです。inner loopはouter loopの各反復ごとに完全に実行されます。

ネストしたループを使って、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()
}

このコードを実行すると、各 row が outer loop 変数 (i) の1つの値と inner loop 変数 (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"

After inner loop が終了したら、fmt.Println() で新しい行を出力します。

次に outer loop は i=2 に設定され、inner loop が再び実行されます:

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

最後に、outer loop は i=3 に設定され、inner loop はもう一度だけ実行されます。

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

チャレンジ

初心者

このチャレンジでは、単純なパターンを出力するために nested loop を使う練習をします。outer loop は rows を iterate し、inner loop は columns を iterate して、小さな文字の grid を作成します。

nested loop を完成させて、asterisks(*)の 3x3 grid を出力してください。各 asterisk の後にはスペースを 1 つ付ける必要があるため、各 row は * * * (末尾にスペースあり)のようになります。期待される出力は次のとおりです。

* * * 
* * * 
* * * 

自分で試してみよう

package main

import "fmt"

func main() {
	// グリッドの行と列の数
	rows := 3
	columns := 3
	
	// TODO: アスタリスク (*) のグリッドを出力するネストしたループを作成する
	// 外側のループは行を反復処理する必要があります
	// 内側のループは列を反復処理する必要があります
	for i := 0; i < rows; i++ {
		// 各列にアスタリスクを出力する内側のループをここに追加してください
		
		// これは各行の後に改行を出力します
		fmt.Println()
	}
}
quiz icon腕試し

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

基礎のすべてのレッスン

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