Арифметические выражения

Арифметические операции выполняются над целыми и действительными числами. Результатом выполнения арифметического выражения является также целое или действительное число.

В языке Object Pascal определены арифметические операции над двумя операндами, которые приведены в табл. 3.1.

Таблица 3.1. Арифметические операции над двумя операндами

Знак операции

Операция

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

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

Пример

+

Сложение

Integer, real

Integer, real

X+Y

-

Вычитание

Integer, real

Integer, real

X-Y

*

Умножение

Integer, real

Integer, real

X*Y

/

Деление

Integer, real

Real

X/10

div

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

Integer

Integer

X div Y

mod

Целочисленный остаток от деления

Integer

Integer

X mod Y

Стоит сказать несколько слов по поводу операций div и mod. Результатом целочисленного деления X div Y будет результат деления X/Y, округленный в сторону нуля до ближайшего целого числа.

Результатом операции mod будет остаток от целочисленного деления операндов. Таким образом, выражение X mod Y эквивалентно выражению X - (X div Y) *Y. Например, результатом выражения 4 div 2 будет 0, а результатом выражения 9 div 4 будет 1.

В табл. 3.2 приведены операции, осуществляемые над одним операндом.

Таблица 3.2. Арифметические операции над одним операндом

Знак операции

Операция

Тип операнда

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

Пример

+

Сохранение знака числа

Integer, real

Integer, real

+7

-

Отрицание знака числа

Integer, real

Integer, real

-X

Приведем примеры использования арифметических операций с одним и двумя операндами (листинг 3.1).

Листинг 3.1. Примеры использования арифметических операций

var
а, b, с, d: Integer; // Объявляем четыре целочисленных переменных
begin
a:=7; b:=5; c:=-10; // Присваиваем трем из них начальные значения
d:=a+b; // Результатом будет число 12
d:=-d; // Результатом будет число -12
d:=d+c; // Результатом будет число -22
d:=d div с; // Результатом будет число 2
d:=a mod b; // Результатом будет число 2 end;

Кроме вышеперечисленных операций, над целочисленными данными можно производить поразрядные операции, представленные в табл. 3.3. Особенностью этих арифметических операций является то, что они выполняются побитно над операндами, переведенными в двоичную форму, Результат выдается в десятичной системе счисления.

Таблица 3.3. Поразрядные арифметические операции

Знак операции

Операция

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

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

Пример

not

Поразрядное отрицание

Integer

Integer

not X

and

Поразрядное умножение

Integer

Integer

X and Y

or

Поразрядное сложение

Integer

Integer

X or Y

xor

Поразрядное исключающее ИЛИ

Integer

Integer

X xor Y

shl

Поразрядный сдвиг числа влево

Integer

Integer

X shl 2

shr

Поразрядный сдвиг числа вправо

Integer

Integer

X shr 1

В табл. 3.4 показаны результаты выполнения поразрядных арифметических операций.

Таблица 3.4. Результаты выполнения поразрядных арифметических операций

Знак операции

Операция

Бит1

Бит 2

Результирующий бит

not

Поразрядное отрицание

0


1



1


0

and

Поразрядное умножение

0

0

0



0

1

0

Таблица 3.4 (окончание)

Знак операции

Операция

Бит1

Бит 2

Результирующий бит



1

0

0



1

1

1

or

Поразрядное сложение

0

0

0



0

1

1



1

0

1



1

1

1

хоr

Поразрядное исключающее ИЛИ

0

0

0



0

1

1



1

0

1



1

1

0

Приведем примеры использования побитовых арифметических операций (листинг 3.2).

Листинг 3.2. Примеры использования побитовых операций

var
a,b,с: Integer; // Объявляем три целочисленные переменные begin
а =175; b:=77; // Двум из них присваиваем начальные значения
с =not a; // Результатом будет число -176
с =а or b; // Результатом будет число 239
с =а and b; // Результатом будет число 13
с =а хоr b; // Результатом будет число 226
с =а shl 1; // Результатом будет число 350
с =b shr 1; // Результатом будет число 38 end;

Число 175 в двоичной системе выглядит так: 10101111. А число 77 так: 1001101. Операции производятся поразрядно справа налево, затем результат переводится в десятичную систему счисления.

Сдвиг на один разряд влево равносилен умножению числа на 2. Сдвиг на один разряд вправо равносилен делению числа нацело на 2 с отбрасыванием дробной части.

Кроме всего рассмотренного выше, язык Object Pascal имеет достаточно большое количество функций для работы с числовыми данными. Эти функции можно также использовать в арифметических выражениях. Среди прочих наиболее часто используются следующие функции:

Аргументами данных функций могут быть не только числа, но и переменные, константы, выражения.

Приведем пример вычисления выражения, в котором присутствуют арифметические функции:

a:=sqr( (152+b) /2*cos (3.14+b) +sqrt (23)) ;

Логические выражения

Логические выражения это выражения, в которых содержатся:

В результате выполнения логической операции получается логическое значение True или False. Логические операции, доступные в языке Object Pascal, представлены в табл. 3.5.

Таблица 3.5. Логические операции языка Object Pascal

Знак операции

Операция

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

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

Пример

not

Отрицание

Boolean

Boolean

not (С in MySet)

Таблица 3.5 (окончание)

Знак операции

Операция

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

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

Пример

and

Конъюнкция (логическое И)

Boolean

Boolean

A and В

or

Дизъюнкция (логическое ИЛИ)

Boolean

Boolean

A or В

xor

Исключающая дизъюнкция (исключающее ИЛИ)

Boolean

Boolean

A xor В

Как видно из примеров табл. 3.5, логические операции and, or и xor являются операциями над двумя операндами, а операции not — над одним операндом. В следующей таблице (табл. 3.6) приведены результаты выполнения логических операций.

Таблица 3.6. Результаты выполнения логических операций

Знак операции

Операция

Операнд 1

Операнд 2

Результат

not

Отрицание

False


True



True


False

and

Конъюнкция (логическое И)

False

False

False



False

True

False



True

False

False



True

True

True

or

Дизъюнкция (логическое ИЛИ)

False

False

False



False

True

True



True

False

True



True

True

True

xor

Исключающая дизъюнкция (исключающее ИЛИ)

False

False

False



False

True

True



True

False

True



True

True

False

Для установки отношений между двумя значениями вы можете использовать операции отношения или сравнения. В языке Object Pascal имеется шесть операций отношения:

Если операция отношения истинна, то результатом ее выполнения является значение True, например истинным является выражение 4 < 10; в противном случае — результат False, например 12 <> 12.

Рассмотрим теперь такой немаловажный вопрос: в каком порядке выполняются те или иные операции? Если в сложном выражении записаны несколько операций подряд, то последовательность их выполнения определяется старшинством. Для того чтобы был четкий порядок выполнения операции, в языке Object Pascal существует такое понятие, как приоритет.

Приоритет определяет старшинство операций и служит для установления порядка выполнения операций. Операции с более высоким уровнем приоритета выполняются раньше остальных.

По приоритету все операции делятся на четыре уровня:

Если подряд идут несколько операций с одинаковым приоритетом, то операции выполняются слева направо.

Строковые выражения

Строковые выражения содержат строковые операции и функции. Для строк в Object Pascal определена одна операция — операция объединения строк (конкатенации строк). Знаком операции конкатенации является +. Операндами для этой операции могут быть строки, упакованные строки, а также символы. В то же время, если один из операндов имеет тип WideChar, другой операнд должен быть длинной строкой. Результат операции объединения строк — строка символов. Этот результат совместим со всеми строковыми типами языка. В то же время, если количество символов после операции объединения строк превысит 255, то результатом станут первые 255 символов, а оставшиеся будут просто отброшены.

Для строк определены также следующие функции:

Кроме перечисленных выше функций существует несколько дополнительных функций для преобразования одних типов данных в другие:

Приведем примеры строковых выражений:

Hosted by uCoz