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

Для хранения символьной информации в Паскале предусмотрен специаль­ный тип данных 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 генерирует два символа - #10 и #13, это может вам впоследствии пригодиться.

Символьные данные можно вводить и выводить процедурами READ и WRITE при вводе и выводе символьные значения изображаются без апостро­фов. Для символьных величин определены функции:

25. Ord(c) - возвращает номер символа.

26. Pred(c) - возвращает символ с номером, меньшим на 1.

27. Succ(c) - возвращает символ с номером, большим на 1.

Эти функция, однако, определены не только для символов, но для любого порядкового типа данных. Порядковым типом называется такой тип, все допус­тимые значения которого можно пронумеровать от 0 до некоторого N (в матема­тике к этому понятию близко понятие счетного множества). Из известных нам типов порядковыми являются все целочисленные типы: Byte, ShortInt, Word, Integer, LongInt - и не являются порядковыми все вещественные типы. Значение функции Ord от числового аргумента равно самому этому аргументу, Pred(x) дает значение      а Succ(x) - значение Функция

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,'его номер=',0^(с));

WRITELN('соседние с ним символы :',Space,Pred(c),Space, V,Space,Succ(c));

WRITELN('UpCase(',c,')=',UpCase(c)); WRITELN;

Space:='"'; WRITE('теперь введите число от 33 до 255 '); READ(n);

WRITELN('символ с номером ',n,' - это ',Space,Chr(n),Space);

WRITELN;

END.