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.