Cyklus repeat

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. Lua má ještě jeden cyklus, repeat … until (opakuj, dokud nebude…), který podmínku kontroluje po každém průchodu:

local voda = 0
repeat
    voda = voda + 8
    print("Voda v korytě: " .. voda)
until voda >= 20
Voda v korytě: 8
Voda v korytě: 16
Voda v korytě: 24

Blok je mezi repeat a until a podmínka je až úplně na konci. Není tu žádné do ani end: cyklus uzavírá until se svou podmínkou. Dejte pozor na význam podmínky: while běží, dokud podmínka platí, ale repeat běží, dokud nezačne platit. Jakmile platí voda >= 20, cyklus skončí.

Rozdíl se ukáže, když je koryto plné už na začátku:

local voda = 30
repeat
    voda = voda + 8
    print("Voda v korytě: " .. voda)
until voda >= 20
Voda v korytě: 38

Blok proběhne jednou a teprve potom cyklus zjistí, že má skončit. Koryto přeteče. while voda < 20 do by žádnou vodu nepřilil. repeat proto použijte jen tehdy, když blok musí proběhnout aspoň jednou.

Kdy to tak je? Například když počítáte číslice nějakého čísla. Celočíselné dělení deseti zahodí poslední číslici (1250 // 10 je 125), takže můžete dělit, dokud nic nezbude: 1250, 125, 12, 1, 0. To jsou čtyři dělení, takže 1250 má čtyři číslice. I nula se píše jednou číslicí a repeat zajistí, že i ona dostane své jedno dělení. Vyzkoušíte si to ve cvičení.

Ještě jednu věc umí jen repeat: podmínka za until může použít lokální proměnnou vytvořenou uvnitř bloku. Eminy slepice snesou 4 vejce denně. Za kolik dní bude mít Ema aspoň 10 vajec?

local den = 0
repeat
    den = den + 1
    local vejce = den * 4
    print("Den " .. den .. ", vejce: " .. vejce)
until vejce >= 10
Den 1, vejce: 4
Den 2, vejce: 8
Den 3, vejce: 12

V cyklu while by to nešlo: jeho podmínka je před blokem, kde proměnná vejce ještě neexistuje.

Pokyny

Program počítá číslice proměnné mince. Spusťte ho: vypíše Počet číslic: 0, ale nula se píše jednou číslicí. Přepište cyklus while na cyklus repeat, který se bude opakovat, dokud v proměnné mince nebude 0. Program pak vypíše Počet číslic: 1.

Ověřte, že cyklus funguje i pro jiná čísla: změňte hodnotu proměnné mince na 1250. 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í:

7/10