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 |
Logiczne lub |
[[Delphi/Or |
Zaprzeczenie | [[Delphi/Not |
Logiczne albo |
[[Delphi/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 |
Zaprzeczenie | [[Delphi/Not |
Alternatywa | [[Delphi/Or |
Dysjunkcja | [[Delphi/Xor |
Przesunięcie bitowe w lewo | [[Delphi/Shl |
Przesunięcie bitowe w prawo | [[Delphi/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 |
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.