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: 14

Pří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 then a end. Blok se provede, jen když je podmínka pravdivá;
  • klíčové slovo end (anglicky „konec“), které ukončuje blok i celý příkaz if.

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")
end
main.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>

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é pole

Pod 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

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

Nebo se registrujte pomocí:

1/10