Символьный тип в языке Pascal
Символьный тип – это тип данных, хранящий в качестве значения символ. В языке Pascal в переменных он объявляется с ключевым словом char. Размер переменной данного типа в Pascal составляет 1 байт. Таким образом, всего может быть 256 различных значений для этого типа. А сами символы, использующиеся в типе char, имеют кодировку ASCII.
Пример объявления переменной типа char:
Код:var c1, c2: char;
begin
c1:= ‘a’; // явный вид
c2:= #97;// по номеру кодируемого символа
writeln(‘Char 1: ‘, c1);
writeln(‘Char 2: ‘, c2);
end.
Вывод:
Char 1: a
Char 2: a
Отличия от строкового типа
В отличие от строкового типа string символьный тип содержит всего один символ. Тип string по сути своей представляет массив из переменных типа char. Символьный тип, в свою очередь, может рассматриваться как строка в функциях, предназначенных для типа string таких как insert и copy например.
Пример использования функций insert и copy, применяя тип char:
Код:var s:string;
c: char;
begin
s:=’String ‘;
c:= ‘A’;
insert(c,s,8);
writeln(‘String 1: ‘, s);
s:=copy(c,1,1);
writeln(‘String 2: ‘, s);
end.
Вывод:
String 1: String A
String 2: A
Преобразование символьного типа в другие
Функция ord позволяет получить код символа и возвращает значение типа byte. Функция chr работает по обратному принципу. Зная код из таблицы ASCII, при её помощи можно получить сам символ.
Пример работы ord и chr:
Код:varc: char;
b: byte;
begin
c:= ‘a’;
b:= ord(c);
writeln(‘Ord(c): ‘, b);
c:= chr(b+1);
writeln(‘Chr(b+1): ‘, c);
end.
Вывод:
Ord(c): 97
Chr(b+1): b
К string символьный тип преобразуется неявно при помощи оператора присваивания.
Пример программы, реализующей преобразование char в string:
Код:var c: char;
s: string;
begin
c := ‘a’;
s := c;
writeln(‘String: ‘, s);
end.
Вывод:
String: a
Функции для типа Char
Функция succ возвращает следующий по таблице символ относительно принимаемого значения. Работает она аналогично процедуреincдля целочисленного типа данных. Функцией pred возвращается предыдущий символ в таблице ASCII. Она эквивалентна dec для целых чисел.
Пример программы c функциями succ и pred:
Код:var c: char;
begin
c := ‘c’;
writeln(‘Succ(c): ‘, succ(c));
writeln(‘Pred(c): ‘, pred(c));
end.
Вывод:
Succ(c): d
Pred(c): b
Процедуры inc и dec также применимы для символьного типа данных. Их преимуществом по сравнению с succ и pred является возможность изменения текущего значения символьного типа не только на единицу, но и на большее число.
Функции upcase и lowercase предназначены для изменения регистра символа. Первая преобразует строчную букву в прописную, вторая — прописную в строчную.
Пример работы данных функций:
Код:begin
writeln(‘Upcase(c): ‘, upcase(‘c’));
writeln(‘Lowercase(C): ‘, lowercase(‘C’));
end.
Вывод:
Upcase(c): C
Lowercase(C): c
Операции с данными типа char
Для символьного типа так же, как и для других типов данных, применимы операции сравнения (<, >, <=, >=, =, <>). Сравнение производится, учитывая номера символов в таблице. В операциях сложения и вычитания char в отличие от byte не участвует.
Пример программы с использованием операций сравнения:
Код:var b, c: char;
begin
b := ‘b’;
c := ‘c’;
writeln(‘ b < c: ‘, b < c);
writeln(‘ b > c: ‘, b > c);
writeln(‘ b <> c: ‘, b <> c);
writeln(‘ b = c: ‘, b = c);
writeln(‘ b <= c: ‘, b <= c);
writeln(‘ b >= c: ‘, b >= c);
end.
Вывод:
b < c: TRUE
b > c: FALSE
b <> c: TRUE
b = c: FALSE
b <= c: TRUE
b >= c: FALSE
Переменная символьного типа также может использоваться в качестве счётчика цикла.
Пример использования типа charв цикле:
Код:var i: char;
begin
for i:= ‘a’ to ‘d’ do
write (i, ‘ ‘);
end.
Вывод:
a b c d