Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРЕДСТВА ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ.doc
Скачиваний:
13
Добавлен:
02.05.2019
Размер:
2.13 Mб
Скачать

6.4. Выражения

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

Частным случаем выражения может быть просто одиночный элемент, т. е. константа, переменная или обращение к функции. Значение такого выражения имеет, естественно, тот же тип, что и сам элемент. В более общем случае выражение состоит из нескольких элементов (операндов) и знаков операций, а тип его значения определяется типом операндов и видом примененных к ним операций.

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

у

21 (а + b) * с

sin(t)

а > 2

not Flag and (a = b)

NIL

[1, 3..7] * setl

6.5. Операции

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

унарные not, @ ;

мультипликативные *, /, div, mod, and, shi, shr;

аддитивные +, -, or, xor;

отношения =, <>, <, >, <=, >=, in.

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

Delphi переключателя Project | Options | Compiler | Complete

Boolean eval: при установленном переключателе вычисляются все операции отношения, при неустановленном - только те, что необходимы для однозначного определения результата исчисления.

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

Таблица 6.1

Операция

Действие

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

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

not

Отрицание

Логический

Логический

not

To же

Любой целый

Тип операнда

@

Адрес

Любой

Указатель

*

Умножение

Любой целый

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

*

Тоже

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

Extended

*

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

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

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

/

Деление

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

Extended

div

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

Любой целый

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

mod

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

Тоже

- Тоже

and

Логическое И

Логический

Логический

and

То же

Любой целый

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

shl

Левый сдвиг

Тоже

То же

shr

Правый сдвиг

То же

То же

+

Сложение

Тоже

Тоже

+

Тоже

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

Extended

+

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

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

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

+

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

Строковый

Строковый

-

Вычитание

Любой целый

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

-

Тоже

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

Extenden

or

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

Логический

Логический

or

Тоже

Любой целый

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

=

Равно

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

Логический

0

Не равно

Тоже

Тоже

<

Меньше

Логический

Логический

<=

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

Тоже

Тоже

>

Больше

То же

Тоже

>=

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

Тоже

Тоже

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

INLINE.

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

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

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

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

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

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

Таблица 6.2

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

Операнд 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 - сдвиг содержимого / на j разрядов влево; освободившиеся младшие разряды заполняются нулями;

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

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

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

Таблица 6.3

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

Операнд 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, если левый операнд принадлежит множеству.

  • Лекция 7. ТИПЫ ДАННЫХ

    • ПРОСТЫЕ ТИПЫ

      • Порядковые типы

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

      • Тип дата-время

    • СТРУКТУРИРОВАННЫЕ ТИПЫ

      • Массивы

      • Записи

      • Множества

    • СТРОКИ

      • Типы String и ShortString

      • Нуль-терминальные строки

    • УКАЗАТЕЛИ И ДИНАМИЧЕСКАЯ ПАМЯТЬ

      • Динамическая память

      • Указатели

      • Выделение и освобождение динамической памяти

      • Процедуры и функции для работы с динамической памятью

    • ПСЕВДОНИМЫ ТИПОВ

Любые данные, т. е. константы, переменные, свойства, значения функций или выражения, в Object Pascal характеризуются своими типами. Тип определяет множество допустимых значений, которые может иметь тот или иной объект, а также множество допустимых операций, которые применимы к нему. Кроме того, тип определяет также и формат внутреннего представления данных в памяти ПК.

Object Pascal характеризуется разветвленной структурой типов данных (рис. 7.1). В языке предусмотрен механизм создания новых типов, благодаря чему общее количество используемых в программе типов может быть сколь угодно большим.

В этой и четырех последующих лекциях приводится подробное описание всех типов.