Массивы символов представляют собой символьную строку определенной длины. Элементами символьного массива м.б. любой символ (типа CHR) как основного так и дополнительного набора символов кода ASCII.
Основной набор ASCII символы с кодами 0..27, дополнительный (содержит символы национальных алфавитов и др. символы) символы с кодами 128..255. Символы можно записывать указывая их код #С где С принадлежит 0..255.
Например:
#65=>’A’; #66=>’B’; #97=>’a’; #98=>’b’;
#48=>’0’; #49=>’1’; #49=>’#’; #46=>’.’.
Символы с кодами 0..31 являются управляющими, они не отображаются на экране, а выполняют определенные функции (некоторые из них приведены в табл. 1).
Таблица 1
Код |
Символ |
Назначение |
#7 |
BEL |
Звуковой сигнал |
#9 |
HT |
Горизонтальная табуляция |
#10 |
LF |
Перевод строки |
#11 |
VT |
Вертикальная табуляция |
#12 |
FF |
Прогон страницы |
#13 |
CR |
Возврат каретки |
#26 |
EOF |
Конец файла |
#27 |
ESC |
Конец работы |
#32 |
BL |
Пробел |
Управляющие символы можно задавать как ^С.
#7 =>^G; #10 =>^J; #13 =>^M.
Эти символы можно включать в текстовые строки без разделителей.
В строках вывода они выполняют определенные функции
Writeln(^G^G’Таблица №1’:30^M^J,’A’:10,’B’:10,’y’:10);
Над данными символьного типа можно выполнять отношения (при этом сравниваются их ASCII коды). Для данных символьного типа существует набор процедур и функций:
ORD(S)– определяет порядковый номер символа по таблице кодов; ORD(‘B’)=>66;
CHR(N) – определяет символ по порядковому номеру в таблице кодов; CHR(66)=>’B’;
SUCC(S)– определяет последующий символ;
SUCC(‘B’)=>’C’;
PRED(S)– определяет предыдущий символ;
PRED(‘B’)=>’A’;
UpCASE(S)– определяет символ в верхнем регистре;
UpCASE(‘y’)=>’Y’.
Пример 17.1. Упорядочить строку символов в алфавитном порядке.
Текст программы:
Program chr_1;
Uses CRT;
Const n=10;
Type vec=array[1..n] of char;
Var Arr_s :vec;
s :char;
i :byte;
k :Boolean;
Begin
clrscr;
Writeln('Введите строку из 10 символов:’);
For i:=1 to n do Read(Arr_s[i]);
Readln;
Repeat
k:=True;
For i:=1 to n-1 do
If ord (Arr_s[i])> ord (Arr_s[i+1]) Then
Begin
s:=Arr_s[i];Arr_s[i]:= Arr_s[i+1];Arr_s[i+1]:=s;
k:=False;
End;
Until k;
Writeln('Упорядоченная строка:');
For i:=1 to n do Write(Arr_s[i]);
ReadKey;
End.
Результаты работы программы
Введите строку из 10 символов
1qasderfgt
Упорядоченная строка:
1adefgqrst
Пример 17.2. Подсчитать количество букв, цифр и скобок в строке.
Текст программы:
Program chr_2;
Uses CRT;
Const n=100;
Type vec=array[1..n] of char;
Var Arr_s :vec;
s :char;
i,kc,kb,ks :byte;
Begin
clrscr;
kb:=0; kc:=0; ks:=0;
Writeln('Введите оператор:');
i:=1;
Repeat
Read(Arr_s[i]); s:= Arr_s[i];
Case s of
'A'..'Z', 'a'..'z': kb:=kb+1;
'0'..'9' : kc:=kc+1;
'(',')' : ks:=ks+1;
End;
inc(i);
Until s=';';
Writeln('Результат:');
Write('kb=',kb,' kc=',kc,' ks=',ks);
ReadKey;
End.
Результаты работы программы
Введите оператор:
y:=2*a(cos(x)+sin(x))/3;
Результат:
kb=10 kc=2 ks=6
Строковые типы данных (string)
Строка – это упорядоченная последовательность символов. Диапазон переменных строкового типа 1..255.