Menu
CoddyTech

Zagnieżdżona pętla

Część sekcji Podstawy ścieżki C# w Coddy. Lekcja 46 z 69.

Pętla zagnieżdżona to po prostu pętla wewnątrz innej pętli. Pętla wewnętrzna wykona wszystkie swoje iteracje podczas każdej pojedynczej iteracji pętli zewnętrznej.

Dobrą analogią jest zegar: dla każdej godziny (pętla zewnętrzna) wskazówka minutowa (pętla wewnętrzna) musi wykonać pełny 60-minutowy obrót.

Przykład zagnieżdżonej pętli:

int rows = 2;
int cols = 2;
for (int x = 0; x < rows; x++) {
	for (int y = 0; y < cols; y++) {
		Console.WriteLine(x + " " + y);
	}
}

// To wypisze:
// 0 0
// 0 1
// 1 0
// 1 1

Pętla zewnętrzna (x) wykonuje się rows razy, a przy każdym z tych przebiegów pętla wewnętrzna (y) wykonuje się cols razy, co oznacza, że ciało pętli wewnętrznej wykonuje się łącznie 2 × 2 = 4 razy. Każda pętla ma własny licznik: y za każdym razem zaczyna ponownie od 0, gdy wykonuje się pętla zewnętrzna, a rows i cols pozostają takie same i jedynie wskazują pętlom, kiedy mają się zatrzymać.

Podczas pracy z zagnieżdżonymi pętlami może być też potrzebne Console.Write(). W przeciwieństwie do Console.WriteLine(), które wyświetla tekst i przechodzi do nowej linii, Console.Write() wyświetla tekst bez dodawania znaku nowej linii na końcu. Dzięki temu możesz budować wynik w tym samym wierszu:

for (int y = 0; y < 4; y++) {
	Console.Write("* ");
}
Console.WriteLine();

// To wypisze:
// * * * * 

Tutaj Console.Write() wciąż wypisuje tekst w tym samym wierszu, a Console.WriteLine() na końcu przechodzi do następnego wiersza.

challenge icon

Wyzwanie

Początkujący

Napisz program, który wypisuje prostokąt z gwiazdek (*) o podanej szerokości i wysokości.

Dane wejściowe: Dwie liczby całkowite: width i height

Na przykład:

Jeśli width = 5 i height = 3, wynikiem powinno być:

*****
*****
*****

Jeśli width = 4 i height = 6, wynikiem powinno być:

****
****
****
****
****
****

Użyj nowego licznika dla każdej pętli (na przykład i dla wierszy i j dla gwiazdek w wierszu) i porównuj go z height lub width. Nie zmieniaj samych height i width: każdy wiersz ponownie potrzebuje width.

Spróbuj swoich sił

using System;

public class Program {
    public static void Main(string[] args) {
        int width = int.Parse(Console.ReadLine());
        int height = int.Parse(Console.ReadLine());
        // Napisz swój kod poniżej

    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator C# online