Масиви символів являють собою символьне рядок певної довжини. Елементами символьного масиву м.б. будь-який символ (типу 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 |
ДАЛІ |
Прогін сторінки |
#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);
s Until=";";
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.