Colobot Wiki
Advertisement

Definicja[]

Operatory są znakami, które wykonują na wyrażeniach proste operacje. Wyróżniamy kilka rodzajów operatorów, które dodatkowo dzielą się na:

  • jednoargumentowe (stoni przy nim jedno wyrażenie)
  • dwuargumentowe (stoją przy nim dwa wyrażenia)

Dodatkowo, podobnie jak w matematyce istnieje kolejność wykonywania działań, tak samo w programowaniu istnieją priorytety operatorów. Mogą się nieco różnić w każdym języku, oto tabela przedstawiająca priorytety w kilku znanych językach programowania (w CBOT prawdopodobnie opiera się to na języku C++): Tabela

Operatory arytmetyczne[]

Przyjmują dwa argumenty.

Nazwa Zastosowanie
Dodawania wyrażenie + wyrażenie
Odejmowanie wyrażenie - wyrażenie
Mnożenie wyrażenie * wyrażenie
Dzielenie wyrażenie / wyrażenie
Reszta z dzielenia

wyrażenie % wyrażenie

Operatory + i -[]

Przyjmują jeden argument.

Nazwa Zastosowanie
Bez zmiany wartości +wyrażanie
Zmiana wartości na liczbę przeciwną -wyrażenie

Operatory inkrementacji i dekrementacji[]

Przyjmują jeden argument

Nazwa Zastosowanie
Preinkrementacja ++wyrażenie
Postinkrementacja wyrażenie++
Predekrementacja --wyrażenie
Postdekrementacja

wyrażenie--

Do początkujących:[]

Chodzi o zwiększenie wartości wyrażenia o 1. Innymi słowy po takiej operacji:

i++;
j++;

Zakładając, że zmienne i i j miały wczesniej wartość 0, po tym kodzie będą równe 1. W przypadku dekrementacji miałyby wartość -1.

Różnica między pre- i post-

Cytat z książki Jerzego Grębosza, Symfonia C++:

Jeśli operator inkrementacji (zwiększenia) stoi przed zmienną, to:
 * najpierw jest ona zwiększana o 1,
 * następnie ta zwiększona wartość już staje się wartością wyrażenia
Jeśli operator inkrementacji stoi za zmieną, to:
 * najpierw brana jest stara wartość tej zmiennej i ona staje się wartością wyrażenia,
 * a następnie zwiększany jest o 1. Zwiększenie nie wpłynęło więc jeszcze na wartość samego wyrażenia

Tak samo przy dekrementacji. Jeśli nie jesteś pewien, z której strony chcesz postawić operator to lepiej zrób to przed zmienną.

Operatory przypisania[]

Przyjmuje jeden argument.

Nazwa Zastosowanie
Przypisanie

wyrażenie = wyrażenie

Do obiektu stojącego jego po lewej stronie przypisuje wartość obiektu stojącego po jego prawej stronie.

Istnieją także operatory przypisania stworzone dla wygody programisty.

Nazwa Zastosowanie Przykład/analogia
Zwiększenie wyrażenie += wyrażenie i+=1 / i = i + 1
Zmniejszenie wyrażenie -= wyrażenie i-=1 / i = i - 1
Pomnożenie wyrażenie *= wyrażenie i*=1 / i = i * 1
Podzielenie wyrażenie /= wyrażenie i*=1 / i = i * 1

Operatory logiczne[]

Zwracają w wyniku typ logiczny.

Operatory relacji[]

Przyjmują dwa argumenty.

Nazwa Zastosowanie
Mniejszy niż wyrażenie < wyrażenie
Mniejszy lub równy niż wyrażenie <= wyrażenie
Większy niż wyrażenie > wyrażenie
Większy lub równy niż wyrażenie >= wyrażenie
Równa się wyrażenie == wyrażenie
Jest różne od

wyrażenie != wyrażenie

Uwaga: Operator równa się == łatwo pomylić z operatorem przypisania =, zwłaszcza przy pisaniu warunków, co może skutkować katastrofą.

Inne[]

Przyjmują dwa argumenty (wyj. negacja).

Nazwa Zastosowanie
Suma logiczna (alternatywa) (LUB)
wyrażenie || wyrażenie
Iloczyn logiczny (koniunkcja) (I) wyrażenie && wyrażenie
Negacja !wyrażenie

Do początkujących:[]

Suma logiczna: JEŚLI wyrażenie1 jest prawdą LUB wyrażenie2 jest prawdą ZWRÓĆ prawdę.

Iloczyn logiczny: JEŚLI wyrażenie1 jest prawdą I wyrażenie2 jest prawdą ZWRÓĆ prawdę.

Negacja: ZWRÓĆ wartość przeciwną. np. !n == prawda, gdy n jest równe 0.

Wyrażenie warunkowe[]

Przydatne wyrażenie, właściwie samo w sobie nie jest operatorem. Składnia:

warunek ? wartość_dla_prawdy : wartość_dla_fałszu

Nie trzeba chyba niczego tłumaczyć, ale dla pewności przykład:

bool jeden = true, dwa = true;
int logic_int;

logic_int = ( (jeden == true) ? 0 : 1 );

Ostatnią linijkę można przetłumaczyć tak:

Do zmiennej logic_int przypisz wartość 0, jeśli zmienna jeden jest równa true, lub 1, jeśli false.

Advertisement