niedziela, 8 lutego 2009

instrukcje warunkowe oraz operatory

Instrukcje warunkowe
W easyUO występuje tylko jeden typ instrukcji warunkowych. Jest to blok if(){} else {}
Już spieszę wytłumaczyć czym są i dlaczego są takie ważne te instrukcje warunkowe. A mianowicie służą one do podejmowania decyzji przez skrypt na podstawie pewnych warunków co powinien wykonać. Przykład z "życia": skrypt na łowienie ryb, jeżeli skończyły się ryby, to trzeba zmienić miejsce. Przejdźmy do konkretu. Blok if() wygląda tak:
if warunek
{
...
instrukcje
}

proste, prawda?
Jeżeli warunek jest spełniony, to skrypt wykona instrukcje zawartą w nawiasach klamrowych. Można również pominąć nawiasy klamrowe. W takim przypadku zostanie wykonana tylko instrukcja, która znajduje się w następnej linii. Przykład
if %sila = 10
event sysmessage Ale masz malo sily!

Istnieje również instrukcja else czyli rozwiniecie zwykłego if'a. Wygląda to tak:
if warunek
{
instrukcje1
}
else
{
instrukcje2
}
Co się stanie w takim przypadku? Mam nadzieje ze już potrafisz się domyślić.
Jeżeli warunek jest spełniony to wykonana zostanie instukcja1, ale nie zostanie wykonana instrukcja2. W przypadku gdy warunek nie jest spełniony, zostaje wykonana tylko instrukcja2 a nie instrukcja1. Mam nadzieję, że jest to zrozumiałe. Teraz nauczymy się tworzyć warunki, czyli coś o operatorach.
Ah, no i oczywiście jeżeli ktoś chce więcej na temat instrukcji warunkowej if - else to odsyłam do dokumentacji.

Operatory
W easyUO jak w większości (o ile nie wszystkich) języków programowania mamy operatory: arytmetyczne, porównania oraz logiczne. Dodatkowo jest jeszcze operator konketenacji, kontynuacji linii i tablicowy (tutaj niestety twórcy języka się nie popisali tworząc tablice)

Operatory arytmetyczne
Czyli operatory znane wszystkim z matematyki oraz jeden zapewne nie znany.
%a + %b Dodawanie - Wynikiem jest dodawanie 2 liczb
%a - %b Odejmowanie - Wynikiem jest różnica wartości zmiennej a i b
%a * %b Mnożenie - Wynikiem jest mnożenie 2 liczb
%a / %b Dzielenie - Wynikiem jest wynik z dzielenia liczby a przez b. Warto tutaj powiedzieć, że dzielenie jest tylko całkowitoliczbowe. Co to znaczy? Że nie mamy liczb po przecinku jeżeli %a równa się 1 a %b równa się 2 to wynik będzie 0. Normalnie mamy 0.5 jednak w easyUO część ułamkowa jest odrzucana. Dlaczego tak jest? Ponieważ w easyUO nie ma typu zmiennoprzecinkowego, wszystko jest typu całkowitego. Jeżeli Cię to bardzo ciekawi, polecam lekturę reprezentacji liczb w systemach komputerowych.
%a % %b Dzielenie modulo - Wynikiem jest reszta z dzielenia liczby %a przez %b. Jak to rozumieć? Może przykład 7 % 2 wynosi 1. Bo 7/2=3 i 1 reszty.
sprawdz sam siebie wykonując te zadania:
13 % 3
15 % 5
-1 % 2

wyniki to: 1 , 0 , -1
ABS %b Wartość bezwzględna - Wynikiem jest liczba dodatnia. Jeżeli liczba jest mniejsza od zera to zwracana jest jej wartość dodatnia. Np: ABS -5 wynosi 5


Operatory porównania
Bardzo przydatne właśnie w instrukcjach warunkowych. Zwracają prawdę, lub fałsz.

%a = %b Porównanie - prawda jeśli wartości są równe
%a <> %b Różne - prawda jeśli wartości są różne
%a < %b Mniejszość - prawda jeśli %a mniejsze od %b
%a > %b Większość -prawda jeśli %a większe od %b
%a <= %b Mniejszość lub równość - prawda jeśli %a mniejsze lub równe od %b
%a => %b Większość lub równość - prawda jeśli %a większe lub równe od %b%a in %b Zawieranie - prawda jeśli wartość %a zawiera się w wartości %b (głównie w łańcuchach znakowych np: if Zywioł in #journal )
%a notIn %b Nie zawieranie - przeciwność in. Czyli prawda jeżeli się nie zawiera


Operatory logiczne
Służą do łączenia warunków w instrukcjach warunkowych

%a && %b koniunkcja (i)- prawda jeśli obie wartości są równe
%a|| %b alternatywa (lub) - prawda kiedy przynajmniej jedna jest równa
! %a Negacja (nie) - prawda jeśli %a jest fałszem


Operatory różne
event sysmessage to jest
+ jedna
+ linia

czyli operator kontynuacji linii

%a , %b konkatenacja czyli dołączenie wartości do łańcucha znaków. Przykład:
set %a A
set %b B
set %c %a , %b
event sysmessage %c
w wyniku zobaczymy na ekranie AB. Mam nadzieje, że operator ten jest jasny. Jeżeli zrobilibyśmy
event sysmessage %a %b
to w wyniku otrzymamy AB, dlatego stosuje się konkatenację.

%a . %btablice szczerze powiedziawszy jest to temat na osoby artykulik bądź lekcję. Ja sam miałem na początku problemy ze zrozumieniem tego operatora, ale przedstawię przykład. Jeśli ktoś zrozumie to bardzo dobrze.

set %a tablica
set %b 1
set %tablica1 tekst
set %test %a . %b

tak właśnie wygląda i tak się stosuje operator tablicowy. Jak to działa? Zwracana jest wartość, która znajduje się w zmiennej, której nazwa jest sklejeniem 2 wartości ze zmiennych %a i %b
W naszym przypadku %a . %b zwraca wartość znajdującą się w zmiennej %tablica1.
Wg mnie bardziej nie dało się skomplikować tak prostego pojęcia jak tablice. Ale tak jak pisałem to temat na osobną lekcję.


Chciałbym wszystkich czytających zachęcić do pisania komentarzy, piszcie co wam się podoba, co się nie podoba. Czy mieliście lub macie jakieś wątpliwości lub problemy z daną lekcją. Jeżeli problemy są inne proszę o kontakt simet[at]poczta.fm

Brak komentarzy:

Prześlij komentarz