Cyklus do-while

Cyklus while kontroluje svou podmínku před každým průchodem. Když podmínka neplatí hned na začátku, blok neproběhne ani jednou. Obvykle je to přesně to, co chcete. Někdy ale musí blok proběhnout alespoň jednou. Pro takové případy má jazyk C cyklus do ... while, který podmínku kontroluje až po každém průchodu:

int pocet = 1;
do {
    printf("%d\n", pocet);
    pocet++;
} while (pocet <= 3);
1
2
3

Na začátku je klíčové slovo do (dělej), za ním blok a podmínka přijde až na konec, za uzavírací složenou závorku. Program provede blok, pak zkontroluje podmínku, a pokud platí, provede blok znovu. Všimněte si středníku za podmínkou: } while (pocet <= 3);. Bez něj překladač ohlásí error: expected ';' after do/while statement.

Rozdíl se ukáže, když podmínka neplatí hned od začátku:

int pocet = 10;
do {
    printf("%d\n", pocet);
    pocet++;
} while (pocet <= 3);
10

Blok proběhne jednou, vypíše 10 a teprve potom cyklus zjistí, že 11 <= 3 neplatí. Cyklus while se stejnou podmínkou by nevypsal nic.

Kdy se to hodí? Řekněme, že chcete spočítat číslice nějakého čísla. Celočíselné dělení deseti poslední číslici zahodí (2026 / 10 je 202), takže můžete dělit, dokud nic nezbude: 2026, 202, 20, 2, 0. To jsou čtyři dělení, takže číslo má čtyři číslice:

int cislo = 2026;
int pocet_cislic = 0;
do {
    pocet_cislic++;
    cislo /= 10;
} while (cislo > 0);
printf("Počet číslic: %d\n", pocet_cislic);
Počet číslic: 4

Pro 2026 by fungoval i cyklus while. Jenže i číslo 0 se píše jednou číslicí a pro 0 by cyklus while (cislo > 0) neproběhl ani jednou, takže by program tvrdil, že má 0 číslic. do ... while provede blok alespoň jednou, a nula tak dostane svou jednu číslici.

V praxi se do ... while používá mnohem méně než while a for. Ve vlastních programech na počítači se hodí třeba tehdy, když se program na něco ptá uživatele a ptá se znovu, dokud odpověď není správná. Programy na tomto webu berou data z proměnných, takže ho nebudete potřebovat často.

Pokyny

Program v editoru počítá číslice proměnné cislo. Spusťte ho: vypíše Počet číslic: 0, ale 0 se píše jednou číslicí. Přepište cyklus while na cyklus do ... while: před blok napište do a za jeho uzavírací závorku while (cislo > 0);. Program pak vypíše Počet číslic: 1.

Ověřte, že cyklus funguje i pro jiná čísla: změňte hodnotu proměnné cislo na 2026. Program vypíše Počet číslic: 4.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

10/11