Změna hodnoty proměnné

Hodnota proměnné se může během programu měnit. Ema prodá vejce a mincí jí přibude:

local mince = 120
print("Mince: " .. mince)
mince = mince + 15
print("Mince: " .. mince)

Vypíše:

Mince: 120
Mince: 135

V matematice by mince = mince + 15 nedávalo smysl. V programování ale = znamená „ulož“: Lua nejdřív spočítá pravou stranu se současnou hodnotou (120 + 15) a výsledek, 135, pak uloží do proměnné mince. Původní hodnota se tím přepíše. Program běží shora dolů, takže první print ještě vypsal 120.

Všimněte si, že na třetím řádku chybí local. To píšete jen jednou, když proměnnou vytváříte. Když ji chcete změnit, napište jen její název, = a novou hodnotu. local mince = mince + 15 by vytvořilo druhou proměnnou se stejným názvem. V krátkém programu, jako je tento, byste rozdíl nepoznali, ale v lekcích o podmínkách a cyklech by se změna ztratila.

Novou hodnotu můžete spočítat i z jiných proměnných. A proměnná si ukládá číslo, ne výpočet, ze kterého vzniklo:

local mrkve = 10
local brambory = 5
local uroda = mrkve + brambory
mrkve = 20
print(uroda)

Vypíše:

15

Když Lua došla k řádku s uroda, spočítala 10 + 5 a uložila 15. Pozdější změna proměnné mrkve už uroda nezmění.

Mnoho jazyků má zkratky jako mince += 15 (přičti 15) nebo mince++ (přičti 1). Standardní Lua nemá žádnou z nich. (Luau z Robloxu += má, ale to je jiná Lua; víc o ní na konci kurzu.) V Lua vždycky píšete celé mince = mince + 15:

local mince = 120
mince += 15

Lua ohlásí:

main.lua:2: syntax error near '+'

Syntax error je chyba syntaxe, kterou znáte z první lekce: program není napsaný podle pravidel jazyka. Near '+' říká, kde se Lua ztratila: rozuměla mince, ale nečekala, že za tím přijde +. Jako u každé chyby syntaxe se nespustí nic, ani řádky nad ní.

Stejnou chybu dostanete, když na řádek napíšete jen mince + 15. Lua nedovolí výpočet, jehož výsledek se nikam neuloží, a tak vás aspoň upozorní, že jste zapomněli mince =.

Pokyny

Spusťte program. Řádky 7 a 8 jsou napsané tak, jak to dovolují některé jiné jazyky, a Lua ohlásí chybu. Opravte oba řádky tak, jak se to dělá v Lua: řádek 7 přičte 4 * 5 k proměnné mince a řádek 8 odečte 4 od proměnné mrkve. Program pak vypíše:

Mince: 50, mrkve: 10
Mince: 70, mrkve: 6

Za utržené peníze si Ema koupí 3 balíčky dýňových semínek po 5 mincích. Na konci programu odečtěte jejich cenu od proměnné mince (3 * 5 nechte spočítat program) a vypište stejný řádek ještě jednou:

Mince: 50, mrkve: 10
Mince: 70, mrkve: 6
Mince: 55, mrkve: 6

Než Ema odejde domů, vytáhne z pole ještě 8 mrkví. Přičtěte je k proměnné mrkve a vypište řádek znovu:

Mince: 50, mrkve: 10
Mince: 70, mrkve: 6
Mince: 55, mrkve: 6
Mince: 55, mrkve: 14

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

2/10