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.