Operator relacji

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

Operator relacji w programowaniuoperator 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ź nie speł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).

Relacje w językach programowania[edytuj | edytuj kod]

W językach programowania dostępne są operatory relacji, które badają następujące relacje:

  • równości
  • nierówności
    • negacji równości
    • nierówności ostrych
      • mniejsze
      • większe
    • nierówności nieostrych
      • mniejsze lub równe
      • większe lub równe
  • przynależności (zawierania)
  • równoważności.

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.

Zapis operatorów relacji[edytuj | edytuj kod]

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:

Priorytet i stosowanie[edytuj | edytuj kod]

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 Pascalu[4]i 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[1][2][3], C++[3] i inne.

Przykład warunku złożonego z dwóch relacji
Pascal[4] C[1][2][3], C++[3]
if (a<b) and <c>d) then
 begin
   { instrukcje }
 end;
if(a<b && c>d)
 {
   /* instrukcje */
 }

Operatory relacji w językach komputerowych[edytuj | edytuj kod]

Poniższe zestawienie zawiera dostępne operatory relacji w wybranych językach komputerowych.

Operatory relacji w 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[7] =
lub
EQ
<>
lub
NE
<
lub
LT
>
lub
GT
<=
lub
LE
>=
lub
GE
IN CO, CN, CA, NA, CS, NS, CP, NP[a]

BYTE-CO, BYTE-CN, BYTE-CA,
BYTE-NA, BYTE-CS, BYTE-NS[b]
... BETWEEN ... AND ...
IS

Ada[8] = /= < > <= >= link= alt=N link= alt=N
C[1][2][3], C++[3] == != < > <= >= link= alt=N link= alt=N
Pascal[4] = <> < > <= >= in link= alt=N
REXX[9][10] = \= lub ^= (¬=)
<>, ><
< > <= oraz \> (¬>)[c] >= oraz \< (¬<)[d] link= alt=N ==, <<, >>, <<=, >>=
\^=, \== (¬==), \<< (¬<<)
\>> (¬>>)[e]
VHDL[11] = \= < > <= >= link= alt=N link= alt=N
Visual Basic[5][6], VBA[12] = <> < > <= >= link= alt=N Like, Is, IsNot

Uwagi

  1. W języku ABAP operatory te dotyczą badania relacji związanych z łańcuchami znaków.
  2. W języku ABAP operatory te dotyczą badania relacji związanych z łańcuchami bitów.
  3. W języku REXX występuje operator "mniejszy lub równy" oraz "nie większy niż" (sprawdzany jest praktycznie ten sam warunek, ale wymagane jest podanie argumentów w odwrotnej kolejności ).
  4. W języku REXX występuje operator "większy lub równy" oraz "nie mniejszy niż" (sprawdzany jest praktycznie ten sam warunek, ale wymagane jest podanie argumentów w odwrotnej kolejności).
  5. W języku REXX operatory te dotyczą badania relacji związanych z łańcuchami znaków.

Przypisy

  1. 1,0 1,1 1,2 1,3 Jan Bielecki: Turbo C z grafiką na IBM PC. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990, seria: Mikrokomputery. ISBN 83-204-1101-7. (pol.)
  2. 2,0 2,1 2,2 2,3 Jan Bielecki: Encyklopedia języka C dla IBM PC. T. I: Opis języka. Warszawa: Wydawnictwa Komunikacji i Łączności, 1989. ISBN 83-206-0919-4. (pol.)
  3. 3,0 3,1 3,2 3,3 3,4 3,5 3,6 3,7 Jan Bielecki: Od C do C++, programowanie obiektowe w języku C. Warszawa: Wydawnictwa Naukowo-Techniczne, 1990. ISBN 83-204-1332-X. (pol.)
  4. 4,0 4,1 4,2 4,3 Andrzej Marciniak: Borland Pascal 7.0. Poznań: Nakom, 1994, seria: Biblioteka Użytkownika Mikrokomputerów. ISSN 0867-6011. ISBN 83-85060-53-7. (pol.)
  5. 5,0 5,1 Comparison Operators (Visual Basic) (ang.). msdn.microsoft.com. [dostęp 2011-09-08].
  6. 6,0 6,1 Comparison Operators in Visual Basic (ang.). msdn.microsoft.com. [dostęp 2011-09-08].
  7. 7,0 7,1 Comparisons for Operands of Arbitrary Data Types (ang.). W: ABAP Programming (BC-ABA) [on-line]. help.sap.com – SAP Library. [dostęp 2011-09-08].
  8. Michał Morawski, Antoni M. Zajączkowski: Wstęp do programowania w języku Ada’95. Wyd. drugie. Łódź: 2004. [dostęp 2011-01-29]. (pol.)
  9. The REXX language (ang.). killbox.pl. [dostęp 2011-09-08].
  10. Open Object Rexx™: Reference (ang.). www.oorexx.org. [dostęp 2011-09-08].
  11. Wyrażenia (pol.). W: Prezentacja języka VHDL [on-line]. home.elka.pw.edu.pl. [dostęp 2011-09-12].
  12. John Walkenbach: Excel 2003 PL. Programowanie w VBA.. HELION, 2004. ISBN 837361-504-0. (pol.)

Bibliografia[edytuj | edytuj kod]