Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на языке Паскаль в среде Turbo Pascal версии 6 и 7 (Курс лекций). Воронов Г.И.Санкт-Петербург 2010г.doc
Скачиваний:
91
Добавлен:
15.04.2015
Размер:
754.69 Кб
Скачать

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

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

Таблица 7. Таблица истинности для основных двоичных логических функций

отрицание

конъюнкция

дизъюнкция

сложение по модулю 2

импликация

эквиваленция

штрих Шеффера

стрелка Пирса

P

Q

┐P

P ^Q

P V Q

P  Q

P->Q

P<->Q

P | Q

P ↓ Q

0

0

1

0

0

0

1

1

1

1

0

1

1

0

1

1

1

0

1

0

1

0

0

0

1

1

0

0

1

0

1

1

0

1

1

0

1

1

0

0

В Турбо Паскале всего имеется четыре логических операции, одна из них - унарная - not (отрицание), остальные - бинарные. Их названия:

and - "и" (логическое умножение, коньюнкция),

or - "или" (логическое сложение, дизьюнкция),

xor - "исключающее или" (сложение по модулю 2).

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

Таблица 8. Логические операции Турбо-Паскаля

P

Q

not Q

P and Q

P or Q

P xor Q

False

False

True

True

False

True

False

True

True

False

False

False

False

True

False

True

True

True

False

True

True

False

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

P and ( Q or not S) и not P or Q and S

При P=False первое выражение будет равно False, а второе - True независимо от значений Q и S, поэтому вычислять Q и S и действия с ними не имеет смысла. Обычно Турбо Паскаль использует укороченную схему, как более быструю, но возможно заказать и полный режим с помощью специальной директивы. Как и для унарного "-", знаку операции "not" может предшествовать знак бинарной операции (но не наоборот!) и знаки операций должны разделяться пробелами. Например:

P and not Q - правильно, P not and Q - неправильно.

Отношения

Операции отношений возможны для сравнимых величин, т.е. для однотипных простых данных и для некоторых составных данных (строк, множеств), для которых эти операции определены специальным образом. Любые однотипные данные можно сравнивать на тождественность ("равно", "не равно"), упорядоченные типы можно также сравнивать на относительное расположение ("меньше", "больше").

В качестве знаков операций отношений в Турбо Паскале используются:

= - равно;

<> - не равно;

< - меньше;

<= - меньше или равно;

> - больше;

>= - больше или равно.

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

2.1*sin(X)-0.5 >= Y+Z или J < N-1

Отметим, что в Турбо Паскале логический тип - частный случай перечисляемого типа со значениями False и True, поэтому эти значения - упорядочены, и можно написать, что False < True. Аналогично, упорядоченными являются символьные данные, и можно утверждать, что

'А' < 'Б' -> True; '1' < 'A' -> True; 'a' < 'A' -> False.

В качестве составной части, отношения могут входить в сложные логические выражения, например (при NoError и EndArray - логического типа):

((J < N-1) or (X>=1.0)) and NoError and not EndArray;