1 Lua - wprowadzenie ● lua.org – źródła, dokumentacja, podręcznik itp ● Interpreter - Lua.org->Downloads->Binaries->get a binary-> Windows->Wersja 5.2.1->Executables-> wybrać wersję dla odpowiedniego systemu - Lua.org->Downloads->Binaries->Lua for Windows ● Edytory/IDE: ● - dowolne np. SciTE, ZeroBrane Studio
2 Lua - wprowadzenie ● Case sensitive ● Słowa zarezerwowane and break do else elseif end false for function if in local nil not or repeat return then true until while ● Komentarze -jednolijkowy -- -wielolinijkowy --[[ …. ● ]]
3 Lua - wprowadzenie ● Wypisywanie informacji na konsole: ● print(“Hello world”) ● print('pojedyncze apostrofy też mogą tworzyć napisy') ● print(a.." razy "..b.."="..(a*b)) ● print(("Zakupiono %d produkty/ów"):format(a)) ● Wprowadzanie wartości zmiennych ● b = io.read() a = io.read("*number")
4 Lua – typy danych ● nil, boolean, number, string, userdata, function, thread, table ● print(type("Hello world")) --> string print(type(10.4*3)) --> number print(type(print)) --> function print(type(type)) --> function print(type(true)) --> boolean print(type(nil)) --> nil print(type(type(X))) --> string ● Zmienne nie mają predefiniowanych typów I ta sama zmienna może zawierać kolejno wartości różnych typów. ● nil jest typem z jedną wartością nil, przed przypisaniem zmienne globalne mają wartość nil, reprezentującą brak sensownej wartości, ustawiamy tez na tę wartość by taką zmienną usunąć
5 Lua – typy danych ● Boolean – true/false ● Number - 4 0.4 4.57e-3 0.3e12 5e+20 ● String page=[[ Ala ma kota ● ]] print("one line \n next line \n \" in quotes \", 'in quotes'") ● konwersja liczba napis print("10" + 1) --> 11 print(10.. 20) --> 1020
6 Lua – typy danych ● Table (asocjacyjne) – moga być indeksowane nie tylko liczbami, ale np. napisami, czy też innymi wartościami z języka (oprócz nil) ● – nie mają rozmiaru, przyrastają dynamicznie a = {} -- create a table and store its reference in `a' k = "x" a[k] = 10 -- new entry, with key="x" and value=10 a[20] = "great" -- new entry, with key=20 and value="great" print(a["x"]) --> 10 k = 20 print(a[k]) --> "great" a["x"] = a["x"] + 1 -- increments entry "x" print(a["x"]) --> 11 Inicjalizacja: days = {"Sunday", "Monday", "Tuesday"} a = {x=0, y=0}
7 Lua – typy danych ● Table - a.nazwa jest jednoznaczne z a[“nazwa”] a = {} x = "y" a[x] = 10 -- put 10 in field "y" print(a[x]) --> 10 -- value of field "y" print(a.x) --> nil -- value of field "x" (undefined) print(a.y) --> 10 -- value of field "y" ● Iteracja a = {} for i=1,10 do a[i] = io.read() end ● for i,line in ipairs(a) do print(line) end
8 Lua – operatory ● Arytmetyczne +, -, *, /, - (unarny) ● Relacyjne, =, ==, ~= ● Logiczne and - zwraca wartość pierwszego argumentu, jeśli jest fałszywy, w przeciwnym przypadku – wartosc drugiego argumentu or - zwraca wartość pierwszego argumentu, jeśli nie jest fałszywy, w przeciwnym przypadku – wartosc drugiego argumentu not ● (false I nil są fałszywe, reszta - prawdziwa) max = (x > y) and x or y
9 Lua – zmienne lokalne / globalne x = 10 local i = 1 -- local to the chunk while i 2, 4, 6, 8, … i = i + 1 end if i > 20 then local x -- local to the "then" body x = 20 print(x + 2) else print(x) --> 10 (the global one) end print(x) --> 10 (the global one)
10 Lua – instrukcje ● Przypisanie x=5 a, b = 10, 2*x ● If if op == "+" then r = a + b elseif op == "-" then r = a - b elseif op == "*" then r = a*b elseif op == "/" then r = a/b else error("invalid operation") end
11 Lua – instrukcje ● While local i = 1 while a[i] do print(a[i]) i = i + 1 end ● Repeat repeat line = io.read() until line ~= "" print(line) ● Numeryczny for for i=10,1,-1 do print(i) end for i=1,10 do print(i) end
12 Lua – instrukcje ● Generyczny for for i,v in ipairs(a) do print(v) end for k in pairs(t) do print(k) end