Najlepsze pytania
Chronologia
Czat
Perspektywa
Operator logiczny
Z Wikipedii, wolnej encyklopedii
Remove ads
Operator logiczny 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 argumentach reprezentujących wartości logiczne, w wyniku zwraca również wartość logiczną, realizując podstawowe operacje algebry Boole’a.
To jakie operatory logiczne są dostępne w konkretnym języku programowania zależy od jego składni, a to jakie są zasady ich stosowania, w tym priorytet tych operatorów i kolejność opracowywania argumentów, od przyjętej przez autorów języka lub implementacji konwencji. Zróżnicowany jest również sposób zapisu operatorów logicznych w poszczególnych językach: stosuje się zapis, bądź w postaci słów kluczowych, bądź symboli (znaku lub znaków niebędących literami). Stosowane są operatory logiczne jednoargumentowe – operator negacji, oraz dwuargumentowe – np. suma logiczna, iloczyn logiczny i inne.
Remove ads
Dostępne operatory logiczne
Operatory logiczne udostępnione w językach komputerowych realizują następujące operacje logiczne:
Zapis operatorów logicznych
Podsumowanie
Perspektywa
Jak wyżej zaznaczono zapis w kodzie źródłowym operatorów logicznych zależne jest od przyjętej w składni danego języka sposobu reprezentacji znakowej operatorów, przy czym stosowane są zasadniczo dwa rozwiązania:
- zapis za pomocą słów kluczowych, odpowiadających nazwom operacji przez nie wykonywanych, np.
and
,or
,xor
, itp., takie rozwiązanie dostępne jest m.in. w języku Pascal[1], Visual Basic[2][3] i innych, - zapis za pomocą symboli składających się ze znaku lub znaków innych niż litery, np.
&&
,||
, itp. takie rozwiązanie dostępne jest m.in. w języku C[4][5][6], C++[6] i innych.
W językach programowania oprócz operatorów logicznych występują także i inne, w tym operatory bitowe, realizujące odpowiednie operacje logiczne na pojedynczych bitach. W pewnych językach, np. C[4][5][6], C++[6], zapis tych operatorów jest różny, np. dla iloczynu bitowego jest to symbol: &
, natomiast dla iloczynu logicznego jest to symbol: &&
. W innych językach stosowany jest jednolity zapis tych operatorów, a to czy realizowana jest operacja logiczna czy bitowa zależne jest od typu argumentów, tak jest m.in. w języku Pascal[1], np. iloczyn bitowy oraz iloczyn logiczny realizowany jest za pomocą operatora reprezentowanego przez słowo kluczowe: and
, co stanowi tzw. przeciążanie operatorów.
Remove ads
Stosowanie operatorów logicznych
Operatory logiczne stosuje się w wyrażeniach, których rezultat jest typu logicznego, zarówno w przypisaniu jak i w wyrażeniach reprezentujących określone warunki realizacji algorytmu, np. w instrukcji warunkowej, pętli repetycyjnej i inne. Dają one możliwość budowania złożonych warunków, badających spełnienie bądź niespełnienie wielu różnych kryteriów równocześnie.
Przykłady:
Implementacja operatorów logicznych
Podsumowanie
Perspektywa
Zagadnienie implementacji operatorów logicznych w językach komputerowych wiąże się jak wyżej zaznaczono ustalenie reguł ich stosowania obejmujących między innymi ich priorytet, łączność, zasady opracowywania argumentów i inne aspekty.
Z priorytetem operatorów logicznych wiąże się zagadnienie kolejności wykonywania obliczeń w wyrażeniach, co ma szczególne znaczenie przy budowaniu warunków złożonych w wyrażeniach reprezentujących określone warunki realizacji algorytmu. Istotne jest również, czy zawsze opracowywane są dla takich operatorów wszystkie argumenty, nawet wtedy, gdy już na podstawie jednego z nich można określić wynik operacji, oraz ich kolejność (np. w systemie programowania Turbo C[4] argumenty operatorów logicznych opracowywane są zawsze od lewej do prawej, a drugi z argumentów nie jest opracowywany, gdy już na podstawie wartości pierwszego z nich można określić rezultat operacji, co stanowi optymalizację programu). Istnieją języki które posiadają w swoim repertuarze operatory, dla których zawsze opracowywane są wszystkie argumenty (np. w języku Visual Basic[2][3] operatory And
i Or
), oraz odpowiadające im operatory realizację te same operacje logiczne, ale pomijające wykonywanie obliczeń dla drugiego argumentu, jeżeli rezultat operacji jest znany już po obliczeniu pierwszego z nich (np. w języku Visual Basic[2][3] operatory AndAlso
i OrElse
). Ma to szczególne znaczenie w przypadku wykorzystywania przez programistę tzw. efektów ubocznych, których stosowanie jednak przez literaturę przedmiotu nie jest zalecanie, a wręcz jest krytykowane i negatywnie oceniane.
W zakresie priorytetów operatorów można wyróżnić między innymi przypadki krańcowe:
- priorytet operatorów logicznych jest wyższy niż pozostałych operatorów,
- priorytet operatorów logicznych jest niższy niż pozostałych operatorów.
Jeżeli priorytet operatorów logicznych jest wyższy niż innych operatorów, wykonywane są przed nimi. Oznacza to, że w tym przypadku, aby prawidłowo zbudować warunek składający się z kilku badanych kryteriów połączonych odpowiednią funkcją logiczną, niezbędne jest ujęcie poszczególnych warunków łączonych operatorami logicznymi w nawiasy wymuszającymi określoną kolejność operacji. W przeciwnym razie wynik wyrażenie nie będzie zgodny z oczekiwaniami.
Przykład w języku Pascal[1] (operatory logiczne mają najwyższy priorytet):
{ warunek złożony z dwóch kryteriów, pominięcie nawiasów
zmieni sposób obliczeń: w pierwszej kolejności
wykonana by została operacja bitowa
na wyrażeniu 2 and c, co jest niezgodne z oczekiwaniami }
if (a<b*2) and (c+1>d-2) then
begin
{ instrukcje }
end;
W językach, w których operatory logiczne mają niższy priorytet niż pozostałe stosowanie nawiasów nie jest konieczne.
Przykład w języku C[4][5][6] (operatory logiczne mają niższy priorytet):
/* warunek złożony z dwóch kryteriów, pominięcie nawiasów
nie zmieni zgodnego z oczekiwaniami badania warunku złożonego */
if (a<b*2 && c+1>d-2)
{
/* instrukcje */
}
Remove ads
Operatory logiczne w językach programowania
Poniższe zestawienie zawiera dostępne operatory logiczne w wybranych językach komputerowych.
Remove ads
Przypisy
Bibliografia
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads