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ę ]
|