Символьный тип данных

Кроме типов данных для работы с числовыми и логическими переменными, в языке Pascal существует тип для работы с символами. Такой тип данных называется char.
Опишем переменную ch символьного типа:

var ch: char;


Переменная символьного типа занимает 1 байт памяти. Значениями символьного типа char являются элементы множества символов. В языке Паскаль это множество состоит из 256 символов, пронумерованных от 0 до 255. Таким образом, множество символов конечно и упорядочено.

Элементы этого множества содержат символы, которые можно получить на экране  компьютера с помощью нажатия клавиш (или комбинации клавиш), а также некоторые другие символы, в том числе невидимые. К символам относятся маленькие  (от 'а' до 'z') и большие (от 'A' до 'Z') буквы латинского алфавита, цифровые символы (от '0' до '9') и многие другие символы.

Какие именно символы принадлежат множеству, зависит от кодовой таблицы, которая используется на момент выполнения  программы. Поэтому одна и та же программа, печатающая, например, символы кодовой таблицы, на компьютерах с различными текущими кодировками будет печатать разные символы.

Будем называть кодом символа номер этого символа по кодовой таблице.
Первые 128 символов с номерами от 0 до 127 всегда соответствуют ASCII-символам, которые имеют одинаковое начертание во всех кодировочных таблицах. А следующие 128 символов с номерами от 128 до 255 используются для представления символов национального алфавита, символов псевдографики и т.п. Именно в этой части таблицы расположены большие и маленькие русские буквы для пользователей РФ.


Кроме того, первые 32 символа считаются управляющими и не имеющими графического изображения. Эти символы воспринимаются устройствами как команды. Например, символ на 7-м месте кодовой таблицы при попытке вывода его на экран выдаст звуковой сигнал, а символ с номером 13 есть ничто иное как клавиша Enter, поэтому вывод этого символа на экран вызовет переход на следующую строку экрана.


В тексте  программы символы можно использовать как константы и тогда они записываются двумя способами. Более наглядным является способ, при котором изображаемый символ заключается в апострофы (не путать с двойными кавычками). Например, '1', 'F', 'f'. Для представления самого символа апостроф его записывают дважды внутри апострофов: ''''.
Второй способ позволяет записывать любые символы по их кодам. Таким способом можно представлять любые символы, в том числе и те, которые  не имеют изображения. В этом случае изображение символа начинается со знака # (решетка), за которым следует номер символа по кодировочной таблице, т.е. его код. Например, на 65-м месте кодировочной таблицы расположен символ A. Для записи этого символа в программе можно писать #65.


Поскольку каждый символ кодовой таблицы имеет свой уникальный номер, то определен порядок на множестве символов. Поэтому символы можно сравнивать. Если код символа ch1 меньше кода символа ch2 , то и сам символ ch1 считается меньше символа ch2.
В кодировочных таблицах цифровые символы упорядочены между собой, поэтому

'0' < '1' < '2' < '3' < '4' < '5' < '6' < '7' < '8' < '9'


Все 26 большие и маленькие  латинские буквы упорядочены между собой, причем в кодировочной таблице сначала расположены большие буквы от 'A' до 'Z' и вслед за ними маленькие буквы от 'a' до 'z'. Из этого факта следует, что 'A' < 'B' < 'Z' < 'a' < 'z'. Латинские буквы большие расположены по порядку, т.е. на 65 месте расположен символ 'A', на 66-м месте символ  'B', на 67-м месте  'C' и т.д. То же самое относится к маленьким латинским буквам.
Большие русские буквы упорядочены от 'А' до 'Я'. Маленькие русские буквы также упорядочены между собой, и расположены после больших русских букв. Однако следует иметь в виду, что среди русских букв исключены буквы Ё и ё. Они расположены в разных кодировочных таблицах в разных местах. Кроме того, исторически сложилась ситуация, когда маленькие русские буквы расположены не по порядку в кодовой таблице, а с разрывом между буквами 'п' и 'р'. Гарантируется только справедливость следующих соотношений:

'А' < 'Б' < 'В' < 'Г' < 'Д' < … < 'Я' < 'а' < 'б' < 'в' < 'г' < … < 'я'.

 

Рассмотрим функции, применимые к переменным символьного типа.
1. Функция chr(nom) возвращает символ по его номеру в кодовой таблице. Параметром функции может быть целочисленное выражение, принимающее значение от 0 до 255.
Например, chr(65) возвращает 'A'.
2. Функция  ord(ch), наоборот, выдает номер символа ch в кодировочной таблице. Параметром функции ch является символ.
Например, ord('B') равен 66.
3. Функция succ(ch)возвращает следующий за ch символ кодировочной таблицы.
Например, succ('A') будет 'B'.
4. Функция pred(ch) возвращает предыдущий перед ch символ кодовой таблицы.
Например, perd('B') будет 'A'.
5. Функция upcase(ch) переводит строчную букву в  прописную. Работает только на строчных буквах латинского алфавита, оставляя все остальные символы неизменными.

 


Пример 1. Напечатать все символы кодировочной таблицы.
var i: byte;
begin
for i := 0 to 255 do
    write (chr(i), ' ');
end.

 

Пример 2. Напечатать прописные буквы латинского алфавита.
var ch: char;
begin
for ch := 'a' to 'z' do  

 write (ch,' ');   
end.

 

{ перебираем все символы от 'a' до 'z' }

{ и выводим }



Пример 3. Проверить, является ли введенный символ строчной буквой русского алфавита.
 
var ch: char;
begin
   read (ch);   
   if ch in ['А'..'Я']   
   then writeln ('yes')
   else writeln ('no')
end.

{ ввели символ }

{ проверяем, принадлежит ли данный символ множеству от А до Я }

 



Пример 4. Вводить символы до тех пор, пока не будет введен символ ESC.
var ch: char;
begin
   ch := #0;
   while ch <> #27 do read (ch);
end.

 

{ так можно почистить переменную символьного типа }

{ код клавиши ESC есть27 по кодировочной таблице }

Адрес: 614039, г. Пермь, ул. Комсомольский проспект, 45
Телефон: +7 (342) 212-80-71
E-Mail: school9-perm@ya.ru
Вопрос администратору сайта