Operator relacji w programowaniu – operator dostępny w określonym języku programowania (a także w innych językach komputerowych), który działając na podanych argumentach, w wyniku zwraca wartość logiczną, określającą spełnienie bądź niespełnienie reprezentowanej przez ten operator relacji zachodzącej między zapodanymi argumentami. Wynikiem działania operatora relacji jest więc wartość reprezentująca zgodnie z zasadami obowiązującymi w składni danego języka programowania jedną z wartości logicznych: prawdę (true) lub fałsz (false).
W językach programowania dostępne są operatory relacji, które badają następujące relacje:
Oprócz wyżej wymienionych występują także bardziej złożone konstrukcje umożliwiające między innymi porównanie z wzorcem i inne.
Jak wyżej zaznaczono sposób zapisu w kodzie źródłowym operatorów relacji zależny jest od przyjętej w składni danego języka sposobu reprezentacji znakowej operatorów, przy czym stosowane są zasadniczo dwa rozwiązania:
<, <= itp. takie rozwiązanie dostępne jest m.in. w języku C, C++, Pascal, Visual Basic i innych; taki zapis zbliżony jest do notacji matematycznej (w dostosowaniu do dostępnego w systemie komputerowym i na klawiaturze zestawu znaków),GE – greater equal, GT – greater then, NE – not equal itp., takie rozwiązanie wywodzi się i dostępne jest m.in. w języku Fortran; stosowano je także później w niektórych językach, np. ABAP.Operatory relacji stosowane są w kodzie źródłowym na takich samych zasadach jak pozostałe operatory, tj. w wyrażeniach, które mogą być używane np. w przypisaniu, wywołaniu podprogramu jako argument, czy też w konstrukcjach warunkowych określających realizację algorytmu według wybranej ścieżki przebiegu sterowania na podstawie wybranych kryteriów badania. W różnych językach mają różny, określony priorytet w hierarchii wszystkich dostępnych w języku operatorów, decydujący o kolejności wykonywana działań. W wielu językach priorytet ten jest niższy niż operatorów arytmetycznych dzięki czemu zgodnie z oczekiwaniami, najpierw dokonane zostanie wyliczenie rezultatu wyrażeń arytmetycznych stanowiących argumenty dla operatora relacji, a dopiero w następnej kolejności badanie relacji między wyznaczonymi wartościami. Bardziej zróżnicowane natomiast podejście można spotkać w aspekcie priorytetów operatorów relacji w porównaniu do operatorów logicznych), które stosowane są między innymi do budowy złożonych warunków opartych na kilku kryteriach decyzyjnych. W tym przypadki, jeżeli priorytet operatorów relacji jest niższy niż operatorów logicznych, to zdefiniowane przez nie działania wykonane zostaną po operacjach logicznych. Taka kolejność wykonywania dziań w większości typowych przypadków będzie niezgodna z intencją programisty, co wymusza konieczność stosowania nawiasów, tj. umieszczania wyrażeń relacji w nawiasach, a kolejne warunki ujęte w nawiasy pozostają połączone operatorami logicznymi. Tak jest np. w Pascalui innych. W tych językach, w których operatory relacji mają wyższy priorytet niż operatory logiczne budowa warunków złożonych nie wymusza stosowania nawiasów, np. C, C++ i inne.
| Pascal | C, C++ |
|---|---|
if (a<b) and (c>d) then
begin
{ instrukcje }
end;
|
if(a<b && c>d)
{
/* instrukcje */
}
|
Poniższe zestawienie zawiera dostępne operatory relacji w wybranych językach komputerowych.
| język komputerowy | równości | nierówności | przynależność | inne | ||||
|---|---|---|---|---|---|---|---|---|
| negacja równości | nierówności ostre | nierówności nieostre | ||||||
| mniejszy | większy | mniejszy lub równy | większy lub równy | |||||
| ABAP | =lub EQ |
<>lub NE |
<lub LT |
>lub GT |
<=lub LE |
>=lub GE |
IN |
CO, CN, CA, NA, CS, NS, CP, NP
|
| Ada | = |
/= |
< |
> |
<= |
>= |
||
| C, C++ | == |
!= |
< |
> |
<= |
>= |
||
| Pascal | = |
<> |
< |
> |
<= |
>= |
in |
|
| REXX | = |
\= lub ^= (¬=)<>, >< |
< |
> |
<= oraz \> (¬>) |
>= oraz \< (¬<) |
==, <<, >>, <<=, >>=\^=, \== (¬==), \<< (¬<<)\>> (¬>>) | |
| VHDL | = |
\= |
< |
> |
<= |
>= |
||
| Visual Basic, VBA | = |
<> |
< |
> |
<= |
>= |
Like, Is, IsNot | |