Pętle w programowaniu służą do wykonywania powtarzania bloku kodu określoną ilość razy. W języku C# mamy do dyspozycji cztery pętle.

Pętla while

Pętla ta wykonuje się dopóki warunek w niej zawarty jest prawdziwy. Warunek sprawdzany jest na początku pętli, istnieje więc możliwość, że pętla się nie wykona wcale.
Konstrukcja pętli:
while(warunek){
//instrukcje
}
Zobaczmy przykład:
Napiszemy program, który będzie wypisywał liczby parzyste do liczby podanej przez użytkownika:

class Program {
        static void Main() {

            Console.WriteLine("Podaj liczbę: ");
            int LiczbaUzytkownika = int.Parse(Console.ReadLine());

            int Start = 0;
            Console.WriteLine("Liczby parzyste: ");

            while (Start <= LiczbaUzytkownika) {
                Console.WriteLine(Start);
                Start += 2;
            }

            Console.ReadLine();
        }
    }

Rezultat działania aplikacji:

Pętle w C#

Rys. Wyświetlenie liczb parzystych

Uwaga:
Należy pamiętać o aktualizacji zmiennej warunkowej w pętli. Gdy o tym zapomnimy, pętla może się wykonywać w nieskończoność.
Przykład:

class Program {
        static void Main() {

            Console.WriteLine("Podaj liczbę: ");
            int LiczbaUzytkownika = int.Parse(Console.ReadLine());

            int Start = 0;
            Console.WriteLine("Liczby parzyste: ");

            while (Start <= LiczbaUzytkownika) {
                Console.WriteLine(Start);
            }

            Console.ReadLine();
        }
    }

Rezultat działania aplikacji:

Pętle w C#

Rys. Pętla która będzie się wykonywać w nieskończoność

W pętli while nie ma wyrażenia, które zmieni wartość zmiennej o nazwie Start. Powoduje to, że warunek w pętli while(0<LiczbaUzytkownika) jest zawsze prawdziwy i pętla będzie się wykonywać w nieskończoność.

Pętla „do while”

Pętla ta wykonuje się dopóki warunek w niej zawarty jest prawdziwy. W pętli „do while” warunek sprawdzany jest na jej końcu. Wiąże się to z tym, że pętla pomimo nie spełnienia warunku wykona się zawsze raz.
Konstrukcja:
do{
//instrukcje
} while(warunek);
Zobaczmy przykład:
Napiszemy program, który będzie wypisywał liczby parzyste do liczby podanej przez użytkownika. Operacja ta będzie wykonywana dopóki użytkownik nie będzie chciał zakończyć działanie programu.

class Program {
        static void Main() {
            string Wyjscie;
            do {
                Console.WriteLine("Podaj liczbę: ");
                int LiczbaUzytkownika = int.Parse(Console.ReadLine());

                int Start = 0;

                Console.WriteLine("Liczby parzyste: ");

                while (Start <= LiczbaUzytkownika) {
                    Console.WriteLine(Start);
                    Start += 2;
                }

                do {
                    Console.WriteLine("Czy chcesz kontynuować? Tak/Nie");
                    Wyjscie = Console.ReadLine().ToUpper();
                    if (Wyjscie != "NIE" && Wyjscie != "TAK") {
                        Console.WriteLine("Podałeś złą wartośc: " + Wyjscie);
                    }
                } while (Wyjscie != "NIE" && Wyjscie != "TAK");
            } while (Wyjscie != "NIE");

            Console.ReadLine();
        }
    }

Rezultat działania aplikacji:

Pętle w C#

Rys. Działanie aplikacji

W aplikacji znajdują się dwie pętle „do while”. Pierwsza z nich jest odpowiedzialna za powtarzanie kodu aplikacji, dopóki użytkownik nie poda odpowiedniej wartości. Druga pętla „do while” ma za zadanie wymusić od użytkownika wpisanie wartości „tak” lub „nie”. Gdy wartość będzie inna, wyświetlony zostanie odpowiedni komunikat.
Uwaga:
Jak już wiemy pętla „do while” zawsze wykona się raz pomimo niespełnionego warunku. Aby to sprawdzić napiszę prosty przykład:

class Program {
        static void Main() {
            int Warunek = 10;
            do {
                Console.WriteLine("Wartośc zmiennej o nazwie Warunek wynosi: "+Warunek );
            } while (Warunek != 10);

            Console.ReadLine();
        }
    }

Rezultat działania aplikacji:

Pętle w C#

Rys. Wyświetlenie się komunikatu zawartego w pętli

Jak widzimy mimo, że warunek w pętli „do while” jest nie spełniony pętla wykonała się raz i została na ekranie wyświetlona wartość zmiennej o nazwie Warunek.
W poprzednich wpisach pisaliśmy prostą aplikację do obsługi konta. W późniejszej wersji zawierała ona polecenie goto. Zastąpmy je pętlą. Przypomnijmy sobie założenia programu:
Aplikacja będzie się zajmować obsługą konta do wyboru będą następujące operacje:

  1. Wypisanie stanu konta. Zakładam że stan początkowy to 12500
  2. Pobranie pieniędzy z konta
  3. Wypłata pieniędzy
  4. Zakończenie działania aplikacji

Kod z użyciem pętli „do while”:

class Program {
        static void Main() {
            double stan = 12500;
            int wybor;
            double kwota;
            do {
                Console.WriteLine("Menu:");
                Console.WriteLine("1 - Stan konta");
                Console.WriteLine("2 - Pobranie pieniędzy z konta");
                Console.WriteLine("3 - Wpłata pieniędzy z konta");
                Console.WriteLine("4 - Zakończenie pracy programu");
                Console.WriteLine("Podaj nr operacji: ");
                int.TryParse(Console.ReadLine(), out wybor);
                switch (wybor) {
                    case 1:
                        Console.WriteLine("Stan konta wynosi: " + stan);
                        break;
                    case 2:
                        Console.WriteLine("Podaj kwotę do pobrania:");
                        double.TryParse(Console.ReadLine(), out kwota);
                        stan -= kwota;
                        break;
                    case 3:
                        Console.WriteLine("Podaj kwotę do wpłacenia:");
                        double.TryParse(Console.ReadLine(), out kwota);
                        stan += kwota;
                        break;
                    case 4:
                        Console.WriteLine("Koniec działania programu");
                        break;
                    default:
                        Console.WriteLine("Podałeś błędną wartość: "+ wybor);
                        break;
                }

            } while (wybor != 4);
            Console.ReadLine();
        }
    }

Rezultat działania aplikacji:

Pętle w C#

Rys. Program do obsługi konta

Rezultat działania aplikacji jest ten sam. Należy unikać słowa kluczowego goto i zastępować je pętlą lub inną konstrukcją programistyczną. Wiąże się to przede wszystkim z problemami podczas debugowania(poprawą błędów w aplikacji). Przy dużym projekcie i skakaniu pomiędzy blokami kodu za pomocą goto debugowanie staje się bardzo trudne.