Porovnávací operátory
Znaky > a < jsou porovnávací operátory: porovnávají dvě hodnoty. Lua jich má šest:
==rovná se:5 == 5~=nerovná se:5 ~= 3>je větší než:5 > 3<je menší než:3 < 5>=je větší nebo rovno:5 >= 5<=je menší nebo rovno:3 <= 5
Všechny příklady v seznamu jsou pravdivé. Dejte pozor na hranici: 12 > 12 je nepravda, ale 12 >= 12 je pravda. „Aspoň tucet vajec“ je tedy vejce >= 12.
Každé porovnání dává pravdivostní hodnotu true (pravda), nebo false (nepravda), kterou znáte z minulé lekce. Můžete ji vypsat nebo uložit do proměnné:
local vejce = 12
print(vejce > 12, vejce >= 12)
local jeTucet = vejce == 12
print("Tucet:", jeTucet)Vypíše:
false true
Tucet: trueV local jeTucet = vejce == 12 Lua nejdřív porovná a teprve potom výsledek uloží. „Rovná se“ se píše dvěma rovnítky, protože jedno už má svou práci: vejce = 12 přiřazuje (uloží 12 do vejce), kdežto vejce == 12 porovnává (ptá se, jestli je vejce 12, a nic nemění). Jedno = v podmínce je chyba syntaxe: if vejce = 12 then skončí hláškou 'then' expected near '='.
„Nerovná se“ se v Lua píše ~=, tedy vlnovka a rovnítko. Mnoho jiných jazyků píše !=, a tomu Lua nerozumí:
local den = "pondělí"
if den != "sobota" then
print("Dnes trh není")
endmain.lua:2: 'then' expected near '!'Porovnávat můžete i texty. Dva texty se rovnají, jen když se shodují přesně, znak po znaku: "Mrkev" == "mrkev" je nepravda, protože velké písmeno je jiný znak. < a > porovnávají texty podle abecedy: "brambory" < "mrkev" je pravda. Abeceda Lua má ale dvě zvláštnosti: všechna velká písmena jsou před všemi malými, takže i "Zelí" < "brambory" je pravda, a písmena s diakritikou (č, ř, ž…) jsou až za všemi ostatními, takže "čaj" < "zelí" je nepravda.
Číslo a text se nikdy nerovnají, takže 12 == "12" je nepravda, i když "10" + 5 Lua na číslo převede sama. A <, >, <= nebo >= mezi číslem a textem skončí chybou:
local vejce = "14"
if vejce < 12 then
print("Vajec je málo")
endmain.lua:2: attempt to compare string with numberKdyž číslo přijde jako text, převeďte ho nejdřív pomocí tonumber.
Jak psát:
Pokyny
Spusťte program: skončí chybou. Opravte podmínku pomocí operátoru „nerovná se“ tak, jak se píše v Lua. Program pak vypíše:
Trh je otevřený jen v sobotu
Mrkve: 15Obchodník Hugo kupuje mrkve po tuctech. Na konec programu napište příkaz if, který vypíše Hugo koupí tucet mrkví, pokud je mrkve 12 nebo víc. Program vypíše:
Trh je otevřený jen v sobotu
Mrkve: 15
Hugo koupí tucet mrkvíZměňte mrkve na 12. Tucet je přesně 12, takže Hugo mrkve koupí i teď a program vypíše:
Trh je otevřený jen v sobotu
Mrkve: 12
Hugo koupí tucet mrkvíPokud poslední řádek chybí, zkontrolujte porovnávací operátor.
Začněte programovat zdarma
2/10