Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 2.doc
Скачиваний:
3
Добавлен:
10.11.2019
Размер:
237.57 Кб
Скачать

1.8.6. Операции

Вот список всех допустимых операций в Object Pascal:

@, not, ^, *, /, div, mod, and, shl, shr, as, +, –, or, xor, =, >, <, <>, <=, >=, in, is

Операторы @, not и ^ - унарные.

1.8.6.1. Арифметические операции

Оператор

Операция

Тип операндов

Тип результата

Пример

+

Сложение

integer, real

integer, real

X + Y

Вычитание

integer, real

integer, real

Result-1

*

Умножение

integer, real

integer, real

P* InterestRate

/

Деление

integer, real

Real

X / 2

Div

Целочисленное деление

integer

integer

13 div 4 = 3

Mod

Остаток от делениия

integer

integer

13 mod 4 = 1

+ унарн

Знак

Integer, real

integer, real

+7

– унарн

Знак

Integer, real

integer, real

-X

shl

сдвиг налево

integer

Integer

7 shl 2 = 00000111 shl 2 = 00011100 = 28

shr

сдвиг направо

integer

integer

12 shr 1 = 00001100 shr 1 = 00000110 = 6

not

Инверсия битов

Integer

integer

not 128 =

not 10000000 = 01111111 = 127

Таблица 1.1. Бинарные операции

A

0101

B

0011

A and B

0001

A or B

0111

A xor B

0110

Примеры:

00000111

and

00000011

3=00000011

00000111

or

00000011

7=00000111

00000111

xor

00000011

4=00000100

1.8.6.2. Логические операции

Логические оператороы not, and, or и xor работают с логическими опреандами (false..true) и возвращают значения логического типа.

Оператор

операция

Тип операндов

Тип результата

Пример

not

Отрицание

Boolean

Boolean

not (C in MySet)

and

Конъюнкция

Boolean

Boolean

Done and (x > 0)

or

Дизъюнкция

Boolean

Boolean

A or B

xor

Исключающее «или»

Boolean

Boolean

A xor B

Таблица 1.2. Истинность логических операций

A

false

true

False

true

B

false

False

True

true

A and B

false

False

False

True

A or B

False

True

True

true

A xor B

false

True

true

False

Таблица 1.3. Возможные операции между атомарными предикатами.

А

В

0101

0011

Названия операций

Речевая конструкция

A,B: FALSE

0000

для A,В - ложно

AВ

0001

конъюнкция, и

A и В

Не A  В

0010

не A и В

В

0011

В для любых A

Не (АВ)

0100

неверно, что AВ

А

0101

A для любых В

Не (АВ)

0110

исключающее или

не верно, что AВ

AВ

0111

дизъюнкция, или

A или В

не А  не В

1000

стрелка Пирса

не A и не В

AВ

1001

Эквивалентность

A эквивалентно В

не А

1010

для любых В не A

AВ

1011

импликация, влечет

из A следует В

Не В

1100

для любых A не В

А не В

1101

A или не В

не А  не B

1110

штрих Шеффера

не A или не В

A,B: TRUE

1111

для A,В - истино

while (I <= Length(S)) and (S[I] <> ',') do

begin

...

Inc(I);

end;

repeat

...

until not ((I <= Length(S)) and (S[I] <> ','));

Для операций and и or полезны правила Моргана:

not (A and B) = (not A) or (not B)

not (A or B) = (not A) and (not B)