Величина типа «символ» может принимать значения любых символов компьютерного алфавита. Символьная величина занимает 1 байт памяти, в котором хранится код этого символа, соответствующий используемой кодовой таблице. Заметим, что в Delphi наряду с однобайтовой кодировкой символов используется и двухбайтовая.
Символьная константа записывается между апострофами. Например: ' R ', ' + ', ’ 9 ', ' ] '.
Символьной тип называется Char. Пример описания символьных переменных:
Символьный тип относится к порядковым типам данных. Из этого следует:
символы — упорядоченное множество;
у каждого символа в этом множестве есть свой порядковый номер;
между символами работает соотношение «следующий — предыдущий».
Порядковый номер символа — это его десятичный код, который лежит в диапазоне от 0 до 255. Например, в кодовой таблице ASCII десятичный код латинской буквы ’А' равен 65, а цифры '5' — 53. О стандартах кодирования символов рассказывалось в § 6.
Функция Ord(x)
Ord(x) — функция от аргумента порядкового типа, которая возвращает порядковый номер значения х в этом типе данных. Если х — символьная величина, то результатом функции будет десятичный код х в кодовой таблице. Например:
Функция Chr (х)
Chr (х) — функция от целочисленного аргумента, результатом которой является символ с кодом, равным х. Например:
Поскольку коды символов лежат в диапазоне от 0 до 255, желательно тип х определять либо как byte, либо как интервальный тип 0 . . 255.
Пример 1. Составить программу на Паскале, по которой на экран будет выводиться таблица кодировки в диапазоне кодов от 32 до 255. Напомним, что символы с кодами, меньшими 32, являются управляющими (не экранными).
Значения выводятся парами: символ-код. В одной строке располагается 10 таких пар. Вся таблица разместится в 24 строках на экране.
Принцип последовательного кодирования алфавитов
В любой кодовой таблице выполняется принцип последовательного кодирования латинского (английского) алфавита и алфавита десятичной системы счисления. Это важное обстоятельство, которое часто учитывается в программах обработки символьной информации.
При выполнении операций отношений, применительно к символьным величинам, учитываются коды этих величин. Чем больше значение кода, тем символ считается больше. Истинными являются следующие отношения: 'А' < 'В', 'Z' >'Y', ' а'>'А'. Значение символьной переменной С является прописной (заглавной) латинской буквой, если истинно логическое выражение:
Значение символьной переменной С является цифрой, если истинно логическое выражение:
В латинском алфавите 26 букв. Поэтому разница между кодами букв 'Z' и 'А', а также 'z' и 'а' равна 25.
Пример 2. С помощью датчика случайных чисел заполнить массив Sim[0. .10] строчными английскими буквами. Затем массив отсортировать в алфавитном порядке.
При тестировании программы было получено:
Система основных понятий
Вопросы и задания
Как в программе на Паскале обозначаются символьные константы и переменные?
С помощью какой стандартной функции определяется код символа?
С помощью какой стандартной функции можно определить символ по его коду?
Что такое принцип последовательного кодирования алфавитов? Приведите примеры алгоритмов, где он может быть использован.
Определите результаты вычисления выражений (типы и значения):
Chr(Ord('В'))
Ord('А')-Ord('Z')
Ord('A')-Ord('a')=Ord('Z')-Ord('z')
Ord('9')-Ord(’0')
Chr(Ord('a')+Ord('R')-Ord('r'))
Выполните на компьютере программы из примеров 1 и 2 данного параграфа. Протестируйте их работу.