Pętle w C#

Pętle w C# to jedne z najbardziej podstawowych konstrukcji, które pozwalają na wielokrotne wykonywanie fragmentu kodu. Używamy ich, kiedy chcemy, aby jakiś kod został wykonany więcej niż jeden raz. Jest kilka różnych typów pętli w C#, a każda z nich jest używana w nieco innych sytuacjach. Omówimy tutaj trzy główne typy: for, while do while i foreach.

Pętla for

Pętla for jest używana, kiedy wiemy, ile razy chcemy, aby kod został wykonany. Składa się z trzech części: inicjalizacji licznika, warunku kontynuacji oraz instrukcji zmiany licznika. Składa się z trzech części: inicjalizacji (np. int i = 0), warunku (np. i < 10) i inkrementacji (np. i++), które są oddzielone średnikami.

Przykłady:

for (int i = 0; i < 5; i++)
{
    Console.WriteLine("Cześć! To ja, pętla for!");
}

W tym przykładzie, zmienna i zaczyna od 0, pętla wykonuje się, dopóki i jest mniejsze niż 5, a po każdym przejściu i jest zwiększane o 1. Więc wiadomość zostanie wyświetlona 5 razy.

Odliczanie w dół:

for (int i = 5; i > 0; i--)
{
    Console.WriteLine(i);
}

Wypisuje liczby od 5 do 1.

Przechodzenie przez tablicę:

int[] liczby = { 1, 2, 3, 4, 5 };
for (int i = 0; i < liczby.Length; i++)
{
    Console.WriteLine(liczby[i]);
}

Wypisuje każdy element tablicy liczby.

Wykorzystanie kilku zmiennych:

for (int i = 0, j = 10; i < j; i++, j--)
{
    Console.WriteLine($"i = {i}, j = {j}");
}

Pokazuje, jak można używać kilku zmiennych w jednej pętli for.

Pętla while

Pętla while jest używana, kiedy chcemy, aby kod wykonywał się, dopóki jakiś warunek jest spełniony. Różnica między while a for polega na tym, że w while nie musimy wiedzieć, ile razy kod zostanie wykonany.

int i = 0;
while (i < 5)
{
    Console.WriteLine("Cześć! Teraz działam w pętli while!");
    i++;
}

Tutaj, tak jak w for, wyświetlimy wiadomość 5 razy, ale używając pętli while. Zmienna i jest zwiększana o 1 w każdym przejściu pętli.

Przykłady:

Wypisywanie liczb parzystych mniejszych od 10:

int i = 0;
while (i < 10)
{
    if (i % 2 == 0)
    {
        Console.WriteLine(i);
    }
    i++;
}

Pętla nieskończona z warunkiem wyjścia:

while (true)
{
    string input = Console.ReadLine();
    if (input == "exit")
    {
        break;
    }
    Console.WriteLine($"Wprowadziłeś: {input}");
}

Pętla do-while

do-while to wariant pętli while, który gwarantuje, że blok kodu zostanie wykonany przynajmniej raz, ponieważ warunek jest sprawdzany po wykonaniu bloku kodu, a nie przed.

Różnica między while a do-while polega na tym, że do-while zawsze wykonuje się przynajmniej raz, nawet jeśli warunek jest od początku nieprawdziwy.

Przykłady:

Wykonaj przynajmniej raz:

int licznik = 0;
do
{
    Console.WriteLine("To się wykona przynajmniej raz.");
} while (licznik != 0);

Menu wyboru:

string wybor;
do
{
    Console.WriteLine("Wybierz opcję (a, b, exit):");
    wybor = Console.ReadLine();
    Console.WriteLine($"Wybrałeś: {wybor}");
} while (wybor != "exit");

Sumowanie liczb wprowadzanych przez użytkownika, aż do wprowadzenia 0:

int suma = 0, liczba;
do
{
    Console.WriteLine("Wprowadź liczbę (0 kończy sumowanie):");
    liczba = Convert.ToInt32(Console.ReadLine());
    suma += liczba;
} while (liczba != 0);
Console.WriteLine($"Suma wprowadzonych liczb to: {suma}");

Pętla foreach

Pętla foreach jest używana do przechodzenia przez elementy kolekcji (jak lista lub tablica). Jest to bardzo wygodne, gdy chcemy wykonać operację na każdym elemencie kolekcji.

string[] kolory = { "czerwony", "zielony", "niebieski" };

foreach (string kolor in kolory)
{
    Console.WriteLine($"Mój ulubiony kolor to {kolor}.");
}

W tym przykładzie, dla każdego elementu w tablicy kolory, wyświetlamy wiadomość z jego nazwą. Nie musimy się martwić o liczenie elementów ani o indeksowanie tablicy.

Przykłady:

Sumowanie elementów tablicy:

int[] liczby = { 1, 2, 3, 4, 5 };
int suma = 0;
foreach (int liczba in liczby)
{
    suma += liczba;
}
Console.WriteLine($"Suma: {suma}");

Wypisywanie elementów listy:

List<string> imiona = new List<string> { "Anna", "Bob", "Charlie" };
foreach (string imie in imiona)
{
    Console.WriteLine(imie);
}

Praca z elementami słownika:

Dictionary<string, string> stolice = new Dictionary<string, string>
{
    {"Polska", "Warszawa"},
    {"Niemcy", "Berlin"},
    {"Czechy", "Praga"}
};

foreach (KeyValuePair<string, string> element in stolice)
{
    Console.WriteLine($"Stolica {element.Key} to {element.Value}.");
}

Podsumowanie

  • Pętla for jest dobra, gdy wiemy, ile razy chcemy coś zrobić.
  • Pętla while jest dobra, gdy chcemy coś robić, dopóki jakiś warunek jest spełniony.
  • Pętla foreach jest najlepsza, gdy chcemy zrobić coś z każdym elementem kolekcji.