Pętla do...while
w C++ jest specyficzną konstrukcją pętli, która gwarantuje wykonanie ciała pętli co najmniej raz, niezależnie od tego, czy warunek jest spełniony. To kluczowa cecha odróżniająca ją od pętli while
i for
.
1. Składnia pętli do...while
do {
// Instrukcje wykonywane co najmniej raz
} while (warunek);
do
– słowo kluczowe oznaczające początek pętli.
Ciało pętli – blok instrukcji, który zostanie wykonany co najmniej raz.
while (warunek)
– po zamknięciu klamry }
, sprawdzany jest warunek kontynuacji pętli. Jeśli warunek jest true
, pętla działa dalej. Jeśli jest false
, pętla kończy działanie.
Średnik (;
) – po while(warunek)
zawsze musi znajdować się średnik.
Przykład podstawowy – wykonanie co najmniej raz
#include <iostream>
using namespace std;
int main() {
int liczba;
do {
cout << "Podaj liczbę większą od zera: ";
cin >> liczba;
} while (liczba <= 0);
cout << "Dziękuję! Podałeś liczbę: " << liczba << endl;
return 0;
}
Działanie:
- Program prosi o podanie liczby większej od zera.
- Nawet jeśli użytkownik od razu poda liczbę spełniającą warunek, ciało pętli i tak wykona się co najmniej raz.
- Pętla będzie działać do momentu, aż użytkownik poda poprawną wartość.
3. Różnice między do...while
a while
Cecha | Pętla do...while | Pętla while |
---|---|---|
Wykonanie co najmniej raz | ✅ Tak | ❌ Nie zawsze |
Położenie warunku | Na końcu pętli | Na początku pętli |
Przydatność | Idealna, gdy ciało musi wykonać się co najmniej raz | Lepsza przy warunkach, które mogą być od razu fałszywe |
4. Typowe zastosowania pętli do...while
✅ Pobieranie danych od użytkownika aż do spełnienia warunku (np. poprawne hasło).
✅ Powtarzanie menu w aplikacji aż do wybrania opcji “Zakończ”.
✅ Tworzenie gier, w których gracz ma powtarzać akcję do momentu wygranej lub porażki.
5. Pułapki i błędy w pętli do...while
🔹 Zapomnienie o średniku po while(warunek);
— to częsty błąd początkujących.
🔹 Niepoprawny warunek może prowadzić do nieskończonej pętli.
🔹 Nieprzewidziane dane wejściowe (np. litery zamiast liczb) mogą powodować błędy — warto dodać mechanizmy obsługi błędów.