
- •Лекция 2
- •1.8. Операторы, выражения, операции
- •1.8.1. Исполняемые операторы
- •1.8.2. Оператор присваивания
- •1.8.3. Выражения
- •1.8.4. Арифметические функции
- •1.8.6. Операции
- •1.8.6.1. Арифметические операции
- •1.8.6.2. Логические операции
- •1.8.6.3. Операторы отношения
- •1.8.6.4. Операторы для строк (String)
- •2. Структура: программы, процедуры, функции, модуля
- •2.1. Структура программы
- •2.2. Структура функции
- •2.3. Структура процедуры
- •2.4. Структура модуля
- •Имя модуля и имя файла, в котором записан модуль должны совпадать.
- •2.5. Список параметров
- •2.5.1. Область видимости
- •2.5.2. Формальные и фактические параметры
- •2.5.3. Параметры-значения, параметры-переменные, нетипизированные параметры
- •3. Операторы
- •3.2. Оператор if
- •3.1. Оператор for
- •3.2. Оператор while
- •3.3. Оператор цикла repeat
- •3.4. Оператор выбора case
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)