| Podstawy JS, cz. 4: Co można robić ze zmiennymi? |
| 4.1 Operatory |
Operatory to według definicji polecenia przetwarzjące zmienną lub zmienne (najczęściej dwie) i zwracające wynik. Tak więc operatory w językach programowania mają dokładnie taką samą rolę jak w matematyce. Jeśli jednak dla kogoś nie jest to jasne radzę po prostu przyjrzeć się przykładom. |
| 4.1.1 Binarne operatory arytmetyczne |
To chyba najbardziej oczywiste operatory. Ale na wypadek, gdyby ktoś ich nie znał, oto krótka tabelka:
| Operator |
Opis |
| + |
dodawanie |
| - |
odejmowanie |
| * |
mnożenie |
| / |
dzielenie |
| % |
dzielenie modulo |
Może tylko ten ostatni wymaga wyjaśnienia. Jest to nic innego, jak reszta z dzielenia pierwszej liczby przez drugą. Te operatory stosuje się dokładnie tak jak na co dzień:
wynik = liczba operator liczba
[ Powrót na górę ]
|
| 4.1.2 Unarne operatory arytmetyczne |
Różnią się one tym od poprzednich, że działanie wykonywane jest na jednej tylko liczbie (stąd unarne). Są to: |
| 4.1.2.1 Inkrementowanie i dekrementowanie |
Pod tymi tajemniczymi nazwami kryją się odpowiednio zwiększanie i zmniejszanie zmiennej o 1. Inkrementacja wygląda następująco:
zmienna++
Jest to równoważne takim dwóm zapisom (o drugim będzie mowa później):
zmienna = zmienna + 1
zmienna += 1
Można tego operatora używać też w przypisaniach:
zmienna1 = zmienna2++
zmienna1 = ++zmienna2
Uwaga! Te dwa zapisy oznaczją dwie różne rzeczy! W pierwszym przypadku najpierw nastąpi przypisanie, a dopiero potem inkrementacja, a w drugim - odwrotnie. Jeśli komuś wydaje się to mylące, zawsze można pisać:
zmienna1 = zmienna2;
zmienna2++;
zmienna2++;
zmienna1 = zmienna2;
Dekrementacją rządzą takie same zasady, trzeba tylko zamienić "++" na "--".
[ Powrót na górę ]
|
| 4.1.2.2 Negacja |
Negację oznacza "-". Zmienia on po prostu znak wyrażenia z ujemnego na dodatni albo odwrotnie. Nic odkrywczego, prawda? Przykład:
-zmienna
[ Powrót na górę ]
|
| 4.1.3 Operatory przypisania |
Najprostszy z nich został juz opisany. Jest to "=". Ale istnieją też inne operatory przypisania będące w zasadzie tylko skrótami: "+=", "-=" itd. Łączą one w sobie przypisanie i proste działanie arytmetyczne. Oto wyjaśnienie:
| Przypisanie |
Równoważne przypisanie |
| a += b |
a = a + b |
| a -= b |
a = a - b |
| a *= b |
a = a * b |
| a /= b |
a = a / b |
| a %= b |
a = a % b |
[ Powrót na górę ]
|
| 4.1.4 Operatory porównania |
Są to wyrażenia typu większe od, równe itd. Wszystko powinna wyjaśnić kolejna tableka:
| Operator |
Opis |
| == |
równa się |
| != |
różne od |
| > |
większe od |
| < |
mniejsze od |
| >= |
niemniejsze od |
| <= |
niewiększe od |
[ Powrót na górę ]
|
| 4.1.5 Operatory logiczne |
Zapewne i te operatory nie są obce wszystkim tym, którzy znają podstawy matematyki. Są to "i", "albo" oraz "nie", które w JS zapisuje się jako: "&&", "||" oraz "!". Oto kilka przykładów konstrukcji logicznych (litery oznaczją tu dowolne wyrażenia, którym można przyporządkować wartości true albo false):
! ((p || q) && r)
((p && q) || !(r || s)) && t
być || !być
Uwaga! Prawa autorskie do ostatniego z przykładów należą do pewnego angielskiego dramaturga :).
[ Powrót na górę ]
|
| 4.1.6 Operatory znakowe |
Na łańcuchach znakowych także można wykonywać operacje. Jednak nie mają tu sensu np. odejmowanie albo mnożenie. Z operatorów arytmetycznych można stosować tylko "+" (była już o tym mowa, ale dla przypomnienia: jest to sklejenie dwóch stringów). Jeśli chodzi o porównania, ma tu sens tylko proste porównanie ("=="), trudno byłoby np. określić, który łańcuch znakowy jest większy (uwaga: można jednak porównywać długość łańcuchów - MójString.length, gdyż jest to zwykła liczba całkowita).
Co jednak się stanie, gdy spróbujemy wykonywać działania na stringach tak jak na liczbach? Otóż zostanie wtedy podjęta próba zamiany stringów na liczby i jeśli się ona powiedzie działanie zostanie wykonanie. Jednak jeśli taka konwersja nie będzie możliwa (jak np. z "trzysta"), otrzymamy komunikat o błędzie.
[ Powrót na górę ]
|
| 4.2 Wyrażenie warunkowe |
Jest to dosyć specyficzne wyrażenie, związane ściśle z operatorami logicznymi i przypisania. Pozwala ono na uzależnienie przypisywanej wartości od spełnienia jakiegoś warunku. Ma ono następującą postać:
zmienna = (warunek) ? wartość_prawda : wartość_fałsz
Jeśli warunek jest spełniony, zmiennej przypisana zostanie wartość_prawda, jeśli nie - wartość_fałsz. Oto przykładowe użycie:
CenaZaSztuke = (ZamowionaLiczba > 60) ? 19.99 : 17.99
To samo można zapisać za pomocą instrukcji warunkowej if ... else ...:
if (ZamowionaLiczna > 60)
CenaZaSztuke = 19.99
else
CenaZaSztuke = 17.99
Nie warto jednak używać wyrażenia warunkowego, jeśli chcemy jakiejś zmiennej przypisać prawdę albo fałsz. Wtedy wygodnej napisać coś takiego:
RabatuUdzielono = (CenaZaSztuke > 60)
[ Powrót na górę ]
|