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 >= 20Voda v korytě: 8
Voda v korytě: 16
Voda v korytě: 24Blok 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 >= 20Voda v korytě: 38Blok 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 >= 10Den 1, vejce: 4
Den 2, vejce: 8
Den 3, vejce: 12V cyklu while by to nešlo: jeho podmínka je před blokem, kde proměnná vejce ještě neexistuje.
Jak psát:
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: 4Začněte programovat zdarma
7/10