Vnořené podmínky

Blok může obsahovat jakýkoli kód, i další příkaz if. Příkazu if v bloku jiného příkazu if se říká vnořená podmínka. Hodí se, když jedna otázka dává smysl až po jiné. Než Ema začne sázet, zjistí nejdřív, jestli má semínka, a teprve potom se dívá na počasí:

local maSemena = true
local pocasi = "slunečno"
if maSemena then
    if pocasi == "déšť" then
        print("Ema sází a semínka zalije déšť")
    else
        print("Ema sází a semínka zalévá")
    end
else
    print("Ema si nejdřív koupí semínka")
end

Vypíše:

Ema sází a semínka zalévá

Vnitřní příkaz if se provede, jen když je maSemena pravda. Jeho bloky jsou odsazené o další 4 mezery, celkem o 8, a každé else a end je odsazené stejně jako if, ke kterému patří. Lua se ale na odsazení nedívá: každé end uzavře nejbližší if, který je ještě otevřený. První end uzavře vnitřní if, druhé vnější. Když tady vnitřní end zapomenete, Lua ohlásí main.lua:8: 'end' expected (to close 'if' at line 4) near 'else': před else na řádku 8 měl být if z řádku 4 uzavřený.

Vnořené podmínky se často dají napsat i pomocí and a elseif. Tento kód dělá totéž:

local maSemena = true
local pocasi = "slunečno"
if maSemena and pocasi == "déšť" then
    print("Ema sází a semínka zalije déšť")
elseif maSemena then
    print("Ema sází a semínka zalévá")
else
    print("Ema si nejdřív koupí semínka")
end

Vypíše:

Ema sází a semínka zalévá

K elseif maSemena se program dostane, jen když je první podmínka nepravdivá. Se semínky to znamená, že neprší. Ani jeden způsob není špatný: vyberte ten, který se čte lépe. Když ale ani jeden z obou příkazů if nemá else, je jediný if s and skoro vždy přehlednější: if maSemena and pocasi == "déšť" then místo dvou příkazů if a dvou end.

Pokyny

Na trhu Ema prodá krabici vajec, pokud jich má aspoň 12, a jinak jen mléko od krávy Belly. Do bloku příkazu if pod jeho print přidejte vnořený příkaz if: pokud je vejce aspoň 12, vypište Prodá krabici vajec, jinak vypište Prodá jen mléko. Program vypíše:

Den: sobota, vejce: 8
Ema jede na trh
Prodá jen mléko

Změňte vejce na 20 a spusťte program. Teď jsou pravdivé obě podmínky:

Den: sobota, vejce: 20
Ema jede na trh
Prodá krabici vajec

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

8/10