Математический факультет

Вид материалаДокументы

Содержание


Логические типы
Подобный материал:
1   2   3   4   5   6   7   8

Логические типы


В Object Pascal данные логического (булева) типа могут принимать одно из двух значений: true (истина) или false (ложь). Логические типы, определённые в Object Pascal:


Тип

Размер (в байтах)

Boolean

1

ByteBool

1

WordBool

2

LongBool

4

Основным логическим типом в Delphi 5 является Boolean. Остальные типы нужны для совместимости с логическими данными, используемыми в Windows и некоторых других системах программирования, например Visual C.

В логических выражениях можно использовать логические операции: not (отрицание), and (логическое И ), or (логическое ИЛИ), xor (логическое исключающее ИЛИ). Результат применения этих операций к операндам логического типа представлен в следующей таблице.


X

Y

X and Y

X or Y

X xor Y

Not X

false

false

false

false

false

true

false

true

false

true

true

true

true

false

false

true

true

false

true

true

true

true

false

false

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

Рассмотрим пример. Определить значение выражения:

(-3>=5) or not (7<9) and (0<=3)

Сначала выполняются операции в скобках слева направо:

(false) or not (true) and (true)

Затем not, and, or:

false or false and true  false or false  false

Таким образом, значение данного выражения – false.

Логические поразрядные операции предназначены для поразрядной обработки целочисленных операндов, представленных в двоичном виде. Такими операциями являются поразрядные отрицание (not), и (and), или (or), исключающее или (xor), а также поразрядные сдвиг влево (shl) и сдвиг вправо (shr). Расмотрим пример. Пусть переменные a и b типа byte имеют значения 3 и 5 соответственно. В двоичном представлении эти числа будут иметь вид : 00000011 и 00000101. Вычислим a xor b. Операция xor будет применяться поразрядно, т.е. к каждой паре чисел, стоящих в одинаковых позициях. Результат можно определить при помощи приведённой выше таблицы, если мысленно заменить 0 словом false, а 1 – словом true. Получим 00000110 = 6 (10). Операции shl и shr сдвигают значение переменной влево или вправо на указанное количество битов (например a shl 1 – сдвиг влево на 1 бит). При этом начальные или конечные биты теряются, а вновь появившиеся биты содержат нулевые значения. Это эквивалентно умножению на 2 в степени, равной количеству разрядов смещения.

Пример 4. Присвоить логической переменной t значение следующего логического выражения: натуральное число n при умножении на 6 заканчивается на 2, а при умножении на 7 заканчивается на 4.

var t : boolean; n : integer;

begin

readln(n);

t:=(n*6 mod 10=2) and (n*7 mod 10=4) ;

writeln(t);

readln

end.

Если ввести, например, число 32, то ответ получится true, а если ввести число 17, то получится false.


Задачи.

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

16. Целое число x чётно и отрицательно.

17. Хотя бы одно из трёх целых чисел x, y, z равно 0.

18. Из двух целых чисел только одно кратно 3.

19. Сумма двух первых цифр четырёхзначного целого числа x равна сумме двух его последних цифр.

20. Цифра 5 входит в десятичную запись целого трёхзначного числа x.

21. Вещественное число x принадлежит отрезку [2, 5].

22. Среди цифр целого трёхзначного числа x есть одинаковые.

23. Четырёхзначное целое число n является палиндромом.

24*. Среди первых трёх цифр из дробной части заданного положительного вещественного числа х есть цифра 0.