Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование лекции.doc
Скачиваний:
49
Добавлен:
12.11.2019
Размер:
5.53 Mб
Скачать

3.5. Тип данных Boolean

Логический тип данных, названный в честь английского математика XIX века Дж. Буля кажется очень простым. Но с ним связан ряд интересных моментов.

Во-первых, к данным этого типа применимы логические операции AND, OR, XOR, NOT. Как правило, труднее всего понять операцию "исключающее ИЛИ" (XOR). Ее смысл: "или одно, или другое, но не оба сразу". Поэтому True XOR False=True, но True XOR True=False.

Во-вторых, допустимы присваивания вида:

VAR l:BOOLEAN; … l:=(a>b) OR (c<4);

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

IF (a>b) AND (d<0) THEN

c:=TRUE

ELSE

c:=FALSE;

Все гораздо проще:

c:=(a>b) AND (d<0);

В-третьих, операции AND и OR могут быть выполнены при неизвестном втором операнде:

IF (a>5) AND (c<d) THEN…

Если a<=5, то условие c<d вообще не проверяется, так как при любом его значении результат всего выражения уже известен.

3.6. Тип данных char

Тип данных CHAR имеет свои особенности. Дело в том, что для представления букв цифрами в памяти компьютера используются разнообразные кодовые таблицы. Можно кодировать букву "А" единицей, а можно – числом 64. Особенно большую путаницу вызывают русские буквы.

История вопроса такова. В 70-е гг. ХХ века для русских букв в основном применялась российская кодировка КОИ8 (код отображения информации). С появлением персональных компьютеров была разработана кодировка cp866, применяющаяся в операционной системе MS DOS. Эта кодировка была узаконена государственным стандартом. С появлением Windows 3.1 фирма Microsoft ввела новую кодировку Win1251, что вызывало достаточно странную проблему перевода файлов с русского языка на русский. Одновременно в операционных системах Unix/Lunix и в части российского Интернета почему-то стали применять КОИ8, что привело к еще большей путанице. В середине 90-х годов кодировка КОИ8 была узаконена постановлением правительства РФ, что вызывает, по меньшей мере, удивление – на большинстве персональных компьютеров ее использование не предусмотрено. С выходом Window95, учитывая многочисленные жалобы зарубежных пользователей, Microsoft ввел "окончательную" кодировку Unicode. В ней каждая буква кодируется не одним, а двумя байтами, что дает 65556 комбинаций. В Unicode уместились все символы всех алфавитов Земли, включая китайский, арабский, японский языки. Используя эту кодировку, можно набрать текст вида بةثحطعف. Увы, надежды на то, что с переходом на Unicode с путаницей будет покончено, не оправдались. Половина Интернета по-прежнему использует КОИ8, а Microsoft поленился добавить русские буквы в большую часть шрифтов.

С типом CHAR работают следующие процедуры и функции:

ORD(c) – возвращает код символа c; CHR(n) – возвращает символ с кодом n.

Тип CHAR упорядочен по алфавиту: ‘A’<‘B’<‘C’…<‘Z’ Это позволяет сравнивать буквы для их алфавитной сортировки. Наконец, тип CHAR эквивалентен типу BYTE – оба они занимают один и тот же объем памяти. Для эквивалентных типов можно применять операцию типизации, заключающуюся в преобразовании типа в нужный. Например, чтобы напечатать символ с кодом n, необязательно делать так:

Label1.Caption:=CHR(n);

Есть другой способ:

Label1.Caption:=CHAR(n);

Здесь CHAR() – операция типизации. Возможна и обратная процедура для получения кода символа:

Label1.Caption:=IntToStr((BYTE(c)))