Логический тип основан на правилах Булевой алгебры, широко используемой в цифровой электронике. Этот тип определяет всего два значения True (истина) и False (ложь), которые и являются константами. Описывается этот тип словом Boolean, определенным как
Type Boolean = (False,True);
Над значениями логического типа определены следующие операции:
NOT – «НЕ», логическое отрицание или инверсия, в отличие от остальных выполняется над одним операндом (унарная операция);
OR – «ИЛИ», логическое сложение или дизъюнкция;
AND – «И», логическое умножение или конъюнкция;
XOR – «исключающее ИЛИ», сложение по модулю 2 (в стандартном Паскале отсутствует).
Пусть А и В – логические значения, тогда результат операций будет определяться по табл. 3.3:
Таблица 3.3. Логические операции
А
|
В
|
not A
|
A or B
|
A and B
|
A xor B
|
True
|
True
|
False
|
True
|
True
|
False
|
True
|
False
|
False
|
True
|
False
|
True
|
False
|
True
|
True
|
True
|
False
|
True
|
False
|
False
|
True
|
False
|
False
|
False
|
В Паскале, как и в цифровой электронике, True кодируется единицей, а False – нулем (0 – низкое напряжение, 1 – высокое; при использовании обратной логики – наоборот). Поэтому логические операции разрешены не только над логическими значениями, но и над целыми, представляемыми в двоичной системе счисления. Например, если А=21 (101012), а В=9 (10012), и они описаны как байты, то:
not A = 111010102 = 23410
A or B = 000111012 = 2910
A and B = 00000001
Обычно их используют над беззнаковыми целыми типа Byte или Word.
Шесть операций отношения или сравнения:
> < = ,
применимые ко всем простым типам и многим структурированным, всегда дают логический результат. Более того, и над логическими значениями допускается выполнение операций отношения:
True > False True,
True < False False.
Возможны даже такие записи:
Var i:boolean;
...
For i:=False to True do
<оператор>;
Здесь оператор выполнится два раза, сначала со значением i = False , затем i = True.
§3.4. Литерный тип
В качестве данных в Паскале могут выступать отдельные символы или литеры. Этот тип данных описывается словом Char и занимает 1 байт. Значениями здесь являются 256 символов кодировочной таблицы ASCII (American Standard Code for Information Interchange – Стандартный американский код обмена информацией), используемой в ОС DOS.
При записи констант, если символьное значение имеет графическое представление, то оно изображается символьным знаком, заключенным в апострофы, например:
'*' 'A' '!'
Если символ нельзя отобразить в тексте программы (служебные и неотображаемые символы), то можно воспользоваться эквивалентной формой записи
#<целочисленный код символа>.
Например:
#$7F – Delete, стереть последний символ. Символом DEL, состоящим в двоичном коде из всех единиц, можно было забить любой символ. Устройства и программы игнорировали DEL так же, как NUL. Код этого символа происходит из первых текстовых процессоров с памятью на перфоленте: в них удаление символа происходило забиванием его кода дырочками (обозначавшими логические единицы).
#7 – Bell, звонок, звуковой сигнал. Имеет отношение не к монитору, а ко встроенному динамику.
Если используются специальные символы, называемые управляющими кодами (то есть с использованием префиксной клавиши Ctrl), то можно использовать запись, например вида ^C (символ с кодом 3: ext – конец текста). Все коды с номерами 0-31 являются управляющими, и их можно представить в таком виде. Например, BEL можно записать как ^G.
Над значениями литерного типа можно выполнять только операции отношения.
§3.5. Перечисляемый тип
Часто в программах число используется не в качестве арифметической величины, а как указатель некоторого элемента множества. В Паскале предусмотрена возможность называть элементы множества своими именами, то есть можно определить новый тип путем явного перечисления всех его возможных значений, причем каждое такое значение будет определяться только именем. Считается, что значения перечисляемого типа указаны в порядке возрастания, начиная с нулевого, поэтому над этими элементами можно выполнять операции отношения. Причем наиболее часто используются операции = и .
При описании этого типа используется список, заключенный в круглые скобки, а его значения (константы) являются именами:
(<имя1>[,<имя2>...])
Например:
Type
Color = (Red,Yellow,Green); {Светофор}
Day = (Mon,Tue,Wed,Thu,Fri,Sat,Sun);
Var c:Color;
d:day;
...
If d>Fri Then Writeln ('Выходной день');
Для любого перечисляемого типа Т, определенного записью
T = (w0,w1,...,wn) ,
справедливы свойства:
1. Различимости
wi wj , если i j.
2. Упорядоченности
wi < wj , если i < j.
Причем значениями типа Т могут быть только w0, w1, ..., wn. Более того, эти имена должны быть уникальны, то есть не должны повторяться ни в других типах, ни при описании переменных.
Достарыңызбен бөлісу: |