Lua - pętle.doc

(38 KB) Pobierz

Lua - pętle

Co to są pętle? Pętla jest to instrukcja, która jest ograniczona danym warunkiem i będzie ona wykonywania, aż podany warunek zostanie spełniony. 

Podstawową pętlą jaką poznacie jest pętla while. Pętla ta będzie wykonywana, dopóki podany warunek będzie spełniony. Warunkiem mogą być wartości liczbowe, ciągi łańcuchowe czy wartości boolean. A oto przykład:

Kod:

local i = 5

 

while i > 0 do

print(i)

i = i - 1

end

 

print('Koniec ;)')

Kod wypisze na ekranie pięć liczb, od 5 do 1. Co ważne do powiedzenia przy okazji tej pętli jest to, że musi być zakończona 'endem'. Równie dobrze pętla while może posiadać więcej warunków:

Kod:

local i = 5

local a = 3

 

while (i > 0) and (a < 8) do

print(i, a)

i = i - 1

a = a + 1

end

 

print('Koniec ;)')

Drugą pętlą podobną do while jest pętla repeat. Działa ona jak while, z tym że jest ona wykonywana do czasu, aż podany warunek nie będzie prawdziwy. Przykład:

Kod:

local i = 5

 

repeat

print(i)

i = i - 1

until i == 0

W tym przypadku ważne jest to, że pętli repeat nie kończymy endem. Tak samo jak w przypadku while, repeat może posiadać więcej warunków:

Kod:

local i = 5

local a = 3

 

repeat

print(i,a)

i = i - 1

a = a + 1

until (i == 0) or (a == 8)

Teraz omówię trzeci rodzaj pętli, różniący się znacznie od omówionych wcześniej. Jest to pętla for. Tym razem pętla wykonuje instrukcje określoną liczbę razy. Jest określona wartością liczbową. Granicą dolną i górną zakresu for, mogą być zmienne, wartości tablicowe. Do tego celu nie można wykorzystywać wartości boolean oraz ciągów znaków.

Kod:

for i = 1, 5 do

print(i)

i = i + 1

end

Elementem, który rzuca się na pierwszy rzut oka jest to, że zmienna 'i' nie została wcześniej zadeklarowana i w deklaracji pętli nadaliśmy jej wartość '1'. Deklaracja pętli for:

Kod:

for i = 1, 5 do

Kluczowym elementem jest oczywiście zmienna 'i' i nadanie jej wartości, dzięki temu możemy pobierać, który raz pętla została wywołana i zapisać wartość w pamięci komputera. Po przecinku podajemy wartość, do której zadeklarowana zmienna ma zwiększać swoją wartość. Ostatnim elementem jest słowo do. Informuje ono interpretator o zaczęciu wykonywania pętli for.

Teraz omówię dodatkowe zastosowania pętli for. Dwie instrukcje, które powinieneś poznać to pairs i ipairs. Są one ściśle związane z zawartościami tablic. Dzięki nim możemy wywołać wszystkie wartości z danej tablicy w jednej pętli for. W przypadku instrukcji pairs, dane tablicowe są wyciągane z tablicy w kolejności indeksowej, czyli według numerowania:

Kod:

local tbl = {3,7,4,2,3}

 

for _, k in pairs(tbl) do

print(k)

end

Natomiast ipairs wyciąga dane z tablicy według kolejności ich wpisania (?):

Kod:

local tbl = {3,7,4,2,3}

 

for _, k in ipairs(tbl) do

print(k)

end

To wszystkie informacje, które powinieneś wiedzieć o tym rodzaju pętli na tym poziomie zaawansowania. 

Kolejną rzeczą, którą trzeba dopowiedzieć przy spotkaniu z pętlami jest instrukcja break. Jak sama nazwa mówi, instrukcja ta dosłownie "łamie" pętlę. Dzięki niej możemy w środku pętli użyć wyrażenia warunkowego, aby ją zakończyć podczas wykonywania. 

Kod:

for i = 1, 10000 do

k = math.random(2)

if k == 2 then

  print('Pętla zakonczona za ' .. i .. ' razem.')

  break

end

end

Ostatnim zagadnieniem, jakie chcę teraz poruszyć to wykonywanie paru pętli na raz. Praktycznie nie ma tu filozofii, ale warto coś na ten temat powiedzieć. 

Kod:

for a = 1, 100 do

for b = 1, 100 do

  for c = 1, 100 do

   c = c + 1

  end

b = b + 1

end

a = a + 1

end

Która pętle zostanie wykonana pierwsza? Oczywiście, że pętla ze zmienną 'c'. Pierwsza została zadeklarowana pętla ze zmienną 'a', w niej pętla ze zmienną 'b', a jeszcze w niej pętla ze zmienną 'c'. Logicznie rzecz ujmując, umieszczając instrukcję break na "terenie" pętli ze zmienną 'c', zakończymy tylko właśnie tą pętle. 

Cały materiał, który miałem zamiar przekazać przekazałem. Czekam na uwagi i propozycje.

Autor: Simon

http://forum.tibia.tv/showthread.php?t=28046

Zgłoś jeśli naruszono regulamin