Pętla zagnieżdżona
Część sekcji Podstawy ścieżki Swift w Coddy. Lekcja 49 z 86.
Pętla zagnieżdżona to po prostu pętla wewnątrz innej pętli. Pętla wewnętrzna wykonuje wszystkie swoje iteracje podczas każdej pojedynczej iteracji pętli zewnętrznej.
for row in 1...3 {
for col in 1...2 {
print("Row \(row), Col \(col)")
}
}
// Wynik:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2Dla każdej wartości row pętla wewnętrzna przechodzi przez wszystkie wartości col. Zatem przy 3 iteracjach pętli zewnętrznej i 2 iteracjach pętli wewnętrznej kod wewnątrz wykona się łącznie 6 razy (3 × 2).
Zagnieżdżone pętle są często używane do pracy ze strukturami przypominającymi siatkę lub do generowania wzorów.
Oto przykład, który wyświetla prostokąt z gwiazdek:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Przejdź do następnego wiersza
}
// Wynik:
// ****
// ****terminator: "" zapobiega dodawaniu znaku nowej linii przez print, dzięki czemu gwiazdki pojawiają się w tym samym wierszu. Po zakończeniu pętli wewnętrznej print("") przechodzi do następnej linii.
Wyzwanie
ŁatwyWczytaj z wejścia dwie liczby całkowite: rows i cols. Użyj zagnieżdżonych pętli, aby wypisać siatkę liczb, w której każda komórka zawiera iloczyn numeru wiersza i numeru kolumny.
Otrzymasz następujące dane wejściowe:
- Pierwszy wiersz: liczba wierszy (np.
"3") - Drugi wiersz: liczba kolumn (np.
"4")
Wymagania:
- Użyj zewnętrznej pętli dla wierszy (od 1 do
rows) - Użyj wewnętrznej pętli dla kolumn (od 1 do
cols) - Wypisz iloczyn numerów bieżącego wiersza i kolumny
- Oddziel wartości w tym samym wierszu spacją
- Każdy wiersz powinien znaleźć się w osobnej linii
Podpowiedź: Użyj terminator: " ", aby pozostawić wartości w tej samej linii, a następnie użyj print("") po wewnętrznej pętli, aby przejść do następnej linii.
Na przykład, jeśli rows ma wartość 3, a cols ma wartość 4, wynik powinien wyglądać tak:
1 2 3 4
2 4 6 8
3 6 9 12 Spróbuj swoich sił
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// TODO: Napisz swój kod poniżej
// Użyj zagnieżdżonych pętli, aby wyświetlić tabliczkę mnożenia
// Pętla zewnętrzna: iteruj po wierszach (od 1 do rows)
// Pętla wewnętrzna: iteruj po kolumnach (od 1 do cols)
// Wyświetl iloczyn row * column
// Użyj print(..., terminator: " "), aby wartości pozostały w tym samym wierszu
// Użyj print("") po zakończeniu pętli wewnętrznej, aby przejść do następnego wierszaTa lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloPrzypisanie złożonePodsumowanie — prosta matematykaOperatory porównania7Podstawowe wejście/wyjście
Funkcja printInterpolacja ciągów znakówWejście ReadLineKonwersja typówPowtórka – do 120Powtórka – prawda czy fałsz10Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneEtykiety argumentówPowtórka – funkcja SigmaPowtórka – funkcja walidującaWartości domyślne2Zmienne
let vs varAdnotacje typówLiczbyŁańcuch znakówWartość logicznaKonwencje nazewnictwaPodsumowanie – inicjalizacja zmiennych5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka – prosta logikaOperatory logiczne, część 3Operator trójargumentowy8Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych wejściowych11FizzBuzz z niespodzianką
Omówienie gryFunkcja FizzBuzz3Typy opcjonalne
Czym są typy opcjonalneRozpakowywanie za pomocą if letGuard letOperator nil-coalescingPodsumowanie — bezpieczne rozpakowywanie6Podejmowanie decyzji
Instrukcja ifIf - ElsePowtórka – prosty kalkulatorInstrukcja switchSwitch z zakresami9Pętle
Pętla for-inPętla whilePętla repeat-whileInstrukcja breakInstrukcja continuePowtórzenie – silniaZakresy w pętlachPętla zagnieżdżonaPowtórzenie – dynamiczne dane wejściowePoćwicz samodzielnie: Edytor online Swift