Pascal - operatory
Operator to symbol, który mówi kompilatorowi, aby wykonał określone operacje matematyczne lub logiczne. Pascal dopuszcza następujące typy operatorów -
- Operatory arytmetyczne
- Operatorzy relacyjni
- Operatory boolowskie
- Operatory bitowe
- Ustaw operatory
- Operatory łańcuchowe
Omówmy kolejno operatory arytmetyczne, relacyjne, boolowskie i bitowe. Później omówimy operatory zbiorów i operacje na łańcuchach.
Operatory arytmetyczne
Poniższa tabela przedstawia wszystkie operatory arytmetyczne obsługiwane przez Pascala. Przyjmij zmiennąA posiada 10 i zmienną B mieści 20, a następnie -
Pokaż przykłady
Operator | Opis | Przykład |
---|---|---|
+ | Dodaje dwa operandy | A + B da 30 |
- | Odejmuje drugi operand od pierwszego | A - B da -10 |
* | Mnoży oba operandy | A * B da 200 |
/ | Dzieli licznik przez mianownik | B / A da 2 |
% | Operator modułu i reszta po dzieleniu całkowitoliczbowym | B% A da 0 |
Operatorzy relacyjni
Poniższa tabela przedstawia wszystkie operatory relacyjne obsługiwane przez Pascala. Przyjmij zmiennąA posiada 10 i zmienną B mieści 20, a następnie -
Pokaż przykłady
Operator | Opis | Przykład |
---|---|---|
= | Sprawdza, czy wartości dwóch operandów są równe, czy nie, jeśli tak, warunek staje się prawdziwy. | (A = B) nie jest prawdą. |
<> | Sprawdza, czy wartości dwóch operandów są równe, czy nie, jeśli wartości nie są równe, warunek staje się prawdziwy. | (A <> B) jest prawdą. |
> | Sprawdza, czy wartość lewego operandu jest większa niż wartość prawego operandu, jeśli tak, warunek staje się prawdziwy. | (A> B) nie jest prawdą. |
< | Sprawdza, czy wartość lewego operandu jest mniejsza niż wartość prawego operandu, jeśli tak, warunek staje się prawdziwy. | (A <B) jest prawdą. |
> = | Sprawdza, czy wartość lewego operandu jest większa lub równa wartości prawego operandu, jeśli tak, warunek staje się prawdziwy. | (A> = B) nie jest prawdą. |
<= | Sprawdza, czy wartość lewego operandu jest mniejsza lub równa wartości prawego operandu, jeśli tak, warunek staje się prawdziwy. | (A <= B) jest prawdą. |
Operatory boolowskie
Poniższa tabela przedstawia wszystkie operatory boolowskie obsługiwane przez język Pascal. Wszystkie te operatory działają na operandach boolowskich i dają wyniki boolowskie. Przyjmij zmiennąA jest prawdziwe i zmienne B ma fałsz, więc -
Pokaż przykłady
Operator | Opis | Przykład |
---|---|---|
i | Nazywany operatorem logicznym AND. Jeśli oba operandy są prawdziwe, warunek staje się prawdziwy. | (A i B) jest fałszem. |
i wtedy | Jest podobny do operatora AND, jednak gwarantuje kolejność, w jakiej kompilator ocenia wyrażenie logiczne. Operandy od lewej do prawej i po prawej są oceniane tylko wtedy, gdy jest to konieczne. | (A, a następnie B) jest fałszem. |
lub | Nazywany operatorem logicznym OR. Jeśli którykolwiek z dwóch operandów jest prawdziwy, warunek staje się prawdziwy. | (A lub B) jest prawdą. |
albo | Jest podobny do logicznego OR, jednak gwarantuje kolejność, w jakiej kompilator ocenia wyrażenie logiczne. Operandy od lewej do prawej i po prawej są oceniane tylko wtedy, gdy jest to konieczne. | (A lub B) jest prawdą. |
nie | Nazywany operatorem Boolean NOT. Służy do odwracania stanu logicznego argumentu. Jeśli warunek jest prawdziwy, wówczas operator logiczny NOT sprawi, że będzie fałszywy. | nie (A i B) jest prawdą. |
Operatory bitowe
Operatory bitowe pracują na bitach i wykonują operacje bit po bicie. Wszystkie te operatory działają na operandach całkowitych i dają wyniki w postaci liczb całkowitych. Tabela prawdy dla bitowych i (&), bitowych lub (|) i bitowych nie (~) jest następująca -
p | q | p & q | p | q | ~ p | ~ q |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 | 1 | 0 |
1 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 |
Załóżmy, że A = 60; i B = 13; teraz w formacie binarnym będą wyglądać następująco -
A = 0011 1100
B = 0000 1101
-----------------
A&B = 0000 1100
A ^ B = 0011 0001
~ A = 1100 0011
W poniższej tabeli wymieniono operatory bitowe obsługiwane przez Pascal. Załóżmy, że zmienna A zawiera 60, a zmienna B 13, a następnie:
Pokaż przykłady
Operator | Opis | Przykład |
---|---|---|
& | Operator binarny AND kopiuje trochę do wyniku, jeśli istnieje w obu operandach. | (A i B) da 12, czyli 0000 1100 |
| | Operator binarny OR kopiuje bit, jeśli istnieje w którymkolwiek operandzie. | (A | B) da 61, czyli 0011 1101 |
! | Operator binarny OR kopiuje bit, jeśli istnieje w którymkolwiek operandzie. To samo co | operator. | (A! B) da 61, czyli 0011 1101 |
~ | Operator dopełniacza binarnego jest jednoargumentowy i powoduje „odwracanie” bitów. | (~ A) da -61, czyli 1100 0011 w postaci uzupełnienia do 2 ze względu na liczbę binarną ze znakiem. |
<< | Binarny operator przesunięcia w lewo. Wartość lewego operandu jest przesuwana w lewo o liczbę bitów określoną przez prawy operand. | A << 2 da 240, czyli 1111 0000 |
>> | Binarny operator przesunięcia w prawo. Wartość lewego operandu jest przesuwana w prawo o liczbę bitów określoną przez prawy operand. | >> 2 da 15, czyli 0000 1111 |
Należy pamiętać, że różne implementacje Pascala różnią się operatorami bitowymi. Free Pascal, kompilator, którego tutaj użyliśmy, obsługuje jednak następujące operatory bitowe -
Operatorzy | Operacje |
---|---|
nie | Bitowe NIE |
i | Bitowe i |
lub | Bitowe OR |
xor | Wyłączne OR bitowe |
shl | Przesunięcie bitowe w lewo |
shr | Przesunięcie bitowe w prawo |
<< | Przesunięcie bitowe w lewo |
>> | Przesunięcie bitowe w prawo |
Pierwszeństwo operatorów w Pascalu
Pierwszeństwo operatorów określa grupowanie terminów w wyrażeniu. Ma to wpływ na sposób oceny wyrażenia. Niektórzy operatorzy mają wyższy priorytet niż inni; na przykład operator mnożenia ma wyższy priorytet niż operator dodawania.
Na przykład x = 7 + 3 * 2; tutaj x ma przypisane 13, a nie 20, ponieważ operator * ma wyższy priorytet niż +, więc najpierw jest mnożony przez 3 * 2, a następnie sumowany do 7.
Tutaj operatory o najwyższym priorytecie pojawiają się na górze tabeli, a operatory o najniższym priorytecie - na dole. W wyrażeniu najpierw zostaną ocenione operatory o wyższym priorytecie.
Pokaż przykłady
Operator | Precedens |
---|---|
~ nie, | Najwyższa |
*, /, div, mod i, & | |
|,!, +, - lub, | |
=, <>, <, <=,>,> =, in | |
albo jeszcze, a potem | Najniższa |