Для хранения символьной информации в Паскале предусмотрен специальный тип данных Char. Допустимы переменные, нетипизированные и типизированные константы такого типа. Данные типа Char занимают 1 байт памяти. Неименованные символьные константы записываются в программе либо в виде 'символ', либо в виде #номер символа. Все имеющиеся символы пронумерованы от 0 до 255, символы с 0-го по 31-й - невидимые, как правило, они не отображаются на экране, 32-й символ - это пробел; приведем также номера некоторых других символов (хотя помнить эти номера нет никакой необходимости):
'0'...'9'- 48...57
'A'...'Z- 65...90
'a'...'z'- 97...122
'А'...'Я'- 128...159
'а'...'п'- 160...175
'р'...'я'- 224...239
Некоторые из невидимых символов могут оказаться вам полезны: символ #7 - "звуковой сигнал", при выводе он пищит; символ#10 - символ "конец строки", при выводе он перемещает текущую позицию вывода на одну строку вниз; символ #13 - "возврат каретки" - перемещает текущую позицию вывода в начало текущей строки. Запомните, что клавиша Enter генерирует два символа -#13 и #10, это вам впоследствии пригодится.
Символьные данные можно вводить и выводить процедурами Read и Write,при вводе и выводе символьные значения изображаются без апострофов. Но не забывайте, что при вводе символов ни пробел, ни Enter не являются разделителями, поэтому, например, оператор Read(x,y,z);, где x,y,z имеют тип Char, из входного потока a b c введет не символы ‘a’,’b’ и ‘с’, а символы ‘a’, пробел и ‘b’.
Для символьных величин определены функции:
25. Ord(c) - возвращает номер символа.
26. Pred(c) - возвращает символ с номером, меньшим на 1.
27. Succ(c) - возвращает символ с номером, большим на 1.
Эти функции определены не только для символов, но и для любого порядкового типа данных. Порядковым типом называется такой тип, все допустимые значения которого можно пронумеровать от 0 до некоторого N ( в математике к этому понятию близко понятие счетного множества ). Из известных нам типов порядковыми являются все целочисленные типы: Byte, ShortInt, Word, Integer, LongInt - и не являются порядковыми все вещественные типы. Значение функции Ord от числового аргумента равно самому этому аргументу, Pred(x) дает значение x-1, а Succ(x) - значение x+1. Функция
28. Chr(n)
в некотором смысле обратна функции Ord: для заданного числового аргумента n она возвращает символ с соответствующим номером. Для символьных переменных (так же, как и для любых переменных порядкового типа) определены процедуры Inc и Dec. Еще одна специфически символьная функция
29. UpCase(c).
Она преобразует значение аргумента; если это маленькая латинская буква - в соответствующую заглавную букву. К сожалению, функция не работает для русских букв.
Напишем простую программу, обрабатывающую символьные величины.
Var c : Char;
n : Byte;
Const Blank =' ';
Space:Char =Blank;
Begin
Write('введите какой-нибудь символ ');
Read(c);
WriteLn('вы ввели символ',Space,c,Space,'его номер=',Ord(c));
WriteLn('соседние с ним символы ', Space, Pred(c), Space, 'и', Space,
Succ(c));
WriteLn('UpCase(',c,')=',UpCase(c),#13#10);
Space:='"';
Write('теперь введите число от 33 до 255 ');
Read(n);
WriteLn('символ с номером ',n,' - это ',Space,Chr(n),Space);
WriteLn;
End.