Pozpátku a po krocích
Cyklus for může mít i třetí číslo, krok: kolik se má k proměnné přičíst po každém průchodu. Když ho vynecháte, je krok 1. S krokem -1 cyklus počítá pozpátku:
for den = 3, 1, -1 do
print("Dní do sklizně: " .. den)
end
print("Sklizeň!")Dní do sklizně: 3
Dní do sklizně: 2
Dní do sklizně: 1
Sklizeň!Když počítáte pozpátku, nezapomeňte na -1. Bez něj by cyklus počítal nahoru od 3 do 1. Taková čísla neexistují, a tak cyklus neproběhne ani jednou. Pro Lua to není chyba, cyklus prostě nic neudělá:
for den = 3, 1 do
print("Dní do sklizně: " .. den)
end
print("Sklizeň!")Sklizeň!Totéž se stane vždycky, když je začátek za koncem: for i = 1, 0 do proběhne nulakrát. Často je to přesně tak správně: s for zahon = 1, pocetZahonu do a pocetZahonu rovným 0 není co zalévat a cyklus nic neudělá.
S krokem 2 vezme cyklus každé druhé číslo:
for zahon = 1, 7, 2 do
print("Zalévám záhon " .. zahon)
endZalévám záhon 1
Zalévám záhon 3
Zalévám záhon 5
Zalévám záhon 7Proměnná nemusí konec trefit přesně. Cyklus skončí, jakmile by další číslo konec přeskočilo. Slepice dostávají čistou slámu každý čtvrtý den. Za 10 dní to vypadá takto:
for den = 4, 10, 4 do
print("Den " .. den .. ": čistá sláma pro slepice")
endDen 4: čistá sláma pro slepice
Den 8: čistá sláma pro slepicePo osmičce by přišla dvanáctka, a ta je za desítkou, takže cyklus skončí. Krok ale nesmí být 0: proměnná by se nikam nepohnula, a tak Lua skončí chybou 'for' step is zero.
Nejčastější chyba v cyklech je chyba o jedničku: cyklus proběhne o jeden průchod víc nebo míň, než má. for i = 0, 3 do proběhne čtyřikrát, pro 0, 1, 2 a 3. V Lua budete skoro vždycky počítat od 1, takže for i = 1, 3 do proběhne přesně třikrát. Když si nejste jistí, kolikrát cyklus proběhne, zapište si hodnoty, kterými jeho proměnná projde, a spočítejte je.
Jak psát:
Pokyny
Rex štěká čtyřikrát místo třikrát. Opravte cyklus tak, aby program vypsal Haf! přesně třikrát:
Haf!
Haf!
Haf!Emina rajčata dozrají za 5 dní. Pod Rexův cyklus napište cyklus for, který bude odpočítávat od 5 do 1, každé číslo na samostatném řádku. Za cyklem vypište Rajčata jsou zralá!. Pod Rexovým štěkáním program vypíše:
5
4
3
2
1
Rajčata jsou zralá!V měsíci o 30 dnech uklízí Ema stodolu každý sedmý den. Na konec programu napište cyklus s krokem 7, který vypíše:
Den 7: úklid stodoly
Den 14: úklid stodoly
Den 21: úklid stodoly
Den 28: úklid stodolyZačněte programovat zdarma
4/10