Символьный тип - это тип данных, состоящих из одного символа (знака, буквы, цифры). Традиционная запись символьного значения представляет собой символ, заключенный в апострофы ('ж'). В Pascal ABC имеются альтернативные способы представления символов [1]. Значениями символьного типа является множество всех символов компьютера. Каждому символу приписывается целое число в диапазоне 0..255, которое служит кодом его внутреннего представления. Связь между символом и кодом устанавливается функцией ORD:
<Код > = ORD ( <символ> ) .
Переменные символьного типа объявляются в блоке VAR ключевым словом CHAR. Пример.
VAR
C1, C2, C3: CHAR;
BEGIN C1 := 'A' ; C2 := 'B' ; C3 := chr(43); …
END.
Для кодирования символов используется код ASCII (AMERICAN STANDART CODE FOR INFORMATION INTERCHANGE - Американский стандартный код для обмена информацией). Код ASCII имеет 7 бит, которые позволяют кодировать в стандарте основные 128 символов, включающие латинские пpописные и стpочные буквы, цифpы, pазделители и pяд служебных символов (с кодами 0..31). Служебные символы в тексте считаются пробельными и в операциях ввода-вывода имеют самостоятельное значение (табл. 7).
В Pascal ABC применяется восьмибитовый код, содержащий 256 символов. Кодировка символов с номерами [128..255] зависит от типа ПК и включает буквы русского алфавита, а также графические символы [3–5].
К символам типа char применимы операции присваивания и все операции логических отношений: <, >, <=, >=, =, <>.
Примеры 'A' = 'A' (TRUE);
'A' <> 'a' (TRUE);
'A' < 'a' (TRUE);
Таблица 7
Служебные символы
Символ
Код
Назначение
BEL
HT
LT
VT
FF
CR
SUB
ESC
Звонок
Табуляция горизонтальная
Перевод строки с сохранением текущей позиции
Табуляция вертикальная
Прогон страницы
Возврат каретки
Конец файла
Конец работы
Символьный тип имеет следующие встроенные функции:
ORD(С ) - возвращает код типа byte для символа С:char;
CHR( b) - возвращает символ по коду аргумента b:byte;
UPCASE(c) - переводит в верхний регистр только букву латинского алфавита, оставляя любой другой символ без изменения, и возвращает символ c:char;
PRED(C) - возвращает символ, предшествующий С:char в таблице кодов;
SUCC(C)- возвращает символ, следующий за С:char в таблице кодов.
Пример. Напечатать прописными только латинские буквы из двух заданных. Зададим буквы константами и применим функцию UpCase:
Var
c1, c2:char;
Begin
c1:= UPCASE( 'f' );
c2:= UPCASE( 'ф' );
writeln(c1, ' ' , c2, #7 ) {строка вывода: F ф }
End. {Вывод сопровождается звуковым сигналом}
Символы также можно описывать указанием в функции CHR кода символа или с признаком # перед кодом. Например, считаются эквивалентными следующие записи: