cze 29, 2010 Posted Under: Kurs Lua, Lua

Kurs Lua cz. II – zmienne

W naszych skryptach nie raz, nie dwa razy będziemy mieli potrzebę przechowania jakichś wartości, czy to liczb czy napisów, i korzystania z nich w różnych miejscach. Do tego właśnie posłużą nam zmienne. Zmienna to miejsce w pamięci w którym jest przechowywana jej wartość i do której można się odnieść przez jej identyfikator (nazwę). Lua jest językiem z dynamicznym typowaniem, oznacza to że nie przypisuje na sztywno typu zmiennej. W praktyce oznacza to że możemy przykładowo potraktować zmienną liczbową jako tekst, i na odwrót (o ile jest to możliwe).

1. Typy danych

Mimo że Lua w większości przypadków średnio przywiązuje wagę do typu zmiennej to jednak trzeba je znać.
Rozróżniamy 8 podstawowych typów danych:

  • nil – typ posiadający tylko jedną wartość, nil. Oznacza tylko tyle że dana zmienna jest pusta, lub, jak kto woli, nie istnieje.
  • boolean - typ logiczny, reprezentują go 2 wartości true (prawda) i false (fałsz).
  • number – jak sama nazwa wskazuje, typ liczbowy, zarówno dla liczb całkowitych jak i rzeczywistych. Liczby możemy podawać w różnych postaciach, dziesiętnej (12431, 3.12), szesnastkowej (0×4134), wykładniczej (3.32e-2, 2.2e10, 10e+15)
  • string - a inaczej łańcuch znaków. String możemy zapisać na 3 sposoby:
    1. „w cudzysłowu”
    2. ‘w apostrofach’
    3. [[i wielolinkjkowe stringi
      pomiędzy nawiasami kwadratowymi]]
  • table - tablice, pozwalają przechowywać wiele wartości pod jedną nazwą. Więcej o nich będzie w kolejnych częściach.
  • function - funkcje, o nich też będzie później
  • userdata, thread - kolejne typy które na razie nas nie interesują :)

2. Funkcja type()

type() jest standardową funkcją pozwalającą sprawdzić typ zmiennej/wartości. Myślę że najlepiej zilustruje to przykład:

print(type(1))
print(type("Lancuch znakow"))
print(type(true))
print(type(nil))
print(type(type)) --funkcja to też typ!

Polecam samodzielnie uruchomić i sprawdzić wynik.

3. Użycie zmiennych

No tak, już trzeci punkt a my jeszcze nie wiemy jak wygląda zmienna i jak jej używać. Więc do rzeczy: jedyne co musimy zrobić to zainicjalizować zmienną, a nie znaczy to nic innego jak przypisać do niej jakąś wartość używając znaku równości (=).
Potem możemy ją np. wypisać. Kolejny raz zademonstruję to na przykładzie który polecam uruchomić:

a = 5 --przypisujemy do zmienej a wartość 5
b = "Jakis tekst" --przypisujemy do zmiennej b łańcuch "Jakis tekst"

print(a) --wypisujemy wartość zmiennej a
a = 10
print(a) --wypisujemy wartość zmiennej a

print(b) --wypisujemy wartość zmiennej b
print(c) --a co to?

print(type(a)) --wypisujemy TYP wartości zmiennej a
print(type(b)) --wypisujemy TYP wartości zmiennej b

Wydaje mi się że nie trzeba tego tłumaczyć, wszystko sprowadza się do przypisania wartości do identyfikatora (nazwy) zmiennej. Jednak wkradła się pewna niejasność. Mianowicie, o co chodzi w print(c)? Przecież nie przypisaliśmy do żadnej wartości więc jak możemy ją wypisać? A no możemy, niezainicjalizowana zmienna nie ma wartości, a brak wartości, jak wiemy z poprzedniego akapitu oznaczany jest przez nil, i to właśnie zostanie mam wypisane.

4. Interakcja z użytkownikiem

No właśnie, a może by tak uczynić skrypt atrakcyjniejszym, pobrać dane od użytkownika i coś z nimi zrobić?;)
Do wczytywania ze standardowego wejścia służy funkcja io.read(). Zwraca ona to, co napisze użytkownik. Oczywiście, wyjaśnienie na przykładzie do uruchomienia:

print("Jak sie nazywasz?")
imie = io.read() --przypisanie do zmiennej imie tekstu pobranego ze std. wejścia
print("Witaj "..imie.."!") --wypisanie imienia

Co się dzieje? Pierwszej linii oczywiście nie trzeba tłumaczyć, gorzej z kolejnymi. W drugiej lini do zmiennej imie przypisujemy wartość którą zwróci nam funkcja io.read() (o funkcjach i wartościach- przezeń zwracanych będzie w kolejnych lekcjach). Funkcja ta zatrzymuje działanie skryptu do czasu gdy użytkownik nie wpisze tekstu (zakończonego znakiem nowej linii).  Trzecia linia wygląda znajomo… no prawie. Pojawiło się w niej coś nowego, mianowicie operator łączenia stringów: nic skomplikowanego, łączymy dwa stringi za pomocą „..”.

5. Podsumowanie

Po dzisiejszej lekcji wiemy już nieco więcej:

  • Znamy podstawowe typy danych w Lua
  • Umiemy używać zmiennych (przypisywać wartości, wypisywać, sprawdzać typ)
  • Umiemy pobrać dane od użytkownika

Polecam pobawić się tym żeby dokładnie przyswoić sobie informacje. Będą nam one potrzebne podczas przerabiania kolejnych części kursu.

2 Responses to “Kurs Lua cz. II – zmienne”

  1. Tomo pisze:

    Dawaj kolejną część xdd
    print(„podaj liczbe a „)
    a = io.read()
    print(„podaj liczbe b „)
    b = io.read()
    c = a + b
    print(a..”+”..b..”=”..c)
    ;d

  2. Mixer pisze:

    Czekamy na następne części :)

Leave a Reply