Operatory języka

Adam Boduch

Operatory są specjalnymi znakami, elementami języka programowania, służącymi do manipulowania danymi i sterowania pracą programu. Poniżej przedstawiam rodzaje operatorów, wraz z krótkim opisem. Szerszy opis obliczeń dokonywanych na danych liczbowych można znaleźć w dziale operacje liczbowe - obliczenia.

Operatory przypisania

Przypisanie danych jest jedną z najważniejszych i zarazem najczęściej wykonywanych czynności podczas programowania zarówno w Delphi, jak i większości istniejących języków programowania. Jak sama nazwa wskazuje, operator przypisania powoduje przypisanie nowych danych do zmiennej:

Zmienna := 20;

Budowa jest jak widać bardzo prosta. Po lewej stronie należy wpisać nazwę zmiennej do której zostanie przypisana wartość, a po prawej musi znaleźć się przypisywana wartość.

W języku C/C++ odpowiednikiem operatora przypisania z Delphi jest sam znak równości (=), tak więc przypisanie jest w C jeszcze krótsze:

zmienna = 10;

Operatory porównania

Czynność porównywania jest stosowana w codziennym życiu człowieka. Jesteśmy w stanie na przykład określić, który człowiek z dwojga jest wyższy, a na podstawie liczby koni mechanicznych silników jesteśmy w stanie ocenić, który z nich ma większą moc.
Podobnie w matematyce obowiązują takie znaki porównania jak > (znak większości) i < (znak mniejszości). Identyczne symbole są wykorzystywane w językach programowania.

Operator Język Delphi
Równości =
Nierówności <>
Większości >
Mniejszości <
Większe lub równe >=
Mniejsze lub równe <=

Operatory logiczne

Operatory logiczne często są nazywane operatorami boolowskimi (ang. Boolean operators). Wynika to z tego, że realizują one operacje właściwe dla algebry Boole'a.

Faktycznym zastosowaniem tych operatorów jest testowanie kilku warunków. Weźmy jakiś przykład z życia codziennego:
Jeżeli będę miał 18 lat i 20 tysięcy zł, kupię sobie samochód.
W tym zdaniu operatorem jest spójnik i. Do spełnienia kryterium (kupna samochodu) niezbędne jest zatem spełnienie łącznie dwóch warunków (posiadania 20 tysięcy złotych oraz ukończenia 18 lat). Jeżeli któryś z tych warunków nie będzie prawdziwy - kryterium, czyli kupno samochodu, nie zostanie spełnione.

Podobny przykład można przenieść na platformę programową. Na przykład jeżeli zmienna X posiada wartość 20, a zmienna Y wartość 10, to zrób to i tamto.

Operator Język Delphi
Logiczne i [[Delphi/And and]]
Logiczne lub [[Delphi/Or or]]
Zaprzeczenie [[Delphi/Not not]]
Logiczne albo [[Delphi/Xor xor]]

Operatory arytmetyczne

Nauka jaką jest matematyka, dawno temu wykształciła pewne symbole umowne opisujące niektóre trywialne działania, jak np. dodawanie czy odejmowanie. Oczywiście komputer jako maszyna działająca przede wszystkim właśnie na liczbach umożliwia wykonywanie tych czynności w bardzo prosty sposób przy wykorzystaniu symboli identycznych jak w matematyce.

Operator Język Delphi
Dodawanie +
Odejmowanie -
Mnożenie *
Dzielenie rzeczywiste /
Dzielnie całkowite div
Reszta z dzielenia całkowitego mod

Można tu zauważyć pewną różnicę w porównaniu z tym, czego uczyliśmy się w szkole podstawowej. W szkole bowiem jako znaku mnożenia używaliśmy kropki, natomiast komputerowym symbolem mnożenia jest gwiazdka (*). To samo tyczy się dzielenia (w szkole znak :), podczas gdy w Delphi symbol /.

Ciekawą operacją dostępną w Delphi jest dzielenie całkowite. Otóż stosując operator div w miejsce standardowego / podzielimy liczby, lecz reszta z ewentualnego dzielenia zostanie pominięta.

To samo tyczy się operatora Mod - jeżeli chcemy uzyskać jedynie resztę z dzielenia, możemy użyć mod w miejsce /.

W Delphi oczywiście można dodawać, dzielić i wykonywać wszystkie pozostałe działania arytmetyczne, korzystając ze zmiennych. Przykładowo: pobieramy dane od użytkownika i dodajemy dwie wartości. Dodawanie wartości zmiennych wygląda identycznie jak w przypadku zwyczajnych liczb:

X + Y; // dodanie wartości zmiennej X do zmiennej Y

W prosty sposób można także przypisać wynik jakiejkolwiek operacji:

Z := X * Y; // do zmiennej Z przypisz wynik mnożenia X i Y

Funkcje zwiększania i zmniejszania

Programowanie w języku C/C++ charakteryzuje się mniej czytelną składnią, ale jednocześnie dużą elastycznością oraz szybkością tworzenia kodu. W Turbo Pascalu w celu zwiększenia wartości zmiennej o 1 należało wykonać:

X := X + 1; // zwiększenie zmiennej o 1

W C/C++ istnieją natomiast operatory upraszczające cały proces:

++i; // zwiększ liczbę i o 1
i--; // zmniejsz liczbę i o jeden

W Delphi z kolei wprowadzono funkcje zwiększania (ang. increment) oraz zmniejszania (ang. decrement) wartości:

Inc(X); // zwiększ wartość X o 1
Dec(X); // zmniejsz wartość X o 1

Standardowe wywołanie tych funkcji zwiększa lub zmniejsza daną wartość o 1. Możliwe jest jednak zastosowanie opcjonalnego drugiego parametru, który określa, o ile funkcja ma zwiększyć wartość, np.:

Inc(X, 2); // zwiększ wartość X o 2
Dec(X, 4); // zmniejsz wartość X o 4

Dodatkowo w kompilatorze Free Pascal wprowadzono parę operatorów znanych z C/C++ oraz składniowo podobnych języków:

X += Y; // X := X+Y;
X -= Y; // X := X-Y;
X *= Y; // X := X*Y;
X /= Y; // X := X/Y; (tylko typy zmiennoprzecinkowe!)
X << Y; // X shl Y
X >> Y; // X shr Y

Operatory bitowe

Operatory bitowe oferują nieco bardziej zaawansowane działania na liczbach binarnych.

Operator Język Delphi
Koniunkcja [[Delphi/And and]]
Zaprzeczenie [[Delphi/Not not]]
Alternatywa [[Delphi/Or or]]
Dysjunkcja [[Delphi/Xor xor]]
Przesunięcie bitowe w lewo [[Delphi/Shl shl]]
Przesunięcie bitowe w prawo [[Delphi/Shr shr]]

Operatory klasowe

Operatory wykorzystywane przy pracy z obiektami oraz rekordami.

Operator Opis
As Konwertuje przekazany obiekt na inny typ (jeżeli niemożliwe, zwraca nil)
Is Sprawdza, czy przekazany obiekt jest określonej klasy
. Operator odwołania do elementu klasy (obiektu) lub rekordu

Shr

  • 2006-07-08 16:05
  • 1 komentarz
  • 1251 odsłon

Shl

  • 2006-02-06 19:22
  • 0 komentarzy
  • 1266 odsłon

Mod

  • 2005-12-22 20:59
  • 0 komentarzy
  • 2046 odsłon

Div

  • 2005-12-22 20:46
  • 0 komentarzy
  • 1843 odsłony

Is

  • 2005-12-22 16:42
  • 0 komentarzy
  • 956 odsłon

Not

  • 2005-12-21 23:26
  • 2 komentarzy
  • 1143 odsłony

As

  • 2005-12-21 23:08
  • 0 komentarzy
  • 1098 odsłon

Or

  • 2005-12-21 23:08
  • 0 komentarzy
  • 1201 odsłon

Xor

  • 2005-12-21 22:50
  • 3 komentarzy
  • 1529 odsłon

And

  • 2005-12-21 20:31
  • 2 komentarzy
  • 1290 odsłon

9 komentarzy

A operator '?' w kodzie delphi co może oznaczać ?

w turbo pascalu wcale nie trzeba było pisać x:=x+1
pisało sie inc(x);

a nawet zamiast x:=x+2 można było inc(x,2);

A czytać umiesz? Operator różności -

a co z tym że się np. 1 nie równa 2??
Chodzi mi przekreślone =.

Hmmm... dobre pytanie. Moze w tekscie "symbole" (utworzyc takowy) albow tekscie "skladnia jezyka" (juz istniejacy)?

Coz... sam Borland stosuje terminologie "symbol" wobec tych znakow. Gdyby traktowac znaki [ oraz ] jako oparator to czemu nie ( oraz ) ?
Osobiscie za operator uznaje symbol jezyka ktory sluzy wykonywaniu jakichs operacji (czyli, np. przypisywanie, porownywanie, mnozenie itp. a takze pobieranie adresu zmiennej, czyli @). Natomiast [ czy ^ czy ( to obowiazkowe elementy skladni wymagane do prawidlowej kompilacji programu (tak jak np. znak srednika na koncu instrukcji lub kropki na koncu programu).

Dlaczego @ jest operatorem, ale ^ ani [] już nie są?

Co do $, # oraz ; zgodzę się, że nie są to operatory, ale gdzie je opisać, jak nie tutaj?

Co do @ to sie zgodze, ale pozostale symbole ktore podales sa wlasnie symbolami - nie sa to operatory.

Jak ktoś będzie miał czas (w tym również ja), to niech dopisze o:
;, @, ^, [], $, #, etc - to też operatory języka, a o arytmetycznych jest inny artykuł.

Należałoby chyba jeszcze poszerzyć ten opis o inne operatory.