What's new

-Łatwy Lua ~= zmienne && operatory by Stelma

Stelma

Active User
Joined
Jan 6, 2009
Messages
114
Reaction score
19


{ Ten artyku? ma na celu podniesienie umiej?tno?ci skrypterskich ludzi na tym forum. Zaznaczam i? nie jestem alf? i omeg? dlatego te? prosz? wytyka? b??dy. }

Welcome - Czyli witam i s?owo o artykule
Jak wida? stopka wy?ej przedstawia i? artyku? ma na celu podniesienie umiej?tno?ci skrypter?w. Jednak znajdziecie w nim du?o ciekawostek nie tylko zwi?zanych z pisaniem skrypt?w w silnikach tibi. Wbrew pozorom Lua u?ywany jest w otwartych ?r?d?ach WoW'a czy Metin2 (japo?skiego na bank). Dlatego jak wida? jest to j?zyk bardzo szerokiego zastosowania. Jednak ka?dy kto my?li i? po tym artykule b?dzie potrafi? dos?ownie wszystko mo?e od razu zamkn?? zak?adk? i i?? do piaskownicy. Oczywi?cie prostych skrypt?w artyku? ten nauczy jednak bardziej rozbudowane czy skomplikowane aplikacje (nie ?artuje Lua mo?e wyst?powa? te? sam jak udowodni? mi to Yos z tnp, notabene skryptowy PHP te? ;p) b?dzie trzeba uczy? si? samemu. Dlatego prosz? czyta? ka?dy kawa?ek artyku?u i dopiero wtedy pr?bowa? nowych rzeczy.

Nihil - Dobre zwyczaje przy pisaniu.
Pewnie wi?kszo?? ludzi pominie ten rozdzia? jednak nalegam by przestudiowa? go od A-Z i ka?demu kto nie respektuje zasad tutaj przedstawionych wytyka? je paluchami.


Nihil.I - Przejrzysto??
Je?eli zabieramy si? do pisania skrypt?w to powinni?my zdawa? sobie spraw? ?e je?eli nasz skrypt uro?nie do ogromnych rozmiar?w to pisanie np warunk?w [if] w 1 linijce bez ?adnych odst?p?w od lewej strony mo?e sko?czy? si? bardzo tragicznie. Dlatego wi?kszo?? programist?w przyj??a metod? i? im dalej w las tym wci?cia s? bardziej oddalone od lewej kraw?dzi. Nie musicie wiedzie? co oznacza ten pseudo kod zaprezentowany poni?ej wystarczy i? wbijecie sobie ten wygl?d do g??w.


PHP:
 V_var = {
		a     = 2,
		x     = 'olaszenko',
		pilka = 'pilka'
	  }

 if {warunek} then
	{instrukcja}
	{instrukcja}
	{instrukcja}
 end

function XxX( YyY, ZzZ )
	{instrukcja}
	{instrukcja}
	{instrukcja}
end

function XxX( YyY, ZzZ )
	if {warunek} then
		{instrukcja}
		{instrukcja}
		{instrukcja}
	end
end


Nihil.II - Nazewnictwo
W skryptach musicie pami?ta? o jednolitej metodzie jak? stosujecie do r??nych w?asnych nazw. Np je?eli u?ywamy w komentarzach j?zyka polskiego to r?wnie? w nazewnictwie zmiennych, funkcji stosujemy polskie nazwy. Jednak uczulam tutaj wszystkich i? og?lno?wiatowym j?zykiem jest angielski w wersji brytyjskiej. Dlatego prosz? o stosowanie w?a?nie jego. Natomiast je?eli zachodzi potrzeba wstawienia znaku spacji do nazw to wstawiamy znak '_' b?d? zaczynamy nast?pny wyraz du?? liter?.

Nihil.III - Komentarze
Ja wiem i? w momencie pisania skryptu b?dziemy ?wietnie wiedzie? do czego jaka zmienna s?u?y i co ona przechowuje wewn?trz siebie. Jednak gdy powr?cimy do kodu po pewnym czasie mo?e to wcale nie okaza? si? takim prostym. Dlatego te? uczulam was drodzy przy?li programi?ci o stosowanie komentarzy kt?r? b?d? nas nakierowywa? na znaczenie czego? czy wyja?nia? jak dzia?a dana funkcja.

Nihil.IV - Udost?pnianie kodu
Je?eli uwa?amy i? stworzyli?my co? naprawd? dobrego i jest to warte uwagi b?d? najzwyczajniej w ?wiecie zachodzi potrzeba podzielenia si? ?e ?wiatem jakim? kawa?kiem kodu. To nie spamujemy komu? na gg, aqq, tlen czy inny Irc. Tylko korzystamy z serwis?w do tego przeznaczonych. Oczywi?cie nale?y pami?ta? o estetyce kodu i komentarzach. Oto pare link?w gdzie mo?na wrzuca? tre?ci kod?w :






Nihil.V - ?redniki
A no w?a?nie mo?e dla wi?kszo?ci os?b na tym forum wyda si? to dziwne jednak tak samo jak w Pascalu czy Object Pascalu mo?emy u?ywa? ?rednik?w jednak czy ich u?ywa? to zdania s? podzielone. Ja jako zapalony delphiarz ch?tnie bym u?ywa? ich. Jednak du?a cz??? skrypter?w o tym nie wie (sam do niedawna nie wiedzia?em) ?e si? da. Dlatego te? jak zrobicie to zale?y tylko i wy??cznie od was samych. W tym artykule b?de pisa? raczej bez ?rednik?w chyba ?e b?dzie trzeba napisa? wi?kszy kawa?ek kodu to dla w?asnej wygody je zastosuje. Przedstawiam odrazu kawa?ek kodu kt?ry jak mo?e si? przekona? dzia?a poprawnie.


PHP:
function onUse(cid, item, fromPosition, itemEx, toPosition)
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'dzila');
 doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'dzila2');
 return false
end


Nihil.VI - Parser
Parser jest programem b?d? funckj? programu dzi?ki kt?remu zacznie ?y? nasz skrypt. Jest potrzebny do testowania dzia?alno?ci skrypt?w itp. O ile tfs posiada wbudowany parser o tyle nie op?aca czasami odpala? si? silnika by przejrze? pare rzeczy. Dlatego te? gor?co polecam parser jaki ju? by? udost?pniany u nas na forum przez gelio.



{ W?a?ciwa cz??? poradnika I rozdzia? }

I. Zmienne i jej typy

Na wst?pie zaznaczam i? nie nadmienie wszystkich informacji je?eli chodzi o zmienne w lua. Jednak b?d? si? stara? by by?y do?? kompletne i niczego im nie brakowa?o. Jednak polecam poczyta? jeszcze pare kurs?w na sieci.


I.Info
Ten taki wst?p ma wyja?ni? pare spraw kt?re tak naprawd? pocz?tkuj?cy programi?ci bardzo cz?sto pomijaj? przez co p??niej zachodzi wielki problem z logicznym my?leniem czy napisaniem algorytmu. Chodzi mi tutaj mianowicie o bardzo prost? sformu?owanie "Do czego s?u?? zmienne". Zmienne maj? s?u?y? do chwilowego przechowywania pewnych informacji jakie uzyskujemy ze ?r?de?. Ponadto s?u?? do przechowywania oblicze?. Deklarowanie zmiennej tylko poto by j? w p??niejszym czasie wy?wietli? mija si? z celem, bo je?eli mo?na powinno si? takie czynno?ci wykonywa? tam gdzie wy?wietlamy warto?? zmiennej.

I.I Nazewnictwo

Nazewnictwo jest do?? dowolne. Jednak przyje?o si? w gronie programist?w i? nazwy zmiennych pisane s? w j?zyku angielskim / takim w jakim reszta j?zyka i komentarze (w przypadku tfs - angielski). Dobrym zwyczajem jest nazywanie zmiennych w spos?b kt?ry pozwoli ustali? do?? szybko co robi dana zmienna np. Zmienne przechowuj?ce nazwy p?yt mo?emy nazywa? AlbumCD, Album, Album_cd itd.

I.II Dozwolone nazewnictwo [/b]
Nazwy zmiennych mog? zawiera? takie litery jak (bez przecink?w): _, a-z, A-Z, 0-9. Zaznaczaj?c i? nazwa nie mo?e zaczyna? si? od cyfry. Wszelkie inne znaki s? nie dozwolone przy nazywaniu zmiennych i radz? to sobie dobrze zapami?ta?.

I.III Deklaracja zmiennnych

W j?zyku Lua nie ma rygorystyki je?eli chodzi o typy zmiennych. Wszystkim zajmuje si? silnik kt?ry przetwarza pliki ze skryptami dlatego te? nie trzeba przejmowa? si? tym co posiada dana zmienna. W razie konieczno?ci zostanie ona samoczynnie przekonwertowana na odpowiedni? warto??. Jedyne o czym musimy pami?ta? jest zasi?g zmiennych. Zasi?g oznacza to czy zmienna b?dzi? widoczna jedynie w naszym skrypcie czy te? dla ca?ej "zawarto?ci" skrypterskiej. Odr??niamy dwa zasi?gi : "Lokalny", "Globalny".

Zasi?g Lokalny :
Niestety w ?wie?ym silniku nie mo?e by? przyk?adu tych zmiennych poniewa? jak sama nazwa wskazuje ich zasi?g czyli widoczno?? jest ograniczona do miejsca gdzie zosta?a wywo?ana. Deklaracja tych zmiennych polega na poprzedzeniu nazwy s?owem kluczowym "local". Trzeba zaznaczy? i? zmienne te wywo?ane wewn?trz funkcji "gin?" razem z zako?czeniem dzia?alno?ci funkcji.


PHP:
 local Norbi  = 2
 local Doda   = 'Piosenkarka'
 local Kasyno = False


Zasi?g Globalny :
Przyk?adem zmiennych globalnych s? np : "NORTH", "COMBAT_DEATHDAMAGE", "SHIELD_WHITEYELLOW" i wiele wiele innych. Globalny zasi?g oznacza to nic innego jak to i? dana zmienna mo?e by? u?yta w ka?dej funkcji i b?dzie posiada?a warto?ci. Deklaracja tego typu zmiennej nie wymaga ?adnego wysi?ku z naszej strony. Piszemy poprostu jej nazw? i przypisujemy warto??. Rygorystyka nazewnictwa tego typu zmiennych jest taka sama jak zmiennych lokalnych. Cho? w?r?d programist?w na ?wiecie przyje?o si? pisanie ich z wielkich b?d? samymi wielkimi literami. Zaznaczam i? zmienna zadeklarowana w funkcji b?dzie dalej istnie? nawet po zako?czeniu "matki" funkcji.


PHP:
 NORBI  = 2
 DODA   = 'Piosenkarka'
 KASYNO = False




..:: Uwaga ::..
Zmienna lokalna zadeklarowana w ciele funkcji jest wa?niejsza od zmiennej globalnej ! Dlatego te? unikaj powt?rze? nazewnictwa. Miejcie r?wniez na uwadze i? lua odr??nia wielko?? liter. Dlatego zmienna Global oznacza co innego ni? global.

I.IV Typy zmiennych
Wiem w poprzednich podrozdzia?ach pisa?em i? Lua nie posiada rygorystyki je?eli chodzi o zmienne. Faktycznie tak jest jednak musimy pamieta? i? ka?da zadeklarowana zmienna mo?e tak naprawd? posiada? wewn?trz siebie jaki? typ. Dlatego przyda?o by si? je zna? tymbardziej i? s? do?? proste.

- Warto?? liczbowa ( ka?da liczba nie zale?nie czy z u?amkiem czy bez, dodatnia czy ujemna )
- Warto?? logiczna ( prawda b?d? fa?sz... True / False )
- ?a?cuch znak?w ( ci?g znak?w np 'ola', "tomeczek", 'Ima121' )
- Tablica ( dowiesz si? p??niej o tym typie zmiennych )
- Nil ( pusty typ wyst?puje przy pustej deklaracji np local Ola, OLA czy local ola = nil )

I.V Sprawdzanie typ?w
Mimo i? Lua dba o prostot? i by programista nie musia? martwi? si? o zgodno?? typ?w. Udost?pniana jest funkcja j?zyka kt?ra zwraca nam ?a?cuch znak?w kt?ry informuje o tym jakiego typu jest zmienna. Oto przyk?ad u?ycia funkcji i jej mo?liwe zwr?cone warto?ci.


PHP:
 local Temp = 2                  -- Deklaracja zmiennej liczbowej
 Temp = type( Temp )             -- Przypisanie zmiennej `Temp` warto?ci jak? zwraca sprawdzenie zmiennej `Temp`

--[[
 Mo?liwe warto?ci jakie zwr?ci funkcja [b]type()[/b]
	- liczba   -> 'number'
	- ?a?cuch  -> 'string'
       - tabica   -> 'table'
	- logiczna ->  nil
	- Nil      ->  nil

]]--


I.VI ?a?cuchy znak?w
Jest to specyficzny typ zmiennych poniewa? przechowuje on wiele znak?w kt?re tworz? razem zdanie, s?owo itp jednak pojedy?cza litera r?wnie? jest nazywana ci?giem znak?w. Oto najproszczy przyk?ad deklaracji zmiennej z ci?giem znak?w.


PHP:
 local Temp = 'Ciag znakow'
 local Mobs = "Ciag znakow"


Jak ka?dy pewnie zauwa?y? zadeklarowa?em dwie zmienne na dwa troszeczk? inne sposoby. Na szcz??cie r??nica mi?dzy nimi jest minimalna i zaleca si? stosowanie ' ' zamiast " " poniewa? jest szybsza. Wcze?niej powiedzia?em i? jest to specyficzny typ zmiennej dlaczego ?, a no odwo?a? si? mo?na do ca?ego ci?gu znak?w b?d? do ka?dej litery z osobna. Jednak ten temat zostanie poruszony troszeczk? p??niej.


I.VII Tablice
{ Nie omawiam tutaj modu?u Table, jest on na tyle obszerny ?e aby to zrobi? dok?adnie b?dzie potrzebny zupe?nie odzielny temat }

Je?eli warto?? liczbowa czy warto?? logiczna jest do?? prosta do wyobra?enia sobie to ju? z tablicami tak prosto nie jest. Ja zawsze swoim znajomym t?umacz? i? tablica to tak naprawd? kartka papieru (je?eli chodzi o tablice 2 wymiarow?) poniewa? litery zawieraj?ce tekst s? podzielone wed?ug wiersza, kolumny co daje nam efekt [x][y]. Teraz zaprezentuje wam najpro?ciej wygl?daj?c? tablice :


PHP:
 local Temp = {}


Prawda ?e proste. Jest to pusta tablica ja sobie nazywam j? dynamiczn? poniewa? nie okre?lam ile b?dzie mia?a element?w itp. Jednakowo? w Lua ka?da tablica jest tablic? dynamiczn? ! oznacza to i? mo?e powi?ksza? jak i pomniejsza? swoj? zawarto??. Lecz do tego dojdziecie z biegiem czasu sami. Nale?y jednak pami?ta? i? tablice domy?lnie s? numerowane od 1.

Aby otrzyma? ilo?? element?w jakie posiada tablica nale?y u?y? znaczka # przed nazw? zmiennej.



PHP:
 local Temp = { 1, 3, 5 }

 print ( #Temp )                  -- Zwr?ci 3. Poniewa? mamy 3 elementy



Teraz zaprezentuj? jak zadeklarowa? tablice posiadaj?c? jeden element na trzy sposoby. Pierwszy b?dzie prost? deklaracj?, a drugi powi?kszeniem tablicy o 1 element w ostatnim sposobie poprostu sobie wstawimy warto?? o tak z pupala.

PHP:
 local Temp = {}
 local Gugu = {}
 local Nobm = { 'Pojedy?czy element' }        -- Zadeklarowanie zmiennej tablicowej z jedym elementem ?a?cuchowym

 Gugu[1] = 'Pojedy?czy element'		     -- Je?eli element istnia?by to zosta?by zast?piony, tak tylko dodali?my nowy element
 Table.insert(Temp, 'Pojedy?czy element')     -- Wstawienie elementu na ko?cu tablicy, ta konstrukcja b?dzie p??niej omawiana dok?adnie


Uh Uh prawda i? programowanie jest banalne ? Ale w powy?szym przyk?adzie powiedzia?em i? zadeklarujemy tablice posiadaj?c? 1 element. Prawd? m?wi?c to troszeczk? was oszuka?em. Poniewa? w?a?nie mieli?my styczno?? z tablicami 2 wymiarowymi ! Pewnie ka?dy z was spyta si? jak to mo?liwe, a no bardzo prosto. Poniewa? ?a?cuch znak?w r?wnie? sam w sobie jest tablic? gdzie pojedy?czym elementem jest znak. Jednak rz?dzi si? on troszeczk? innymi prawami ni? normalne tablice.

Troszeczk? si? zagalopowali?my. Wi?c na chwile wr??my do deklaracji tablicy. Wyobra?my sobie i? dostali?my zadanie by zapisa? w tablicy ca?? nasz? klase (3 osoby). Mo?emy to uczyni? na oko?o 10 sposob?w jednak ja wybior? dwa naj?atwiejsze oto przyk?adowy ich zapis.


PHP:
 local Class   = { [1] = 'Monika Lis', 
                   [2] = 'Sandra Kasandra', 
                   [3] = 'Misia Bisia' }

 local MyClass = { 'Monika Lis',
                   'Sandra Kasandra',
                   'Misia Bisia' }


W pierwszym sposobie przypisujemy na sztywno indeksy (te liczby w nawiasach jak si? odow?ujemy), a drugi spos?b polega na deklarowaniu tablicy poprzez dodawanie element?w jeden po drugim. Mam nadzieje i? jest to do?? przejrzyste je?eli nie to przedstawiam t? sam? deklaracje co ma zmienna Class jednak na inny spos?b.
 

Stelma

Active User
Joined
Jan 6, 2009
Messages
114
Reaction score
19
Odp: Lua ~= zmienne && operatory by Stelma

PHP:
 local Class = { [3] = 'Misia Bisia',
                 [1] = 'Monika Lis',
                 [2] = 'Sandra Kasandra' 	}


Pewnie wi?kszo?? os?b zaczyna teraz my?le? i? jest to do?? trudne. Przeczytajcie jeszcze ze trzy razy i zobaczycie i? jest to naprawd? proste. Pozosta? nam jeszcze jeden spos?b deklaracji zmiennych by wyja?ni? go jeste?my skazani wymy?le? nowe zadanie. B?dzie polega? na zapisaniu nazwisk naszej klasy do tablicy lecz tak by mo?na by?o odwo?ywa? si? do nich po imieniu. Jak si? zaraz przekonacie r?wnie? na to istniej? dwa sposoby.


PHP:
 local Class   = { ['Monika'] = 'Lis',
                   ['Sandra'] = 'Kasandra',
                   ['Misia']  = 'Bisia' }

 local MyClass = { Monika = 'Lis',
                   Sandra = 'Kasandra',
                   Misia  = 'Bisia' }


O ile pierwszy spos?b jest bardzo podobny do poprzedniego zadania z zapisem listy os?b w klasie o tyle drugi jest zupe?nie inny. Ale po koleji pewnie wi?kszo?? ludzi si? domy?la jak odwo?a? si? do nazwiska pani Moniki. Lecz jestem zmuszony to napisa? Class['Monika'], tak w?a?nie odwo?ujemy si? do nazwiska moniki.

Je?eli chodzi o drugi spos?b to jest pro?ciej poniewa? wystarczy napisa? MyClass.Monika, Jednak uwa?ajcie jak deklarujecie tablice poniewa? mo?e to mie? kolosalne znaczenie przy logistyce skryptu. Np powy?sze odwo?anie do nazwiska Moniki w chwili obecnej jest dla nas conajmniej trudne. Bo je?eli u?ytkownik poprosi o wy?wietlenie nazwiska Sandry nie mo?emy tego uczyni? w ?atwy i przyjemny spos?b jak w zmiennej Class. Jednak o logistyce skrypt?w b?dzie rozdzia? po?wi?cony p??niej.

Wydawa?o by si? zapewne i? to wszystko co mo?na powiedzie? na temat tablic. Ot?? prawie bo pozosta?y r?wnie? s?awetna liczba dwa. Ot?? tyle nam zosta?o. Na pierwszy rzut dam table mix ja oznaczam tak tabele kt?re ??cz? w sobie tradycyjno?? z asocjacyjnymi. Czyli na przyk?ad poni?szy kod


PHP:
 local Class = { ['Monika'] = 'Lis',
                 Sandra     = 'Kasandra',
                 'Misia Bisia' }


Z racji i? szanuje swoich czytelnik?w nie b?de m?wi? jak odwo?a? si? do poszczeg?lnych p?l itp. Mam nadzieje i? ka?dy dok?adnie przeczyta? wcze?niejsze wpisy i b?dzie rozumia? to zagadnienie.

Hola Hola co my?leli?cie i? to koniec ? Nic bardziej mylnego zosta?o nam jeszcze jedno zagadnienie odno?nie tabel. Jednak i tutaj si? prosz? nie cieszy? bo jest ono najobszerniejsze i zajmnie najwi?cej czasu do zrozumienia. Chodzi mi tutaj o wielowymiarowo?? o ile mieli?cie ju? styczno?? z dwuwymiarow? tablic? (1 wymiar i pole ?a?cuchowe) o tyle ci??ko sobie wyobrazi? tablice 5 lub 10 wymiarow?. Ja postaram si? wam wyja?ni? najpro?ciej jak umiem tablice 12 wymiarow? !! Wcale nie ?artuj? zdarza si? i? cz?owiek ma tak podzielone dane i? ta informacja si? przyda. Oczywi?cie wyja?nieniem b?d? nazwy p?l.


PHP:
 local Temp = {
                Earth = {
                          Europe = {
                                     Poland = {
                                                Mazowsze = {
                                                             Warsaw = {
                                                                        Mokotow = {
                                                                                    Library_Public = {
                                                                                                       Bookshelf = {
																	Book = {
                                                                                                                              Site = {
                                                                                                                                       line = {
 'e', 'l', 'f'
                                                                                                                                                 }
                                                                                                                                     }
                                                                                                                            }
                                                                                                                   }
                                                                                                     } 
                                                                                  }
                                                                      }
                                                           }
                                              }
                                   }
                        }    wiersz -> Strona -> Ksi??ka -> Rega? -> Biblioteka -> Dzielnica -> Miasto -> Wojew?dztwo -> Pa?stwo -> Kontynent -> Planeta 
              }


II. Operatory arytmetyczne

Rozdzia? wcze?niej poznali?my zagadnienie zmiennych i rozwia?em w?tpliwo?ci do czego ich u?ywa?. W tym rozdziale postaram si? wyt?umaczy? jak mo?na operowa? tymi zmiennymi w r??nych dzi??aniach


II.I - Podstawowe operatory matematyczne
S? to chyba najproszcze operatory z jakimi cz?owiek mia? do czynienia poniewa? spotyka si? prawie ze wszystkimi w podstaw?wce. Dlatego te? tylko poka?e znak i co on robi.


PHP:
 '+'  -> Dodawanie
 '-'  -> Odejmowanie
 '*'  -> Mno?enie
 '/'  -> Dzielenie
 '%'  -> Zwraca reszte z dzielenia np ( 5 % 2 zwr?ci 1 )
 '^'  -> Pot?gowanie
 '='  -> Przypisanie


II.II - Operatory relacji
No chyba te podstawowe operatory matematyczne nie powinny nikomu sprawi? k?opot?w przy przyswojeniu. Teraz przejd?my do operator?w relacji


PHP:
 '>'  -> Wi?ksze
 '>=' -> Wieksze b?d? r?wne
 '==' -> R?wne
 '<'  -> Mniejsze
 '<=' -> Mniejsze b?d? r?wne
 '~=' -> Nie r?wne


Uhh no tutaj troszeczk? zagmatwa?em dlatego najlepiej b?dzie da? przyk?ad. Jednak zanim go przedstawie powiem i? te operatory s? u?ywane by uzyska? pewien wynik relacji (logiczny).


PHP:
 A = 5
 B = 6

 print ( A > B )
 print ( B ~= A )
 print ( A <= B )


Je?eli kto? z was zada? sobi? troszeczk? wysi?ku to ju? wie co dane dzia?ania oznaczaj? ;) Oczywi?cie ich wynik mo?na zapisa? do innej zmiennej b?d? nawet tej samej. Lecz bardzo rzadko zachodzi taka potrzeba od strony kodu.


II.III - Operatory logiczne
Teraz chyba najtrudniejsza cz??? operator?w chodzi mi mianowicie o operatory logiczne.


PHP:
 'and' -> Operator po??czenia  
 'not' -> Operator zaprzeczenia
 'or'  -> Operator wyboru


Powy?szy spis dla 3/4 ludzi b?dzie nie jednoznaczny niema si? czym przejmowa? mia?em to samo ja mam praktycznie do dzisiejszego dnia. Najlepiej b?dzie je?eli zobaczycie jak dzia?aj? w po??czeniu z konstrukcj? j?zyka print.


PHP:
 print ( 3 and 2 )         -- 2
 print ( 0 and 2 )         -- 2
 print ( false and 2 )     -- false
 print ( true and 2 )      -- 2
 print ( nil and 2 )       -- nil

 print ( 3 or 2 )          -- 3
 print ( 1 or 2 )          -- 1
 print ( false or 2 )      -- 2
 print ( true or 2 )       -- true
 print ( nil or 2 )        -- 2

 print ( not 2 )           -- false
 print ( not nil )         -- true
 print ( not true )        -- false
 print ( not false )       -- true


Teraz wida? dok?adnie jak dzia?aj? powy?sze operatory. Jednak je?eli kto? nie widzi dok?adnie postaram si? to wyja?ni?.

Zaczniemy od ko?ca i we?niemy na wianko operator 'not' s?u?y on do zaprzeczania temu co zosta?o przedstawione. Czyli je?eli wyst?puje przed czym? co wsazuje na jak?? warto?? logiczn? prawda, on zamienia to na false i na odwr?t.

Operator 'or' s?u?y do por?wnania dw?ch argument?w i zwraca on pierwszy argument je?eli nie jest fa?szywy, a w ka?dym innym wypadku zwr?ci argument drugi.

Pozosta? nam operator 'and' Zwraca on warto?? pierwszego argumentu je?eli jest on fa?szywy w ka?dym przeciwnym wypadku zwr?ci warto?? drugiego.

II.IV - Operatory kolejno?ci (moja nazwa ;p)
Istniej? jeszcze znaki oznaczaj?ce kolejno?? dzia?a? tak samo jak w matematyce. Dlatego wspomn? tylko o nich.


PHP:
 '(' - Rozpocz?cie
 ')' - Zako?czenie


Oczywi?cie dzia?ania wewn?trz nich s? uznawane jako wa?niejsze, a je same mo?na bez k?opotu zagnie?dza? wewn?trz siebie.


PHP:
 print ( a + b - (c - g) * h + (x / y) ) -- Zrobi si? tak jak w matematyce wi?c nie t?umacze ;p

To by by?o na tyle teori. Przysz?a pora na praktyk? z racji tego i? mamy ju? wiedze o zmiennych i por?wnywaniu ich wed?ug operator?w. Mo?emy napisa? do?? ciekawe zagadnienia, oczywi?cie ciekawe jak dla kogo.



{ Zadanie 1 }

Za???my i? mamy sprawdzi? czy wi?ksza cz??? ch?opc?w nie przysz?a do klasy ni? dziewczynek (ofc procentowo). Zak?adamy i? ch?opc?w mamy w klasie 27 a dziewczynek 13 o tak by si? trudniej liczy?o. ch?opc?w nie przysz?o 4 a dziewczynek 1. Odpowied? przedstaw jako true (ch?opcy) / false (dziewczynki)

PHP:
 Boys  = { all = 23, absent = 4 }
 Girls = { all = 13, absent = 1 }

 print ( (Boys.absent / Boys.all * 100) >= (Girls.absent / Girls.all * 100)


{ Zadanie 2 }

Pewna firma produkuj?ca dywany uwa?a i? pieni?dze jakie zarobi?a (300mln) przewyszy?y ich wydatki na ten miesi?c. Jednak Pewien biznesmen twierdzi i? firma przynios?a (300 mln) strat zamiast zysk?w. Je?eli potrafisz przedstaw w jaki spos?b m?g? pomyli? si? biznesmen.


PHP:
--[[
 W tym zadaniu nie by?o co oblicza?. Jest ono do?? zawi?e z tre?ci jednak rozchodzi?o si? o prost? rzecz.. 
]]--

print ( x * -1 ) -- Gdzie x to kwota jak? zarobi?a firma



{ I tym mi?ym akcentem chcia?em zako?czy? pierwsz? cz??? poradnika kt?ra nosi miano "Zmienne && operatory". Nie b?jcie si? nast?pna b?dzie jeszcze trudniejsza ;) }
 
Last edited:

Sassin

Forum friend
Joined
Jun 13, 2009
Messages
1,281
Reaction score
107
Odp: Lua ~= zmienne && operatory by Stelma

Poradnik ?wietny i pozwol? sobie go przenie?? do Lua. : )
 

YoS

Advanced User
Joined
Aug 29, 2008
Messages
410
Reaction score
32
Odp: Lua ~= zmienne && operatory by Stelma

Ty si? tak m?czysz i m?czysz, jednak ma?o kto to doceni.
Og?lnie nie wiem czy mog? wybaczy? zbezczeszczenie mego Nicku:eek:ps:...!!!

Jako pi?te ko?o u wozu ?wiatka programist?w, mog? powiedzie?, ?e to jeden z lepszych poradnik?w jakie czyta?em.. Cho? brakuje tu kilku info dla tych, kt?rzy zaczynaj? od 0.

Pozdrawiam
YoS
 

orzeleagle122

Advanced User
Joined
May 18, 2010
Messages
449
Reaction score
16
Odp: Lua ~= zmienne && operatory by Stelma

Swietne!
bardzo pomoga, widac ze duzo roboty w to wlorzyles
naprawde dobrze,
pozdrawiam i nagradzam reputam
 

Ghalla

Active User
Joined
Aug 24, 2010
Messages
88
Reaction score
12
Age
30
Odp: Lua ~= zmienne && operatory by Stelma

Code:
 '=<' -> Mniejsze b?d? r?wne
Taki operator nie istnieje.
Tablice w kt?rych nadajemy w?asne indeksowanie to tablice asocjacyjne a nie "asokacyjne".Do tego t?umaczysz tablice, a nie omawiasz p?tli co moim zdaniem jest zupe?nie bez sensu. Temat do tego ju? dawno temu wyczerpany, nie widz? sensu tego poradnika.
 

Stelma

Active User
Joined
Jan 6, 2009
Messages
114
Reaction score
19
Odp: Lua ~= zmienne && operatory by Stelma

Przestawi? litery si? chyba mog? ka?demu nie :D A tak poza tym to nic nie jest idealne ;p

Ps bo jak sama nazwa topicu m?wi nic tu o p?tlach by? nie mia?o... Gdy zrobi? p?tle to je dam z odpowiednim "niby" prefiksem ;p

Ps dzi?ki za wytkni?cie chocia? wiem ?e dok?adnie czyta?e? :p
 

Misteroous

New User
Joined
Aug 2, 2008
Messages
1
Reaction score
0
Odp: Lua ~= zmienne && operatory by Stelma

Przepraszam, ?e pisze w tym temacie ale ni mog? zak?ada? nowych.
A mianowicie mam taki problem:

Npc pod kt?rego przerobi?em skrypt nie dzia?a poprawnie:

Rozmowa wygl?da nastepuj?co:
Salem: Co tutaj robisz GM Stigma... Czego chceszzz? Skoro udalo ci sie pokonac mojego kamiennego golema musiszzzz byc walecznym wojownikiem... hihi... Mam jedno pytanie, jestes z inkwizycji?
15:54 GM Stigma [500]: nie
15:54 Salem: Wspaniale... hihihi... A wiec czego tutaj szukasz? Moze chcialbys mi pomoc i wykonac dla mnie zadanie?
15:54 GM Stigma [500]: zadanie
15:54 Salem: Wspaniale... hihihi... A wiec czego tutaj szukasz? Moze chcialbys mi pomoc i wykonac dla mnie zadanie?
15:54 Salem: Dobrze... hihi... A wiec przynies mi didgeridoo a sowicie Cie wynagrodze!
15:54 GM Stigma [500]: didgeridoo
15:54 Salem: Nie masz przedmiotu o ktory Cie prosilam!
15:56 Salem: Good bye, GM Stigma!

A powinna wygl?da? tak (przypominam, ?e mam item o kt?ry mnie prosi):

Salem: Co tutaj robisz GM Stigma... Czego chceszzz? Skoro udalo ci sie pokonac mojego kamiennego kolema musiszzzz byc walecznym wojownikiem... hihi... Mam jedno pytanie, jestes z inkwizycji?
15:54 GM Stigma [500]: nie
15:54 Salem: Wspaniale... hihihi... A wiec czego tutaj szukasz? Moze chcialbys mi pomoc i wykonac dla mnie zadanie?
15:54 GM Stigma [500]: zadanie
15:54 Salem: Dobrze... hihi... A wiec przynies mi didgeridoo a sowicie Cie wynagrodze!
15:54 GM Stigma [500]: didgeridoo
15:54 Salem: Dziekuje.
15:56 Salem: Good bye, GM Stigma!
Oto skrypt. By?bym bardzo wdzi?czny za pomoc.

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
function onCreatureAppear(cid) npcHandler:eek:nCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:eek:nCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:eek:nCreatureSay(cid, type, msg) end
function onThink() npcHandler:eek:nThink() end
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
if(msgcontains(msg, 'nie')) then
selfSay('Wspaniale... hihihi... A wiec czego tutaj szukasz? Moze chcialbys mi pomoc i wykonac dla mnie {zadanie}?', cid)
talkState[talkUser] = 1
end
if(msgcontains(msg, 'zadanie') and talkState[talkUser] == 1) then
selfSay('Dobrze... hihi... A wiec przynies mi {didgeridoo} a sowicie Cie wynagrodze!', cid)
talkState[talkUser] = 1
elseif(msgcontains(msg, 'didgeridoo') and talkState[talkUser] == 1) then
if(doRemoveItem(cid, 2420) == TRUE) then
doPlayerAddItem(cid, 9117)
selfSay('Dziekuje.', cid)
else
selfSay('Nie masz przedmiotu o ktory Cie prosilam!', cid)
end
talkState[talkUser] = 0
elseif(msgcontains(msg, 'no') and isInArray({1}, talkState[talkUser]) == TRUE) then
talkState[talkUser] = 0
selfSay('Ok.', cid)
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
 

Raev

New User
Joined
Mar 15, 2011
Messages
9
Reaction score
0
Odp: Lua ~= zmienne && operatory by Stelma

Dobry poradnik dla tych co zaczynaja zwoja przygode z LUA. 9/10
 

Arkam

Forum friend
Joined
Dec 20, 2008
Messages
1,980
Reaction score
180
Odp: Lua ~= zmienne && operatory by Stelma

Poradnik nawet dobry, m?g?by? zrobi? takie poradniki nie tylko o ziennych ale te? p?tlach i programowaniu obiektowym, czego brak na tym forum.
 
Top