Příkaz if
Zatím vaše programy prováděly všechny řádky jeden po druhém, shora dolů. Program se ale často musí rozhodnout, co udělá: zalít pole, jen když nepršelo, nebo vézt vejce na trh, jen když jich je dost. Takhle se rozhodujeme pořád: pokud bude pršet, vezmu si deštník.
V jazyce Lua se rozhodnutí zapisuje příkazem if (anglicky „pokud“):
local vejce = 14
if vejce > 12 then
print("Vajec je dost na trh")
end
print("Vajec v košíku: " .. vejce)Vypíše:
Vajec je dost na trh
Vajec v košíku: 14Příkaz if má tyto části:
- klíčové slovo
if. Klíčové slovo je slovo, které má v Lua zvláštní význam, a proto se nedá použít jako název proměnné; - podmínku:
vejce > 12. Podmínka je otázka, na kterou se dá odpovědět jen ano (pravda), nebo ne (nepravda): je vajec víc než 12? - klíčové slovo
then(anglicky „pak“), které podmínku ukončuje; - blok kódu: řádky mezi
thenaend. Blok se provede, jen když je podmínka pravdivá; - klíčové slovo
end(anglicky „konec“), které ukončuje blok i celý příkazif.
Za end program pokračuje jako obvykle, takže Vajec v košíku: 14 se vypíše v každém případě. Kdyby vejce bylo 8, podmínka by byla nepravdivá: program by blok přeskočil a vypsal jen Vajec v košíku: 8.
V podmínce můžete porovnávat pomocí > (větší než) a < (menší než) stejně jako v matematice. Další porovnání poznáte v příštím cvičení.
Řádky bloku jsou odsazené: začínají 4 mezerami. Lua odsazení nepotřebuje: o tom, co patří do bloku, rozhodují then a end. Odsazení je pro lidi: na první pohled ukazuje, které řádky se provádějí jen někdy, a proto ho vždy používejte. Klávesa Tab vloží 4 mezery, a když stisknete Enter, nový řádek začne se stejným odsazením jako ten nad ním; před end ho zase smažte.
Nejčastější chyby jsou chybějící then a chybějící end. Obě Lua najde dřív, než cokoli spustí, takže program nic nevypíše:
local vejce = 14
if vejce > 12
print("Vajec je dost na trh")
endmain.lua:3: 'then' expected near 'print'Chyba ukazuje na řádek 3, protože až u print Lua zjistí, že chybí then. Bez end dojde Lua na konec programu, <eof> (anglicky „end of file“, konec souboru), a napíše, který if není uzavřený:
local vejce = 14
if vejce > 12 then
print("Vajec je dost na trh")
print("Vajec v košíku: " .. vejce)main.lua:4: 'end' expected (to close 'if' at line 2) near <eof>Jak psát:
Pokyny
Pod poslední řádek napište příkaz if s podmínkou voda > 20. V jeho bloku vypište Ema může zalít celé pole. Program vypíše:
Voda ve studni: 30 kbelíků
Ema může zalít celé polePod jeho end napište druhý příkaz if s podmínkou voda < 10, který vypíše Studna je skoro prázdná. Spusťte program: pořád vypíše jen dva řádky, protože 30 není menší než 10, a druhý blok se proto přeskočí.
Změňte voda na 5 a spusťte program. Teď je první podmínka nepravdivá a druhá pravdivá, takže program vypíše:
Voda ve studni: 5 kbelíků
Studna je skoro prázdnáZačněte programovat zdarma
1/10