[[:oktatas:programozás:lua|< Lua]] ====== Lua nyelv ====== * **Szerző:** Sallai András * Copyright (c) Sallai András, 2011, 2012 * Licenc: GNU Free Documentation License 1.3 * Web: http://szit.hu ===== Bevezetés ===== Kevés memória igényű, több paradigmás (programozási elvű), könnyű szintaktikával rendelkező script alapú programozási nyelv. ===== Kivitel ===== print "Helló Világ" print("Helló Világ") print("alma", 35) ===== Különleges karakterek ===== | \a | csnegőhang | | \b | back space | | \f | lapdobás | | \n | új sor | | \r | kocsi vissza | | \t | tabulátor | | \v | vertikális tabulátor | | \\ | backslash | | \" | idézőjel | | \' | aposztróf | | \[ | bal szögletes zárójel | | \] | jobb szögletes zárójel | ===== Változó használat ===== a = 3 print("a: ", a) a = 3 b = 5 c = a + b print(c) ===== Formázott kivitel ===== ==== Szélesség ==== print(string.format("%20d", 1250000)) ==== Vezető nullák ==== print(string.format("%020d", 1250000)) ==== Tizedesjegyek száma ==== print(string.format("%.2d", 1.250000)) ===== Matematikai függvények ===== a = math.abs(-1) print("a: ", a) a = math.pi print("pi értéke: ", a) a = math.pow(2,3) print("2 a harmadik hatványon: ", a) a = math.sqrt(9) print("gyök: ", a) arad = math.rad(1) a = math.sin(arad) print("gyök: ", a) math.randomseed(os.time()) a = math.random(3) print("1-től -- 3-ig véletlenszám: ", a) ===== Operátrok ===== ==== Logikai ==== * and * or * not ===== Konvertálás ===== a = tonumber("10") ===== Bevitel ===== Szöveg beolvasása: nev = io.stdin:read() Egy szám beolvasása: kor = tonumber(io.stdin:read()) Várunk egy billentyűnyomsára: io.read(); ===== Szelekció ===== Egyágú szelekció: if 6>3 then print "Nagyobb" end Kétágú szelekció: if 6>9 then print "Nagyobb" else print "Kisebb" end Több ágú szelekció: if a == 1 then print "Első" elseif a == 2 then print "Második" elseif a == 3 then print "Harmadik" else print "Más" end ===== Iteráció ===== ==== Növekményes ciklus ==== Egytől tízig kiírjuk a számokat: for i = 1, 10 do print("Hi") end ==== Amíg ciklus ==== a = 1 while a<=10 do print(a) a = a + 1 end ===== Táblák ===== ==== Létrehozás ==== Üres tábla: table1 = {} Tábla kezdőértékkel: table1 = {3, 4, 8, 9, 1} ==== Tábla feltöltése ==== table1 = {} table.insert(table1, "alma") table.insert(table1, "körte") table.insert(table1, "szilva") ==== Elem törlése ==== Utolsó elem törlése: table1 = {3, 4, 8, 9, 1} table.remove(table1) Az első elem törlése: table.remove(table1, 1) Az 1 a pozíció. Helyette más értékek is megadhatók. ==== Tábla bejárása ==== for i in table1 do print(table1[i]) end ===== Szövegkezelés ===== Konkatenálás gy = "alma" cs = "eszik" tev = gy .. cs A szöveg mérete bytokban: s = "korte" print("Hossz: ", string.len(s)) -- Hányadik helytől s = "kortefa" print("Rész: ", string.sub(s,4)) Az eredmény: tefa -- Hányadik helytől, hányadik helyig s = "kortefa" print("Rész: ", string.sub(s,1,3)) Az eredmény: kor Keresés a szövegben: szoveg = "td*4" a = string.find(szoveg, "*") if a == nil then print("egyenlő") else print("nem egyenlő") end -- Kimenet: 3 print(a) Ha a keresett szöveg nem található, akkor nil értéket kapunk, amit egyszerű egyenlőség vizsgálattal kapunk. ===== Fájlkezelés ===== fp = io.open("adat.txt", "r") local x = fp:read("*a") print(x) fp:close() ===== Függvények/Eljárások ===== A függvény meg kell előzze a hívás helyét. function kiir() print("Hello") end kiir() io.read() Bemenő paraméterek visszaadott paraméter: function kiir(a, b) return a + b end print(kiir(3, 4)) io.read() ===== Egyéb ===== Környezeti változó lekérdezése utvonal = os.getenv("PATH") Operációs rendszerbeli parancs végrehajtása: os.execute("dir") siker = os.execute("dir") print(siker)