Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_лекции.doc
Скачиваний:
45
Добавлен:
25.11.2018
Размер:
5.13 Mб
Скачать

9.1. Целая и вещественная арифметика

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

Таблица 9.1.

Алгебраические операторы

Оператор

Действие

+

Сложение

-

Вычитание

*

Умножение

/

Деление

DIV

Деление нацело

MOD

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

При записи выражений между операндом и оператором, за исключением операторов DIV и MOD, пробел можно не ставить.

Результат применения операторов +, -, * и / очевиден.

Оператор DIV позволяет получить целую часть результата деления одного числа на другое. Например, значение выражения 15 DIV 7 равно 2.

Оператор MOD, деление по модулю, позволяет получить остаток от деления одного числа на другое. Например, значение выражения 15 MOD 7 равно 1.

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

Примеры выражений:

1230.001* i+1

А + В/С Summa*0.75 (В1+ВЗ+ВЗ)/3

Cena MOD 100

Тип выражения определяется типом операндов, входящих в выражение, и зависит от операций, выполняемых над ними. Например, если оба операнда, над которыми выполняется операция сложения, целые, то очевидно, что результат тоже является целым. А если хотя бы один из операндов дробный, то тип результата дробный, даже в том случае, если дробная часть значения выражения равна нулю.

Важно уметь определять тип выражения. При определении типа выражения следует иметь в виду, что тип константы определяется ее видом, а тип переменной задается в инструкции объявления. Например, константы 0, 1 и -512 — целого типа (integer), а константы 1.0, 0.0 и 3.2Е-05 — вещественного типа (real).

Любые операции с вещественными числами выполняются с некоторой погрешностью.

В таблице 9.2. приведены правила определения типа выражения в зависимости от типа операндов и вида оператора.

Таблица 9.2

Правила определения типа выражения

Оператор

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

Тип выражения

*, +, -

Хотя бы один из операндов вещественного типа

Вещественный тип

*, +, -

Оба операнда целого типа

Целый тип

/

Вещественный или целый тип

Всегда вещественный тип

DIV, MOD

Всегда целый тип

Всегда целый тип

Правила использования операций с операндами различного типа приводятся в табл.9.3.

Таблица 9.3.

Правила использования операций с операндами различного типа

Операция

Действие

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

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

not

Отрицание

Логический

Логический

not

Отрицание

Любой целый

Тип операнда

@

Адрес

Любой

Указатель

*

Умножение

Любой целый

Наименьший целый

*

Умножение

Любой вещественный

Extended

*

Пересечение множеств

Множественный

Множественный

/

Деление

Любой вещественный

Extended

div

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

Любой целый

Наименьший целый

mod

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

Любой целый

Наименьший целый

and

Логическое И

Логический

Логический

and

Логическое И

Любой целый

Наименьший целый

shl

Левый сдвиг

Любой целый

Наименьший целый

shr

Правый сдвиг

Любой целый

Наименьший целый

+

Сложение

Любой целый

Наименьший целый

+

Сложение

Любой вещественный

Extended

+

Объединение множеств

Множественный

Множественный

+

Сцепление строк

Строковый

Строковый

-

Вычитание

Любой целый

Наименьший целый

-

Вычитание

Любой вещественный

Extended

or

Логическое или

Логический

Логический

or

Логическое или

Любой целый

Наименьший целый

=

Равно

Любой простой или строковый

Логический

<>

Не равно

Любой простой или строковый

Логический

<

Меньше

Любой простой или строковый

Логический

<=

Меньше или равно

Любой простой или строковый

Логический

>

Больше

Любой простой или строковый

Логический

>=

Больше или равно

Любой простой или строковый

Логический

Унарная операция @ применяется к операнду любого типа и возвращает результат типа pointer, в котором содержится адрес операнда. Если операция @ применяется к процедуре, функции или методу в объекте, ее результатом будет адрес точки входа в эту процедуру (функцию, метод). Этот адрес можно использовать только в подпрограмме, написанной на Ассемблере, или во фрагментах INLINE.

В Object Pascal определены следующие логические операции:

  • not - логическое НЕ;

  • and - логическое И;

  • or - логическое ИЛИ;

  • xor - исключительное ИЛИ.

Логические операции применимы к операндам целого и логического типов. Если операнды - целые числа, то результат логической операции есть тоже целое число, биты которого (двоичные разряды) формируются из битов операндов по правилам, указанным в табл.9.4.

Таблица 9.4

Правила формирования

Логичеcкие операции над данными целого типа (поразрядно)

Операнд 1

Операнд 2

not

and

or

xor

1

-

0

-

-

-

0

-

1

-

-

-

0

0

-

0

0

0

0

1

-

0

1

1

1

0

-

0

1

1

1

1

-

1

1

0

К логическим же в Object Pascal обычно относятся и две сдвиговые операции над целыми числами:

  • i shl j - сдвиг содержимого i на j разрядов влево; освободившиеся младшие разряды заполняются нулями;

  • i shr j - сдвиг содержимого i на j разрядов вправо; освободившиеся старшие разряды заполняются нулями.

В этих операциях i и j - выражения любого целого типа.

Логические операции над логическими данными дают результат логического типа по правилам, указанным в Табл.9.5.

Таблица 9.5

Правила проведения логических операций

Логические операции над данными логического типа

Операнд 1

Операнд 2

not

and

or

xor

True

-

False

-

-

-

False

-

True

-

-

-

False

False

-

False

False

False

False

True

-

False

True

True

True

False

-

False

True

True

True

True

-

True

True

False

Операция отношения in применяется к двум операндам. Первым (левым) операндом должно быть выражение любого порядкового типа, вторым - множество, состоящее из элементов того же типа, или идентификатор множественного типа. Результат операции будет True, если левый операнд принадлежит множеству.