Выражения

Выражение – синтаксическая единица языка, определяющая способ определения значения. Константное выражение – выражение из констант, вычисляется на стадии компиляции. В выражениях применяются:

  • переменные,
  • константы,
  • функции,
  • символы операций.

Применяемые далее термины:

В этой книге Синонимы
Символ операции Оператор
Оператор Инструкция
Базовый тип Целевой тип

В выражении операнды объединяются символами операций. В качестве операнда может использоваться и простое выражение. Например, в выражении (2+3)*(4+5) использованы два простых выражения, заключенных в скобки.

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

Определены унарные и бинарные операции. Унарные – это присвоение знака числа, – или +. Бинарные – это операции с двумя операндами. Определены бинарные операции:

Знаки операций Операнды
Символьные
+
-
*
/
Сложение
Вычитание
Умножение
Деление
Целые или вещественные числа
Буквенные
div
mod
Целочисленное деление

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

Целые числа

В действительности операция Mod выполняется по формуле:

I mod J=I-(I div J)*J.

Примеры использования буквенных операций.

7 div 2 = 3

7 mod 2 = 1

Строковые операции

Конкатенация. Осуществляется сцепление строк. Обозначается знаком +.

Пример: Str3:=Str1+Str2;

Если длина результирующей строки превышает максимально возможное значение, то не поместившиеся символы отбрасываются. Сообщения об ошибке нет. Пример. При Str1=’1234’ и Str2=’5678’ получим Str3=’12345678’.

Операции сравнения

Применяются для сравнения двух операндов. Результат всегда типа boolean. Формат употребления:

Op1 <операция сравнения> Op2

Op1, Op2 – операнды. Определены операции:

Операция Действие Примечание
= Равно
<> Не равно Менять символы местами и вставлять между ними разделители нельзя.
> Больше чем
< Меньше чем
>= Больше чем или равно Менять символы местами и вставлять между ними разделители нельзя.
<= Меньше чем или равно Менять символы местами и вставлять между ними разделители нельзя.

Операнды могут иметь типы:

  • Совместимые, возможны операции 1..6.
  • Указатели, возможны операции 1 и 2.
  • Строки, возможны операции 1..6.
  • Множества, возможны операции 1, 5, 6.

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

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

Символ операции Перевод
not отрицание (“НЕ”)
or логическое сложение (“ИЛИ”)
and логическое умножение (“И”)
xor сложение по модулю 2 (“исключающее ИЛИ”)
shl логический сдвиг влево
shr логический сдвиг вправо

Операция not – отрицание (“НЕ”)

Символ операции – английское слово not (не).

Операция Примечание
not(true)=false Для логических типов
not(236)=19

236 = 11101100
00010011 = 19

Для целых чисел без знака.

Операция or – логическое сложение (“ИЛИ”)

Символ операции – английское слово or (или).

Операция Примечание
A B C = A or B Для логических типов
False False False
False True True
True False True
True True True
145 or 25 = 153

145=1*128+0*64+0*32+1*16+0*8+0*4+0*2+1*1      =10010001
25  =0*128+0*64+0*32+1*16+1*8+0*4+0*2+1*1 =00011001

=
153=1*128+0*64+0*32+1*16+1*8+0*4+0*2+1*1      =10011001

Для целых чисел без знака.

Операция and – логическое умножение (“И”)

Символ операции – английское слово and (и).

Операция Примечание
A B C = A and B Для логических типов
False False False
False True False
True False False
True True True
145 and 25 = 17

145=1*128+0*64+0*32+1*16+0*8+0*4+0*2+1*1            =10010001
25  =0*128+0*64+0*32+1*16+1*8+0*4+0*2+1*1 =00011001

=
17=0*128+0*64+0*32+1*16+0*8+0*4+0*2+1*1  =00010001

Для целых чисел без знака.

Операция xor – исключающее “ИЛИ”

Символ операции – от английских слов exclusive or (исключающее или), exclusive or => xor. Операции выполняется по таким же правилам, что операции or с одним исключением. Это и определило имя операции. Часто для этой операции употребляется синоним – сложение по модулю 2. Причина этого – при сложении двоичных чисел бит результата без учета переноса из младшего разряда получается по правилам операции xor.

Операция Примечание
A B C = A xor B Для логических типов
False False False
False True True
True False True
True True False
145 xor 25 = 136

145=1*128+0*64+0*32+1*16+0*8+0*4+0*2+1*1            =10010001
25  =0*128+0*64+0*32+1*16+1*8+0*4+0*2+1*1 =00011001

=
136=1*128+0*64+0*32+0*16+1*8+0*4+0*2+0*1            =10001000

Для целых чисел без знака.

Операция shl – логический сдвиг влево

Символ операции – сокращение от английских слов shift left (сдвиг влево). shift left => shl. Формат употребления:

<Операнд> shl(<размер сдвига>)

При выполнении операции со стороны младшего разряда вдвигаются биты 0, число которых равно параметру <размер сдвига>.
Все биты перемещаются влево. Левые биты выдвигаются из поля числа и теряются.

Операция Примечание
145 shl(2) = 68

145=1*128+0*64+0*32+1*16+0*8+0*4+0*2+1*1=10010001

=                                                                  1001000100 <=00
68=0*128+1*64+0*32+0*16+0*8+1*4+0*2+0*1=01000100

Для целых чисел без знака.

На практике операция логического сдвига влево применяется для умножения целых чисел без знака на 2 в целой степени. Размер сдвига = степени 2. Например, при умножении на 8 размер сдвига = 3.

Операция shr – логический сдвиг вправо

Символ операции – сокращение от английских слов shift right (сдвиг вправо). shift right => shr. Формат употребления:

<Операнд> shr(<размер сдвига>)

При выполнении операции со стороны старшего разряда вдвигаются биты 0, число которых равно параметру <размер сдвига>.
Все биты перемещаются вправо. Правые биты выдвигаются из поля числа и теряются.

Операция Примечание
145 shr(3) = 18

145=1*128+0*64+0*32+1*16+0*8+0*4+0*2+1*1=10010001

=                                                              000>  00010010001
18=0*128+0*64+0*32+1*16+0*8+0*4+1*2+0*1=00010010

Для целых чисел без знака.

На практике операция логического сдвига вправо применяется для деления целых чисел без знака на 2 в целой степени. Размер сдвига равен степени 2. Например, при делении на 8 размер сдвига = 3.

Операции над указателями

Определены операции:

Операция Действие Примечание
+ Сложение Один операнд может быть целым числом
- Вычитание Результат не может быть отрицательным
= Равенство при сравнении Результат Булевый
<> Неравенство при сравнении
^ Разыименовывание Получить данные из динамической памяти, на которые ссылается указатель. Знак ставится после имени указателя.
@ Получить адрес объекта ссылки Пример A:=@(B) Возвращается адрес области памяти, начиная с которого размещено значение аргумента

Операции над множествами

Основные операции

В примерах, приведенных ниже, результаты получены с использованием множеств M1, M2, M3 и констант A, B, C.

  • M1 = [1, 2, 3, 6, 9]
  • M2 = [1, 3, 8]
  • M3 = [1, 2, 3]
  • A=2, B=7, C=9
Операция Пример Результат
+ Объединение M4:=M1+M2; Множество из элементов M1, M2.
M4 = [1, 2, 3, 6, 8, 9]
- Вычитание M5:=M1-M2; Множество из элементов первого, которых нет во втором.

M5 = [2, 6, 9]

* Пересечение M6:=M1*M2; Множество из общих элементов.

M6= [1, 3]

< Подмножество B1:=M1<M3; True, если M1 – подмножество M3.

B1 = False.

> Надмножество B2:=M >M3; True, если M1 – надмножество M3.

B2 = True.

<= Подмножество B1:=M1<=M3; True, если M1 – подмножество M3 или совпадает с M3.

B1 = False.

>= Надмножество B2:=M =>M3; True, если M1 – надмножество M3 или совпадает с M3.

B2 = True.

= Равенство B3:=M1=M2; True, если M1 идентично M2.

B3 = False.

<> Неравенство B4:=M1<>M2; True, если M1 не идентично M2.

B4 = True.

in Принадлежность к множеству B5:= A in M2; True, если A имеется в M2.
B5 = False.

Процедуры для множеств

Процедура Пример Результат
Include Добавить элемент Include(M3, B) Добавить элемент B в множество M3.
M3 = [1, 2, 3, 7]
Exclude Удалить элемент Exclude(M1, C) Удалить элемент С из множества M1.
M1 = [1, 2, 3, 7]

Операции над классами

Операция Назначение
as Сравнение классов
is Проверка типа класса

Приоритеты операций

В выражениях операции выполняются с соблюдением установленных приоритетов. Старшим является приоритет 1. Операции с одинаковым приоритетом выполняются слева направо.  Чтобы изменить приоритеты, нужно использовать круглые скобки.

Список операций Примечания
Вычисления в ( ) Сначала в самых внутренних
Функции
Not      @        +          - Унарные операции
*          /           div       mod     and

shl        shr       as

Операции типа умножения
+          -          or         xor Операции типа сложения
=          <>       <          >          <=

>=       in         is

Операции типа сравнения
Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong

Copyright © 2009-2010 Программирование на паскале.