Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТП-ПОСОБИЕ_БАК.doc
Скачиваний:
34
Добавлен:
11.03.2015
Размер:
2.21 Mб
Скачать

Операция отрицания

a

not a

false

true

true

false

Таблица 9.3

Операции конъюнкция, дизъюнкция, «исключающее» или

a

b

a and b

a or b

a xor b

true

true

true

true

false

true

false

false

true

true

false

true

false

true

true

false

false

false

false

false

Пример9.3: приx=0 иy=4 выражение: (x=0)and(y=0) имеет значениеfalse.

Фрагмент программы:

var i: integer;r: boolean;begini: = 10 div 5;r: = I = 2;

В результате выполнения этого фрагмента программы переменной r присваивается значение true.

Таблица 9.4

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

Приоритет и описание

Операции в Паскале

Вычисления в круглых скобках

( )

Вычисление значений функций

Функции

Отрицание и получение адреса объекта

not , @, –

Умножение, деление, логическое умножение, сдвиги операндов

*, /, div, mod, and, shl, shr

Сложение, вычитание, логическое сложение, исключающее или

+,–, or, xor

Простые булевы операции, принадлежность к множеству

=,<>,<,>,<=,>=, in

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

1. Унарная операция not, унарный минус –, взятие адреса @. Например,

not Done  { отрицание булевской переменной }@Х        { указатель на переменную }–15       { константа со знаком }

2. Операции типа умножения: *, /, div, mod, and, shl, shr. Например,

x * yz / (1 – z)i mod j = i – (i div j) * j

3. Операции типа сложения: +, –, or, xor. Например,

done or error(x+y+z) 

4. Операции отношения: =, <>, <, >, <= ,> =, in. Например,

(x <= y) and (y < z)

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

sin(x/2)           {вызов функции}['0..'9','А'..'Z'] {описатель множества}сhar(digit+48)     {назначение типа}

9.6. Константы

Тип констант в языке Паскаль определяется по их виду: константы целого типа – это целые числа, не содержащие десятичной точки, константы действительного типа – действительные числа, логические константы – логические значения TRUE и FALSE, символьные константы – либо строки длиной в один символ, либо конструкции вида #K или ^K.

Описание констант [3,4]:

Рис. 9.1. Синтаксическая диаграмма описания констант

Являясьрасширением стандартного Паскаля, Турбо Паскаль позволяет использовать выражения–константы. Выражение–константа представляет собой выражение, которое может вычисляться компилятором без необходимости выполнения программы. Приведем примеры выражений–констант:

256  1(2.5 + 1) / (2.5  1)'Borland' + ' ' + 'Pascal'Chr(32)Ord('Z')  Ord('A') + 1

Простейшийслучай выражения–константы представляет собой простая константа, например 100 или 'A'. В стандартном Паскале допускается использовать только простые константы. В Турбо Паскале разрешено использование выраженийконстант.

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

  • ссылки на переменные и типизированные константы (кроме констант в адресных выражениях);

  • вызовы функций (кроме тех, которые отмечены далее);

  • оператор получения адреса @ (кроме констант в адресных выражениях).

За исключением этих ограничений для выраженийконстант соблюдаются те же синтаксические правила, что и для обычных выражений.

В выражениях константах допускается использовать следующие стандартные функции: abs, chr, hi, high, length, lo, low, odd, ord, pred, ptr, round, sizeof, succ, swap, trunc.

Приведемнекоторые примеры использования выражений–констант в описаниях констант:

constmin = 0;max = 100;center = (maxmin) div 2;beta = chr(255);numchars = ord('Z ') – ord('A') + 1;message = 'Out of memory';errstr = 'Error:' + Message + '.';errpos = 80 – length(errstr) div 2;errattr = blink + red * 16 + white;ln10 = 2.302585092994095684;ln10R = 1 / ln10;numeric = ['0'..'9'];alpha = ['A'..'Z','a'..'z'];alphanum = alpha + numeric;