Pętla do-while w C# — różnica względem while

Pętla do…while to bliska krewna pętli while z jedną kluczową różnicą: najpierw wykonuje ciało, a dopiero potem sprawdza warunek.
Czym różni się od while?
Kluczowa cecha: w do…while ciało pętli wykonuje się zawsze co najmniej raz, ponieważ warunek sprawdzany jest na końcu iteracji. W pętli while warunek sprawdzany jest na początku, więc ciało może nie wykonać się ani razu.
Dzięki temu do…while jest idealny tam, gdzie kod musi wykonać się przynajmniej jeden raz — na przykład przy wyświetlaniu menu albo prośbie o dane, którą powtarzamy do momentu poprawnego wprowadzenia.
Składnia
do
{
// blok kodu — wykona się przynajmniej raz
}
while (warunek); // pamiętaj o średniku na końcu- warunek – wyrażenie typu
bool(wymagane); pętla powtarza się, dopóki jesttrue.
Ten średnik po while (warunek) to jedna z najczęstszych literówek u początkujących — w przeciwieństwie do pętli for i while, gdzie po nawiasie z warunkiem nie stawiamy średnika, tutaj jest on wymagany, bo cała konstrukcja do { } while (); jest jedną instrukcją.
Prosty przykład
int i = 0;
do
{
Console.WriteLine(i); // 0, 1, 2, 3, 4
i++;
}
while (i < 5);Praktyczny przykład — walidacja wejścia
Tu do…while pokazuje swoją przewagę: o liczbę pytamy co najmniej raz, a potem powtarzamy, dopóki użytkownik nie poda poprawnej wartości.
int liczba;
bool poprawna;
do
{
Console.Write("Podaj liczbę dodatnią: ");
string? wejscie = Console.ReadLine();
poprawna = int.TryParse(wejscie, out liczba) && liczba > 0;
if (!poprawna)
{
Console.WriteLine("To nie jest liczba dodatnia. Spróbuj ponownie.");
}
}
while (!poprawna);
Console.WriteLine($"Dziękuję, podałeś: {liczba}");Praktyczny przykład — menu konsolowe
Drugi klasyczny przypadek użycia: menu, które musi wyświetlić się przynajmniej raz, zanim cokolwiek wiadomo o wyborze użytkownika:
int wybor;
do
{
Console.WriteLine("1. Nowa gra");
Console.WriteLine("2. Wczytaj zapis");
Console.WriteLine("3. Wyjście");
Console.Write("Wybierz opcję: ");
int.TryParse(Console.ReadLine(), out wybor);
switch (wybor)
{
case 1: Console.WriteLine("Rozpoczynam nową grę..."); break;
case 2: Console.WriteLine("Wczytuję zapis..."); break;
case 3: Console.WriteLine("Do zobaczenia!"); break;
default: Console.WriteLine("Nieznana opcja, spróbuj ponownie."); break;
}
}
while (wybor != 3);Gdybyś napisał to jako zwykłe while, musiałbyś sztucznie zainicjalizować wybor jakąś wartością przed pętlą tylko po to, by warunek na starcie był prawdziwy — do…while eliminuje ten narzut, bo warunek sprawdzany jest dopiero po pierwszym przebiegu.
Kiedy używać do…while?
Wybieraj do…while, gdy ciało pętli ma wykonać się przynajmniej raz, niezależnie od warunku — np. menu, walidacja danych wejściowych, ponawianie operacji. W pozostałych przypadkach zwykle wystarczy while lub for — w praktyce programiści C# sięgają po do…while rzadziej niż po pozostałe pętle, właśnie dlatego, że większość scenariuszy naturalnie pasuje do sprawdzania warunku na początku.
💡 W Visual Studio: wpisz
doi naciśnij dwukrotnie Tab, aby wstawić szkielet pętli.
FAQ
Czy do…while może być nieskończone?
Tak, dokładnie tak samo jak while (true) — do { } while (true); nigdy się nie zakończy bez instrukcji break wewnątrz ciała.
Dlaczego kompilator wymaga średnika po while(warunek) w do…while, a w zwykłym while nie?
Bo w while (warunek) { } blok kodu w nawiasach klamrowych kończy instrukcję. W do { } while (warunek); to średnik po nawiasie z warunkiem kończy całą, jedną instrukcję do…while — inna konstrukcja składniowa, inna reguła.
🚀 Co dalej?
Zobacz to w praktyce na wideo i pobierz darmową roadmapę, żeby ułożyć naukę w spójną ścieżkę do pierwszej pracy.
- 🗺️ Pobierz darmową roadmapę Junior .NET Developer — 12 kroków od podstaw C# do pierwszej pracy: dev-hobby.pl
- 🎬 Subskrybuj kanał YouTube — nowe filmy co tydzień.
2 comments
Dodaj komentarz
Musisz się zalogować, aby móc dodać komentarz.
Zamień wiedzę w umiejętności
Pobierz darmową Roadmapę .NET i ułóż takie tematy jak ten w spójną ścieżkę do pierwszej pracy.
Pobieram roadmapę →
Paul Getty Zwykle Twierdzil, że bezinteresowna przyjazń może istnieć tylko pomiedzy osobami o jednakowych dochodach. I ja sie po niekąd z tym zgadzam 🙂 A ty ?