Úvod do jazyka Lua

Ostatní jazyky Lua Úvod do jazyka Lua

Vítej u prvního článku ze série tutoriálů pro jazyk Lua. Dneska si ukážeme již známý program "Hello world" v menší úpravě - "Hello devbook", představíme IDE Lua Development Tools neboli upravené Eclipse, informace o programovacích jazycích a jak si vytvořit nový projekt.

O jazyku Lua

Jak už jsem psal, je to asi nejlehčí programovací jazyk pod sluncem (a snad i nad ním :D). Používá se například na spouštěč veleúspěšné a mnou nenáviděné hry World of Warcraft nebo u jejích doplňků.

IDE

Jako IDE použijeme už zmíněné Lua Development Tools, pod tímto názvem se skrývá upravené Eclipse. LTD je dostupné jak pro Windows, tak i pro Mac a Linux.

Stažení LDT: http://www.eclipse.org/koneki/ldt/

Instalace u eclipse, jak už je zvykem, neprobíhá. Stačí přetáhnout soubory ze staženého archivu do vytvořené složky. Po "instalaci" si spustíme soubor "LuaDevelopmen­tTools.exe". Po spuštění si vybereme kde chceme mít pracovní stanici neboli workspace.

Hello world

Tak, a teď k novému projektu. Klikneme na File > New > Lua project. Otevře se nám toto okno. Místo lua-5.1 nastavíme lua-5.2! - budeme se učit v nejnovější verzi. Místo Next můžeme kliknout rovnou na Finish, to co se skrývá pod nextem zatím řešit nemusíme.

Po vytvoření projektu nám Eclipse (omlouvám se, ale pro mě je to prostě Eclipse a tečka) vygeneruje funkci main a nastaví, že po spuštění programu se má spustit funkce main. Ale kde to je nastaveno? Nechápu to!

Lidé, co se učili C# nebo jiný jazyk jemu podobný vědí, že program automaticky spustí určitou třídu (class) automaticky. Lua funkci main nespustí automaticky, a proto je za kódem funkce main ještě

main()

Pomocí

nazevfunkce()

můžeme v jakékoli funkci spustit funkci jinou. Malá ukázka:

local function pozdrav_michala()
print("Ahoj Michale, jsi borec!")
end

local function main()
pozdrav_michala()
end
main()

Tedy nejdříve nadefinujeme funkce main a pozdrav_michala, poté spustíme funkci main. Funkce main spustí funkci pozdrav_michala a funkce pozdrav_michala provede to, co provést má. V případě složitějších kódů, kde se jedna operace opakuje několikrát, je vhodné operaci nadefinovat do funkce a funkci následně spustit. Hodí se to např. v situaci, kdy máte několik ifů a všechny by měly v else definovanou stejnou akci. Místo několika stejných operací máte jednu funkci. Úsporné, že?

Ale má to i své háčky. Funkce musí být definována vždy před funkcí, ve které se má spustit daná funkce. Takto to NEMÁ vypadat:

local function main()
pozdrav_michala()
end

local function pozdrav_michala()
print("Ahoj Michale, jsi borec!!")
end
main()

Pokud to napíšete podle prvního příkladu, vypíše Lua chybu, že pozdrav_michala neexistuje.

local function main()

end

Do této funkce budeme zatím psát kód. Kód se píše mezi

local function main()

a

end

Jako první a asi taky nejzákladnější funkce je print. Do kódu ji zapíšeme

print()

Jako např. u C# nebo Basicu do závorek napíšeme buďto "text" nebo název proměnné. Nám bude zatím stačit ten text v uvozovkách.

A jak jsem slíbil, první program bude Hello Devbook! Do funkce main tedy zapíšeme

print("Hello Devbook!")

A máme svůj první program! Ale pozor, jak a kde ho spustit? V nástrojové liště máme tlačítko Play.

Nabídku potvrdíme a v dolním panelu se nám otevře nová záložka "Console". Vypadá nějak takto, a v ní se zobrazí náš program.

Proměnné

Na začátku jsme si napsali program hello devbook. Teď si ho upravíme tak, abychom v něm využili proměnné a více funkcí.

Takže, vytvoříme funkci text

local function text()
end

a v ní si vytvoříme proměnnou cz:

cz = ()

s obsahem "Ahoj Devbooku!"

cz = ("Ahoj Devbooku!")

A vytvoříme si proměnnou en s obsahem "Hello Devbook!"

en = ("Hello Devbook!")

A jak proměnné vypíšeme?

print(cz)
print(en)

Na konci kódu máme napsáno, že se má spustit funkce main. My chceme spustit funkci text, to znamená, že místo

main()

napíšeme

text()

Smažeme funkci main, nebudeme ji potřebovat.

A už v prvním díle si ukážeme error! Ano, a bude to error, který se nám vypíše s naším vědomím. Tento error nám to vypíše s důvodem "stack overflow". A jak error vyvoláme? Do funkce text připíšeme, že se má spustit funkce text:

text()

Několikrát se nám vypíše Ahoj Devbooku! a Hello Devbook! a pak se dočkáte erroru.

Závěr

To je pro dnešek všechno, doufám, že si z toho někdo něco odnesl :) Příště si povíme něco o podmínkách a dalších možnostech vypisování textu.


 

Stáhnout

Staženo 547x (1.15 kB)

 

  Aktivity (1)

Článek pro vás napsal Michal Vašíček
Avatar
Autor je webař, čas od času udělá i mobilní appku. Před Windows dává přednost Linuxu, ale ještě raději má macOS. Podílí se na překladech v Mozille, dobrovolničí i jinde, k tomu se snaží rozvíjet sebe sama.

Jak se ti líbí článek?
Celkem (11 hlasů) :
4.363644.363644.363644.36364 4.36364


 


Miniatura
Všechny články v sekci
Lua

 

 

Komentáře
Zobrazit starší komentáře (9)

Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Dík za radu :)

Odpovědět 21.7.2013 12:15
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Michal Žůrek (misaz):

Mě ty funkce připomínají JavaScript, tam to sice u funkcí nevadí, ale vadí u elementů, které ještě nejsou načtené. Jinak zde asi platí že main by měl být úplně na konci souboru, aby se všechno načetlo dřív než main, nebo ne?

Lua je objektový?

Odpovědět 22.7.2013 7:11
Nesnáším {}, proto se jim vyhýbám.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Žůrek (misaz)
Kit:

Lua a Javascript jsou podobné, oba jsou objektové s prototypováním. Lua má navíc kooperativní multitasking, což se hodí u her typu WoW.

U jazyka Lua je funkce main() zcela zbytečná a nemá žádné opodstatnění. Nedělá se ani v PHP, Pythonu, Perlu...

Odpovědět 22.7.2013 7:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
PiskotPiskotovic
Redaktor
Avatar
PiskotPiskotovic:

Dobrý článek ;) Když už začínáš v jazyce lua, mohl by jsi udělat pokračování, například na jednoduché okenní aplikace. Jestli jednoduché okenní aplikace nejdou, tak nevím, někde jsem viděl že na linuxu to jde přes gtk. Jinak je ještě zajímavá věc framework LÖVE pro lua. Dají se s tím dělat jednoduché ale i komplikovanější hry přes luu. http://love2d.org/ :)

Odpovědět 25.7.2014 16:01
Error 404 - stránka motto.php nenalezena.
Avatar
00
Člen
Avatar
00:

Tak jsem si stáhnul LDT a hází mi to nějakou chybu. Prosím, napište mi někdo, jak to vyřešit.

 
Odpovědět 20.8.2014 12:26
Avatar
Filip Šohajek
Redaktor
Avatar
Odpovídá na 00
Filip Šohajek:

Ahoj, nainstaluj si nejnovější verzi Javy.

 
Odpovědět  +1 20.8.2014 13:32
Avatar
00
Člen
Avatar
Odpovídá na Filip Šohajek
00:

Děkuji ze radu. Tentokrát (S Javou 8u20) mi vyskočila další chyba.

Editováno 20.8.2014 15:00
 
Odpovědět  -1 20.8.2014 14:57
Avatar
00
Člen
Avatar
Odpovídá na 00
00:

Prosím, pomozte mi.

 
Odpovědět  -1 30.8.2014 9:22
Avatar
Odpovídá na 00
Vojtěch Pospíchal:

http://lmgtfy.com/…exit+code+13 První link. Bylo to tak těžké? Máš 32bit javou na 64bit PC.

 
Odpovědět  +1 30.8.2014 9:44
Avatar
Tomáš Brůna
Redaktor
Avatar
Tomáš Brůna:

IDE se přesunulo na: https://eclipse.org/ldt/

Odpovědět 21. ledna 20:49
Lepší být šprt než blbec :)
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 19. Zobrazit vše