Programming4Fun

Programming4Fun - programujemy z pasją :)

  • Nie jesteś zalogowany.

Ogłoszenie


#1 2014-07-21 19:43:43

doshaker

http://imgur.pl/i/00007/l937h8mw24g6.gif

Zarejestrowany: 2014-07-20
Posty: 11
Punktów :   

Lekcja 5 – Tablice.

Poradnik zaczerpniety ze strony tibia.net.pl.

1. Ogólnie o LUA.
2. Początek skryptu.
3. Użycie if’ów.
4. Zmienne.
5. Tablice.
Funkcje związane z tablicami.

6. Pętle
a) FOR
b) WHILE
7. Komentarze.
8. Ciekawe funkcje.


Lekcja 5 – Tablice.

Tablice są przydatne jeśli chcemy zapisać większą ilość danych. Dane te zawsze oddzielone są przecinkiem. Zapis danych w tablicy może być następujący:

Kod:

{1,2,3,4,5,6}
{x=1,y=2,z=3}

jest jeszcze inny sposób (mieszany: {a=1, 5, 4, x=1000}), ale nie będę o nim pisał, gdyż jest mało wygodny.
Skoro już wiemy jak wyglądają dane w tablicy to najwyższy czas nauczyć się je zapisywać i pobierać. Zapis wygląda tak:

Kod:

 local tablica = {1,2,3,4,5}

Przy sposobie 1. dane z tablicy pobiera się poprzez tablica[index], gdzie tablica to zmienna zawierająca tablicę, a index to pozycja, z której chcemy pobrać dane.
Z kolei w sposobie 2. pobiera się dane przez tablica.index, gdzie index to nazwa zmiennej w tabeli, np. x, y z przykładu.
Dodawać dane do tabeli może trzema sposobami:

Kod:

 1. tabela[index] = wartość (w tabeli {1,2,3})
 2. tabela.index = wartość (w tabeli {x=1,y=2})
 3. table.insert(tablica, [pozycja,] wartość)

Lekcja 5.1 – Funkcje związane z tablicami

a) table.insert(tablica, [pozycja,] wartość)
za pomocą tej funkcji możemy „wstrzyknąć” do tablicy daną wartość, np.

Kod:

 local tablica = {1,2,3,4,5,6,7}
table.insert(tablica, 8)
 print(unpack(tablica))

Funkcja unpack użyta w przykładzie ‘rozpakowuje’ tablicę. Efektem działania naszego przykładu będzie:

Kod:

 1 2 3 4 5 6 7 8

a teraz inny przykład:

Kod:

 local tablica = {2,3,4,5,6,7}
table.insert(tablica, 1, 9)
 print(unpack(tablica))

A teraz otrzymamy:

Kod:

 9 2 3 4 5 6 7

gdyż w table.insert() podaliśmy dokładną pozycję, gdzie ma zostać „wstrzyknięta” liczba 9.
b) table.foreach(tablica, funkcja)
Za pomocą tej funkcji możemy po kolei pobrać dane z tabeli i wrzucić je do kolejnej funkcji, np.

Kod:

 local tablica = {1,2,3,4,5,”LOL”}
table.foreach(tablica, print)

print jest w tym wypadku użytą przez nas funkcją. Jej parametrami zostaną index oraz wartość z tablicy. Wynikiem działania przykładu będzie:

Kod:

 1 1
 2 2
 3 3
 4 4
 5 5
 6 LOL

c) table.sort(tablica [, funkcja])
Funkcja ta sortuje nam dane w tablicy, np.

Kod:

 local tablica = {5,9,-1,-99,1,6,87}
table.sort(tablica)
 print(unpack(tablica))

w rezultacie otrzymamy:

Kod:

 -99 -1 1 5 6 9 87

Jak widać wartości są poustawiane rosnąco, a co jeśli my wolimy malejąco?

Kod:

 local tablica = {5,9,-1,-99,1,6,87}
table.sort(tablica, function(a,b) return a > b end)
 print(unpack(tablica))

Tym razem otrzymamy wynik przeciwny:

Kod:

 87 9 6 5 1 -1 -99

w podobny sposób możemy napisać inne funkcje, które będą sortowały wartości tak jak sobie tego zażyczymy.
d) table.getn(tablica)
Funkcja ta zlicza ilość danych w tabeli, np.

Kod:

 local tablica = {1,2,3,4,5,6,7,8,9}
 print(table.getn(tablica))

funkcja ta wyświetli nam:
9
Więc w łatwy sposób możemy sprawdzić ilość danych w tabeli. Ale jest jeszcze prostszy sposób:

Kod:

 local tablica = {1,5,3,8,3,5,7,4}
 print(#tablica)

Znaczek # sprawia, że jest pobierana ilość danych w tabeli tak jak za pomocą funkcji table.getn(), wynikiem działania przykładu oczywiście będzie liczba 8, bo tyle jest danych.
e) table.remove (table [, pos])
Funkcja ta umożliwia nam kasowanie danych z tablicy. Oto przykład użycia:

Kod:

 local tablica = {x,5,f,2,4,65}
table.remove(tablica)
 print(table.getn(tablica))

Wynik tego będzie równy 0, gdyż funkcja usunie całą tabelę.
Innym użyciem jest wpisanie pozycji, z której chcemy skasować daną:

Kod:

 local tablica = {1,3,2}
 print(table.getn(tablica))
table.remove(tablica, 2) -- Usuniecie liczby 3 z tablicy
 print(table.getn(tablica))

W tym wypadku otrzymamy:
3
2
f) table.setn(table, value)
Ta funkcja służy jedynie do zmiany maksymalnej wartości tablicy. Funkcja mało przydatna, ale też wymaga opisu

Kod:

 a = {}
 print(table.getn(a)) --> 0
table.setn(a, 10000)
 print(table.getn(a)) --> 10000

g) table.find(table, value)
Jest to funkcja napisana w LUA. Przeszukuje ona tablicę w poszukiwaniu wartości value. Jeśli ją znajdzie to zwróci pozycje, na której ta wartość się znajduje. Np.

Kod:

 a = {1,3,5,7,9}
 print(table.find(a, 5)) --> 3

W tym przykładzie funkcja zwróci wartość 3, gdyż liczba 5 znajduje się w tabeli na 3 pozycji.
h) table.countElements(table, item)
Jest to funkcja, która zlicza ilość elementów w tablicy. Oczywiście jak można się domyślić. Np.

Kod:

 a = {1,3,1,2,5,8,1,9}
 print(table.countElements(a, 1)) --> 3

Funkcja ta zliczy wszystkie jedynki w tabeli i wyświetli ich liczbę. W tym przypadku jedynek jest 3 i funkcja wyświetla nam liczbę 3.

Offline

 

Stopka forum

RSS
Powered by PunBB
© Copyright 2002–2008 PunBB
Polityka cookies - Wersja Lo-Fi

[ Generated in 0.110 seconds, 8 queries executed ]


Darmowe Forum | Ciekawe Fora | Darmowe Fora
www.sgaming.pun.pl www.djronnie.pun.pl www.chomiki-pbf.pun.pl www.akatsukifreinds.pun.pl www.chemiaumcs.pun.pl