ネストされたループ
CoddyのSwiftジャーニー「基礎」セクションの一部 — レッスン 49/86。
ネストされたループ(入れ子のループ)とは、単純に別のループの中にあるループのことです。外側のループが1回実行されるごとに、内側のループはそのすべての反復を完了します。
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// 出力:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2row の各値に対して、内側のループは col のすべての値を一通り実行します。したがって、外側の反復が3回、内側の反復が2回の場合、内部のコードは合計6回(3 × 2)実行されます。
ネストされたループは、グリッド状の構造を扱ったり、パターンを生成したりするためによく使用されます。
以下は、アスタリスクの単純な長方形を出力する例です。
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // 次の行に移動
}
// 出力:
// ****
// ****terminator: "" は print が改行を追加するのを防ぐため、アスタリスクは同じ行に表示されます。内側のループが終了した後、print("") によって次の行に移動します。
チャレンジ
簡単入力から2つの整数 rows と cols を読み取ります。入れ子になったループ(二重ループ)を使用して、各セルにその行番号と列番号の積を表示する数値のグリッドを出力してください。
以下の入力を受け取ります:
- 1行目:行数 (例:
"3") - 2行目:列数 (例:
"4")
要件:
- 行のための外側のループを使用する (1 から
rowsまで) - 列のための内側のループを使用する (1 から
colsまで) - 現在の行番号と列番号の積を出力する
- 同じ行の値をスペースで区切る
- 各行を新しい行に表示する
ヒント: terminator: " " を使用して値を同じ行に保持し、内側のループの後に print("") を使用して次の行に移動します。
例えば、rows が 3 で cols が 4 の場合、出力は以下のようになります:
1 2 3 4
2 4 6 8
3 6 9 12 チートシート
二重ループ(ネストされたループ)は、ループの中にある別のループのことです。外側のループが1回繰り返されるごとに、内側のループはそのすべての反復を完了します。
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// 出力:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2外側の反復が3回、内側の反復が2回ある場合、コードは合計6回(3 × 2)実行されます。
二重ループは、格子状の構造やパターンを作成するのに便利です:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // 次の行へ移動
}
// 出力:
// ****
// ****terminator: "" を使用すると、print が改行を追加するのを防ぎ、出力を同じ行に保持できます。内側のループの後に print("") を使用して、次の行に移動します。
自分で試してみよう
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// TODO: 以下にコードを記述してください
// 入れ子のループを使用して掛け算のグリッドを表示します
// 外側のループ: 行を反復処理します (1 から rows まで)
// 内側のループ: 列を反復処理します (1 から cols まで)
// 行 * 列 の積を表示します
// 値を同じ行に保持するために print(..., terminator: " ") を使用します
// 次の行に移動するために、内側のループの後に print("") を使用しますこのレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。