První novoroční výprodej Java týden
Hledáš brigádu v IT, která bude 100 % home office a 100 % flexibilní? Pak napiš na: redakce [zavináč] itnetwork.cz pro více info!
80 % bodů zdarma díky akci Black Friday! Tento týden rovněž sleva na e-learning Java až 80 %

Úvod do jazyka Lua

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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()
Naši partneři možná hledají právě tebe!

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 873x (1.15 kB)

 

 

Aktivity (1)

 

 

Komentáře

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:21.7.2013 11:37

Pěkné, jen bych na začátek článku určitě doplnil charakteristiky jazyka Lua a proč se ho učit, tedy kde se využívá. Zaslechl jsem, že se v něm skriptuje pro hru WOW.

Odpovědět
21.7.2013 11:37
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar

Člen
Avatar
Odpovídá na David Čápka
:21.7.2013 11:41

Jo, je v něm myslím spouštěč WoWka, ale na to já zatím nemám :D
A doplním.

 
Odpovědět
21.7.2013 11:41
Avatar

Člen
Avatar
Odpovídá na David Čápka
:21.7.2013 11:44

Dohoď mi tam prosímtě
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ů.

Je to kratší než 6000 znaků a nejde to uložit.

 
Odpovědět
21.7.2013 11:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na
Kit:21.7.2013 11:47

V Lua nejen spouštěč, ale i celá klientská část WoW.

Také ho začala používat databáze Redis pro uložené procedury. Výhodou je, že ten interpretr je miniaturní, vejde se všude, je rychlý a skripty se dají kompilovat.

Funkce main() není potřebná - stejně jako v PHP.

Editováno 21.7.2013 11:48
Odpovědět
21.7.2013 11:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar

Člen
Avatar
Odpovídá na Kit
:21.7.2013 11:53

Funkce se nemusejí používat vůbec, ale podle mě je to výhodnější. Když pak program rozšiřuješ, hodí se to. Samozřejmě na pár printů a jeden if to potřeba není.

 
Odpovědět
21.7.2013 11:53
Avatar
Kit
Redaktor
Avatar
Odpovídá na
Kit:21.7.2013 11:57

Funkce main() nepřináší vůbec žádnou výhodu. Přišla s Javou a C#, protože tam to jinak nejde. Ve skriptovacích jazycích je funkce main() zbytečná.

Tím jsem se vůbec nechtěl dotknout funkcí obecně. Bez nich se programovat už nedá.

Odpovědět
21.7.2013 11:57
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar

Člen
Avatar
Odpovídá na Kit
:21.7.2013 12:00

Aha, špatně jsem si to vyložil. Ale máš jedno, jestli pojmenuješ funkci main nebo hlavni ne?

 
Odpovědět
21.7.2013 12:00
Avatar
Kit
Redaktor
Avatar
Odpovídá na
Kit:21.7.2013 12:05

Je jedno, jestli se jmenuje main(), hlavni() nebo tam není vůbec. Podle mne je nejlepší, když tam není vůbec. Ani Perl ani Python ji nepoužívají. Nevím proč by tuto techniku měla používat Lua.

Odpovědět
21.7.2013 12:05
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na
Michal Žůrek - misaz:21.7.2013 12:12

použij IE v režimu spětné kompatibility k IE7, to ti pak poslat půjde.

 
Odpovědět
21.7.2013 12:12
Avatar

Člen
Avatar
Odpovídá na Michal Žůrek - misaz
:21.7.2013 12:15

Dík za radu :)

 
Odpovědět
21.7.2013 12:15
Naši partneři možná hledají právě tebe!
Avatar
Michal Žůrek - misaz:22.7.2013 7:11

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Žůrek - misaz
Kit:22.7.2013 7:51

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:25.7.2014 16:01

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:20.8.2014 12:26

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
Odpovídá na 00
Neaktivní uživatel:20.8.2014 13:32

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

Odpovědět
20.8.2014 13:32
Neaktivní uživatelský účet
Avatar
00
Člen
Avatar
Odpovídá na Neaktivní uživatel
00:20.8.2014 14:57

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

Editováno 20.8.2014 15:00
 
Odpovědět
20.8.2014 14:57
Avatar
00
Člen
Avatar
Odpovídá na 00
00:30.8.2014 9:22

Prosím, pomozte mi.

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

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

 
Odpovědět
30.8.2014 9:44
Avatar
Tomáš Brůna
Redaktor
Avatar
Tomáš Brůna:21.1.2016 20:49

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

Odpovědět
21.1.2016 20:49
Vi veri universum vivus vici
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 19 zpráv z 19.