Cyklus for

Většina cyklů, které počítají, má stejné tři části: proměnnou vytvořenou před cyklem, podmínku a krok na konci bloku:

local den = 1          -- začátek
while den <= 5 do      -- podmínka
    print("Den " .. den)
    den = den + 1      -- krok
end

Takové počítání je tak časté, že má Lua cyklus, který všechny tři části zvládne na jednom řádku. Je to cyklus for (pro):

for den = 1, 5 do
    print("Den " .. den)
end

Oba cykly vypíšou totéž:

Den 1
Den 2
Den 3
Den 4
Den 5

První řádek čtěte jako „pro den od 1 do 5 dělej“. Cyklus dává proměnné den postupně hodnoty 1, 2, 3, 4 a 5, v každém průchodu jednu. Obě čísla se počítají: cyklus začne prvním a skončí posledním. Proměnnou nemusíte vytvářet před cyklem, nepíšete žádnou podmínku a proměnnou ani sami nezvětšujete: to všechno for udělá za vás. Nemůžete tedy zapomenout na krok a skončit v nekonečném cyklu.

Začátek a konec se oddělují čárkou. for den = 1 to 5 do skončí chybou main.lua:1: ',' expected near 'to'. Mohou to být i proměnné nebo výpočty, například for zahon = 1, pocetZahonu do.

Proměnná cyklu se často jmenuje i, ale může mít jakýkoli název. Cyklus for ji sám udělá lokální, takže před ni local nepište:

for local i = 1, 3 do
    print(i)
end
main.lua:1: <name> expected near 'local'

Proměnná cyklu existuje jen uvnitř cyklu. Za jeho end je její název zase neznámý, a tak má hodnotu nil:

for i = 1, 3 do
    print(i)
end
print(i)
1
2
3
nil

Když hodnotu potřebujete i za cyklem, použijte cyklus while s proměnnou vytvořenou před ním, jako v předchozích cvičeních. Na druhou stranu může mít každý cyklus své vlastní i, protože každé i zmizí, jakmile jeho cyklus skončí.

for, nebo while? for použijte, když víte, kolikrát se cyklus provede: od 1 do 10 nebo jednou pro každý den v týdnu. while použijte, když to předem nevíte. Ema plní koryto pro krávu Bellu vodou ze studny, 8 litrů na jeden kbelík. Kolik kbelíků potřebuje na aspoň 50 litrů?

local voda = 0
local kbeliky = 0
while voda < 50 do
    voda = voda + 8
    kbeliky = kbeliky + 1
end
print("Kbelíků: " .. kbeliky)
print("Voda: " .. voda .. " litrů")
Kbelíků: 7
Voda: 56 litrů

Pokyny

Přepište cyklus while z editoru na cyklus for s proměnnou zahon. Cyklus while a řádek, který vytváří proměnnou zahon, smažte. Program bude dál vypisovat Záhon 1 až Záhon 5.

Ema si pronajala další pole. Změňte svůj cyklus tak, aby vypsal záhony od 1 do 8, včetně osmičky:

Záhon 1
Záhon 2
Záhon 3
Záhon 4
Záhon 5
Záhon 6
Záhon 7
Záhon 8

Emina slunečnice vyroste každý den o 4 cm. Pod první cyklus napište druhý cyklus for s proměnnou den od 1 do 7, který vypíše, jak je slunečnice po každém dni vysoká. Výšku můžete spočítat přímo v print: den * 4. Druhý cyklus vypíše:

Den 1: 4 cm
Den 2: 8 cm
Den 3: 12 cm
Den 4: 16 cm
Den 5: 20 cm
Den 6: 24 cm
Den 7: 28 cm

Začněte programovat zdarma

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

Nebo se registrujte pomocí:

3/10