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

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