Verschachtelte Schleife
Teil des Abschnitts Grundlagen der Swift-Journey von Coddy. Lektion 49 von 86.
Eine verschachtelte Schleife ist einfach eine Schleife innerhalb einer anderen Schleife. Die innere Schleife durchläuft alle ihre Iterationen für jede einzelne Iteration der äußeren Schleife.
let rows = 3
let cols = 2
for row in 1...rows {
for col in 1...cols {
print("Row \(row), Col \(col)")
}
}
// Ausgabe:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2Für jeden Wert von row beginnt die innere Schleife von vorn und durchläuft alle Werte von col, von 1 bis cols. Bei rows = 3 und cols = 2 wird der Code darin also insgesamt 6-mal ausgeführt (3 × 2). rows und cols ändern sich nie: Sie geben den Schleifen lediglich an, wann sie enden sollen.
Verschachtelte Schleifen werden häufig verwendet, um mit gitterartigen Strukturen zu arbeiten oder Muster zu erzeugen.
Hier ist ein Beispiel, das ein einfaches Rechteck aus Sternchen ausgibt:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Zur nächsten Zeile wechseln
}
// Ausgabe:
// ****
// ****Der terminator: "" verhindert, dass print einen Zeilenumbruch hinzufügt, sodass die Sternchen in derselben Zeile erscheinen. Nachdem die innere Schleife beendet ist, wechselt print("") zur nächsten Zeile.
Aufgabe
EinfachLies zwei Ganzzahlen aus der Eingabe ein: rows und cols. Verwende verschachtelte Schleifen, um ein Zahlengitter auszugeben, in dem jede Zelle das Produkt ihrer Zeilen- und Spaltennummer anzeigt.
Du erhältst die folgenden Eingaben:
- Erste Zeile: Anzahl der Zeilen (z. B.
"3") - Zweite Zeile: Anzahl der Spalten (z. B.
"4")
Anforderungen:
- Verwende eine äußere Schleife für die Zeilen (1 bis
rows) - Verwende eine innere Schleife für die Spalten (1 bis
cols) - Gib das Produkt der aktuellen Zeilen- und Spaltennummern aus
- Trenne Werte in derselben Zeile durch ein Leerzeichen
- Jede Zeile sollte in einer eigenen Zeile stehen
Tipp: Verwende terminator: " ", damit die Werte in derselben Zeile bleiben, und verwende dann nach der inneren Schleife print(""), um zur nächsten Zeile zu wechseln.
Wenn rows beispielsweise 3 und cols 4 ist, sollte die Ausgabe folgendermaßen aussehen:
1 2 3 4
2 4 6 8
3 6 9 12 Verwende für jede Schleife einen eigenen Zähler (zum Beispiel row für die Zeilen und col für die Zahlen in einer Zeile) und vergleiche ihn mit rows oder cols. Ändere rows und cols selbst nicht: Jede Zeile benötigt erneut cols.
Probier es selbst
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// TODO: Schreibe deinen Code unten
// Verwende verschachtelte Schleifen, um ein Einmaleins-Raster auszugeben
// Äußere Schleife: Durchlaufe die Zeilen (1 bis rows)
// Innere Schleife: Durchlaufe die Spalten (1 bis cols)
// Gib das Produkt von row * column aus
// Verwende print(..., terminator: " "), damit die Werte in derselben Zeile bleiben
// Verwende print("") nach der inneren Schleife, um zur nächsten Zeile zu wechselnDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorZusammengesetzte ZuweisungRückblick – Einfache MathematikVergleichsoperatoren7Grundlagen der Ein- und Ausgabe
Print-FunktionString-InterpolationReadLine-EingabeTypkonvertierungWiederholung – Bis 120Wiederholung – Wahr oder falsch10Funktionen
Eine Funktion deklarierenParameter und ArgumenteRückgabewerteArgumentbezeichnungenWiederholung – Sigma-FunktionWiederholung – ValidierungsfunktionStandardwerte13Über Sequenzen iterieren
Über Elemente iterierenDie Enumerate-MethodeÜber Strings iterieren Teil 1Über Strings iterieren Teil 22Variablen
let vs. varTypannotationenZahlenStringBooleanNamenskonventionenRückblick – Variablen initialisieren5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Zusammenfassung – Einfache LogikLogische Operatoren Teil 3Ternärer Operator8Rechner zum Teilen der Rechnung
WillkommensnachrichtEingaben erfassen11FizzBuzz mit einer Wendung
SpielübersichtDie FizzBuzz-Funktion14Arrays – Fortgeschritten
Array-Slicing Teil 1Array-Slicing Teil 2SequenzoperatorenDie Contains-Methode3Optionals
Was sind Optionals?Entpacken mit If LetGuard LetNil-Coalescing-OperatorZusammenfassung – Sicheres Entpacken6Entscheidungen treffen
If-AnweisungIf - ElseRückblick – Einfacher TaschenrechnerSwitch-AnweisungSwitch mit Bereichen9Schleifen
For-In-SchleifeWhile-SchleifeRepeat-While-SchleifeBreakContinueZusammenfassung – FakultätBereiche in SchleifenVerschachtelte SchleifeZusammenfassung – Dynamische EingabeÜbe selbstständig: Swift-Playground