Rozsahy

Mnoho podmínek se ptá, jestli číslo leží v nějakém rozsahu: je teplota mezi 10 a 25 stupni? Váží dýně od 4 do 8 kg? V matematice byste napsali 10 ≤ t ≤ 25. V Lua potřebujete dvě porovnání spojená pomocí and:

local teplota = 18
if teplota >= 10 and teplota <= 25 then
    print("Slepicím je příjemně")
end

Vypíše:

Slepicím je příjemně

Každá část je celé porovnání, ve kterém je teplota. Zápis z matematiky nefunguje a jeho chyba vás může zmást:

local teplota = 18
if 10 <= teplota <= 25 then
    print("Slepicím je příjemně")
end
main.lua:2: attempt to compare boolean with number

Lua porovnává zleva doprava: 10 <= teplota dá true a pak se snaží o true <= 25, tedy porovnat pravdivostní hodnotu s číslem. Opak, „mimo rozsah“, potřebuje or: teplota < 10 or teplota > 25. S and by podmínka nebyla pravdivá nikdy, protože žádné číslo není zároveň menší než 10 a větší než 25.

Když čísla dělíte do několika rozsahů, použijte elseif. Každé elseif se provede, jen když všechny podmínky nad ním byly nepravdivé, takže je nemusí opakovat:

local hmotnost = 6
if hmotnost < 4 then
    print("Malá dýně: 10 mincí")
elseif hmotnost <= 8 then
    print("Střední dýně: 20 mincí")
else
    print("Velká dýně: 35 mincí")
end

Vypíše:

Střední dýně: 20 mincí

K hmotnost <= 8 se program dostane, jen když je hmotnost < 4 nepravda, takže hmotnost >= 4 and hmotnost <= 8 není potřeba. Hlídejte hranice: dýně o 4 kg je střední, dýně o 8 kg je pořád střední a else vezme všechno nad 8. Každé číslo by mělo patřit právě do jednoho rozsahu: s podmínkami hmotnost < 4 a hmotnost > 4 by dýně o přesně 4 kg propadla mezerou mezi nimi.

Rozsahy se dají kombinovat s dalšími podmínkami. Jak Ema zalévá pole, záleží na počasí i na teplotě:

local pocasi = "slunečno"
local teplota = 31
if pocasi == "déšť" then
    print("Dnes se nezalévá")
elseif teplota >= 30 then
    print("Zalévat ráno i večer")
elseif teplota >= 15 then
    print("Zalévat večer")
else
    print("Zalévat obden")
end

Vypíše:

Zalévat ráno i večer

Pokyny

Spusťte program: skončí chybou. Opravte podmínku pomocí and. Program pak vypíše:

Kurník: 18 °C
Slepicím je příjemně

Přidejte další dvě větve pomocí elseif a else: pod 10 °C vypište Rozsviťte v kurníku lampu a nad 25 °C vypište Otevřete v kurníku okna. Pak změňte teplota na 31. Program vypíše:

Kurník: 31 °C
Otevřete v kurníku okna

Vyzkoušejte hranici: změňte teplota na 10. Při 10 °C je slepicím ještě příjemně, takže program vypíše:

Kurník: 10 °C
Slepicím je příjemně

Pokud vypíše Rozsviťte v kurníku lampu, podívejte se na < a <= ve svých podmínkách.

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

9/10