Главная » Free Pascal » Символьные данные Free Pascal

0

К данным типа char относятся объекты, представленные в оперативной памяти восьмибитовыми двоичными кодами от 0 до 255.

Первую группу таких объектов с кодами от 0 до 31 относят к группе управляю- щих символов. Среди управляющих символов чаще других используются следую- щие:

± "пусто" (символ NIL с кодом 0);

± "звуковой сигнал" (символ BEL с кодом 8);

± "табуляторный пропуск" (символ Tab с кодом 9);

± "конец строки" (символ LF с кодом 10);

± "перевод каретки (символ CR с кодом 13);

± "отмена" (символ Esc с кодом 27).

Вторую группу составляют так называемые отображаемые символы. При их выводе на экран каждый объект занимает одно знакоместо, в котором отображают- ся буква, цифра, скобка, знаки операций и препинания. Символ "пробел" с кодом 32 не имеет на экране видимого графического отображения, но он занимает знако- место, используемое для разделения "слов" — цепочек видимых символов. Среди отображаемых символов присутствует единственный управляющий символ "забой" (Backspace с кодом 127), назначение которого — стереть на экране предшествую- щий символ.

Для кодировки символьных данных используются специальные таблицы — ко- довые страницы (code page) ASCII (American Standard Code for Information Inter- change — американский стандартный код для обмена информацией). Основа ASCII была заложена фирмой IBM, когда для кодировки символов латинского алфавита использовались семиразрядные двоичные коды. По мере проникновения компью- терной техники в разные страны выяснилось, что одним латинским алфавитом не обойтись, национальные алфавиты включали довольно много специальных знаков. И тогда пришлось расширить кодировку символов до восьми двоичных разрядов (т. е. до одного байта), но для каждой страны была создана своя кодовая страница ASCII. Первую половину каждой кодовой страницы занимали символы, предло- женные фирмой IBM, а вторая половина была предназначена для кодировки сим- волов национального алфавита. В нашей стране используются две кодовые страни- цы с номерами 866 (для работы под управлением MS-DOS и в 32-разрядных консольных приложениях, изготовленных в среде Windows) и 1251 (для работы в настоящих приложениях Windows). Таблицы соответствующих кодировок можно встретить почти в каждой книге по программированию, но мы предложим доволь-

но простую программу, воспроизводящую символы и их числовые коды для кодо- вой страницы 866.

Чтобы таблица хорошо разместилась на экране дисплея, сформируем ее в виде 10 колонок, каждая из которых содержит по 23 строки. В колонке предлагается разместить трехзначный числовой код (старший незначащий ноль мы воспроизво- дить не будем) и соответствующий ему символ таблицы ASCII. В первой строке первой колонки мы расположим первый отображаемый символ — "пробел" с чи- словым кодом 32. Во второй колонке этой же строки будет находиться символ с числовым кодом 55 и т. д. Таким образом, формула вычисления числового кода при переходе к следующей колонке может быть записана в следующем виде:

k = 32 + 23    i + j,

где i — номер колонки, пробегающий значения от 0 до 9, j — номер строки, пробе- гающий значения от 0 до 22.

Программа представлена в листинге 4.5.

Листинг 4.5. Программа ASCII_866

program ASCII_866; var

i,j,k: byte; begin

writeln(‘Code Page 866 : ASCII code':50); for j:=0 to 22 do

for i:=0 to 9 do begin

k:=32+23*i+j;

if k<256 then write(k:3,’ ‘,chr(k),’  ‘) else write(‘       ‘);

end;

readln; end.

Результат ее работы приведен на рис. 4.5.

Обратите внимание на тот факт, что коды малых русских букв расположены не сплошным массивом: между буквами "п" и "р" вклинились символы псевдографи- ки, используемые для формирования таблиц, клетки которых ограничены одинар- ными и двойными линиями. Второй момент, осложняющий обработку русских тек- стов, связан с тем, что расположение кодов букв "ѐ" и "Ё" не соответствует порядку букв в русском алфавите.

В кодовой странице 1251 диапазон кодов малых русских букв сплошной, но си- туация с ненормальным расположением кодов букв "ѐ" и "Ё" сохранилась.

Рис. 4.5. Кодовая страница 866

Для работы с символьными данными используются следующие стандартные функции:

± ord(x) — возвращает код ASCII, соответствующий символу-аргументу;

± chr(n) — возвращает символ, код которого равен n (0 n 255).

Например:

ord(‘S’) = 62   chr(100) = ‘d’

Так как последовательным кодам символов соответствуют числа натурального ряда, то из них могут быть организованы интервальные данные. Например:

Type

LowSym = ‘a’..’z’;

Одной из интересных особенностей Паскаля является возможность использо- вать символы в качестве индексов элементов массивов:

Var

qq : array [‘a’..’z’] of word; j : char;

for j:=‘a’ to ‘z’ do

qq[j]:=0;

Для записи в тексте программы литеральных символьных констант Free Pascal предлагает два формата:

Var

s1: char = ‘Q’;     // символ в одинарных кавычках (буква Q) s2: char = #13;     // символ с кодом 13 в таблице ASCII (CR)

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии