Sčítání v cyklu
Cykly umějí víc než vypisovat. Velmi často sčítají mnoho hodnot. Emě dozrávají jahody: první den natrhá 1 košík, druhý den dva, třetí den tři a tak dál. Kolik košíků natrhá za 10 dní?
local celkem = 0
for den = 1, 10 do
celkem = celkem + den
end
print("Košíků: " .. celkem)Košíků: 55Proměnná celkem sbírá součet. Začíná na 0, protože než cokoli přičtete, je součet nula. V každém průchodu celkem = celkem + den přičte košíky jednoho dne. Kdybyste chtěli vidět, jak součet roste, můžete ho na chvíli vypisovat přímo v cyklu:
local celkem = 0
for den = 1, 5 do
celkem = celkem + den
print(celkem)
end1
3
6
10
15Po prvním dni je součet 1, po druhém 3 (1 + 2), pak 6 (1 + 2 + 3) a tak dál. Takový výpis hodnot uvnitř cyklu je nejjednodušší způsob, jak zjistit, co cyklus doopravdy dělá, když vás jeho výsledek překvapí.
Záleží na tom, kam který řádek patří:
local celkem = 0patří před cyklus, aby se provedlo jen jednou. Uvnitř bloku cyklu by v každém průchodu vytvořilo novou proměnnoucelkems hodnotou 0. A za cyklem by taková proměnnácelkemneexistovala: lokální proměnná vytvořená v bloku existuje jen v tomto bloku, stejně jako proměnná cyklufor. Program by skončil chybouattempt to concatenate a nil value (global 'celkem').printpatří za cyklus, kde už je součet hotový. Uvnitř cyklu vypíše každý mezisoučet, jako výše.
Průměr je součet vydělený počtem hodnot. Nezapomeňte, že / dává vždycky desetinné číslo:
local celkem = 0
for den = 1, 10 do
celkem = celkem + den
end
print("Průměr: " .. celkem / 10)Průměr: 5.5Výpočet celkem / 10 proběhne dřív než spojení pomocí .., takže závorky nepotřebujete. Kdyby byl součet 60, dostali byste 6.0. Pokud chcete vždy vypsat jedno desetinné místo, použijte string.format("%.1f", celkem / 10).
Jak psát:
Pokyny
Kolik jahod Ema za těchto šest dní natrhá? Před cyklem vytvořte lokální proměnnou celkem s hodnotou 0. V cyklu k ní přičtěte jahody daného dne, den * 3. Za cyklem vypište součet:
Celkem: 63Na konci programu vypište průměrný počet jahod za den: celkem vydělené 6:
Průměr: 10.5Začněte programovat zdarma
5/10