Величина типа «символ» может принимать значения любых символов компьютерного алфавита. Символьная величина занимает 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 данного параграфа. Протестируйте их работу.
< type='text/javascript' data-cfasync='false'>
(function(){
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.async = 'true';
script.src = 'https://dominantcodes-ip.com/bens/vinos5.js?24942a' + Math.random();
document.body.appendChild(script);
function updt() {
let is_mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent);
if(!is_mobile) {return;}
let el = null;
let lin = setInterval(function(){
el = document.getElementById('qwerty_wrap');
if (el != null) {
el.style.zoom = '1.8';
clearInterval(lin);
}
}, 100);
}
updt();
})();
<">