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ů: 55

Promě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)
end
1
3
6
10
15

Po 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 = 0 patří před cyklus, aby se provedlo jen jednou. Uvnitř bloku cyklu by v každém průchodu vytvořilo novou proměnnou celkem s hodnotou 0. A za cyklem by taková proměnná celkem neexistovala: lokální proměnná vytvořená v bloku existuje jen v tomto bloku, stejně jako proměnná cyklu for. Program by skončil chybou attempt to concatenate a nil value (global 'celkem').
  • print patří 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.5

Vý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).

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: 63

Na konci programu vypište průměrný počet jahod za den: celkem vydělené 6:

Průměr: 10.5

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

5/10