Pętle zagnieżdżone
Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 49 z 109.
Pętle zagnieżdżone to pętle umieszczone wewnątrz innej pętli. Pętla wewnętrzna wykonuje się w całości przy każdej iteracji pętli zewnętrznej.
Stwórzmy tabliczkę mnożenia dla liczb 1–3 przy użyciu zagnieżdżonych pętli:
for i := 1; i <= 3; i++ {
for j := 1; j <= 3; j++ {
fmt.Printf("%d×%d=%d\t", i, j, i*j)
}
fmt.Println()
}Po wykonaniu tego kodu otrzymujemy tabliczkę mnożenia, w której każdy wiersz przedstawia jedną wartość zmiennej zewnętrznej pętli (i) pomnożoną przez wszystkie wartości zmiennej wewnętrznej pętli (j). Wynik pojawi się na ekranie:
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 Przyjrzyjmy się krok po kroku, jak to działa:
Najpierw pętla zewnętrzna ustawia i=1, a pętla wewnętrzna wykonuje się do końca:
i=1, j=1: prints "1×1=1"
i=1, j=2: prints "1×2=2"
i=1, j=3: prints "1×3=3"Po zakończeniu pętli wewnętrznej wypisujemy nowy wiersz za pomocą fmt.Println().
Następnie pętla zewnętrzna ustawia i=2, a pętla wewnętrzna uruchamia się ponownie:
i=2, j=1: prints "2×1=2"
i=2, j=2: prints "2×2=4"
i=2, j=3: prints "2×3=6"Na koniec pętla zewnętrzna ustawia i=3, a pętla wewnętrzna wykonuje się po raz ostatni:
i=3, j=1: prints "3×1=3"
i=3, j=2: prints "3×2=6"
i=3, j=3: prints "3×3=9"Ten wzorzec zagnieżdżonych pętli jest bardzo przydatny podczas pracy z tabelami danych lub tworzenia struktur przypominających siatkę.
Wyzwanie
PoczątkującyW tym wyzwaniu poćwiczysz używanie zagnieżdżonych pętli do drukowania prostego wzoru. Zewnętrzna pętla będzie iterować przez wiersze, a wewnętrzna pętla będzie iterować przez kolumny, aby utworzyć małą siatkę znaków.
Uzupełnij zagnieżdżone pętle, aby wydrukować siatkę gwiazdek 3x3 (*). Po każdej gwiazdce musi znajdować się spacja, więc każdy wiersz powinien wyglądać tak: * * * (ze spacją na końcu). Oczekiwany wynik:
* * * * * * * * *
Spróbuj swoich sił
package main
import "fmt"
func main() {
// Liczba wierszy i kolumn w naszej siatce
rows := 3
columns := 3
// TODO: Utwórz zagnieżdżoną pętlę, aby wypisać siatkę gwiazdek (*)
// Pętla zewnętrzna powinna przechodzić przez wiersze
// Pętla wewnętrzna powinna przechodzić przez kolumny
for i := 0; i < rows; i++ {
// Dodaj tutaj pętlę wewnętrzną, aby wypisać gwiazdki w każdej kolumnie
// To wypisuje nową linię po każdym wierszu
fmt.Println()
}
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory porównania i logiczne
Operatory porównania – część 1Operatory porównania – część 2Logiczny operator ANDLogiczny operator ORLogiczny operator NOTPodstawy kolejności wykonywania operatorówPodsumowanie – porównywanie7Sterowanie przepływem: pętle
Jak działa pętla `for`Pętla `for` — podstawyPętla `for` — tylko warunekSłowo kluczowe `break`Słowo kluczowe `continue`Pętle zagnieżdżonePodsumowanie — powtarzanie działań2Zmienne i podstawowe typy danych
Czym jest zmiennaWnioskowanie o typie za pomocą `:=`Liczby całkowite (int)Liczby zmiennoprzecinkoweWartości logiczneCiągi znakówWartości zeroweStałeKonwencje nazewnictwaPodsumowanie – zmienne i typy5Podstawowe wejście/wyjście
Formatowane wyjścieSpecyfikatory formatuWyświetlanie typówPobieranie podstawowych danych od użytkownikaPodsumowanie — wejście i wyjście8Funkcje
Zrozumienie funkcjiDeklarowanie funkcjiWywoływanie funkcjiParametry funkcjiZwracanie jednej wartościZwracanie wielu wartościNazwane wartości zwracanePodstawy zakresu funkcjiPodsumowanie — tworzenie wielokrotnego użytku kodu11Typy złożone: wycinki
Wprowadzenie do wycinkówDeklarowanie literałów wycinkówTworzenie wycinków za pomocą `make`Długość a pojemność wycinkaDostęp do elementów wycinkaDodawanie elementówWycinanie z istniejących wycinków i tablicIterowanie po wycinkachKopiowanie wycinkówPodsumowanie — listy dynamiczne3Podstawowe operatory
Operatory arytmetyczneOperator dzieleniaOperator moduloOperator przypisaniaOperatory przypisania z działaniemZwiększanie i zmniejszaniePowtórka – obliczenia6Sterowanie przepływem: instrukcje warunkowe
Instrukcja `if`Słowo kluczowe `else`Słowo kluczowe `else if`Przesłanianie zmiennych w `if`Inicjalizacja zmiennychInstrukcja `switch``switch` z wyrażeniami`switch` bez wyrażeniaSłowo kluczowe `fallthrough`Podsumowanie — podejmowanie decyzjiPoćwicz samodzielnie: Kompilator Go online