Як уже згадувалось, в
мові Pascal є два види текстових даних: символічні (char) та рядкові (string).
Для роботи з символічними даними є функції: Chr та Ord.
Функція Chr за кодом виробляє відповідний символ, наприклад,
результатом функції Chr(66) буде символ ‘B’.
Функція Ord виробляє код свого аргументу: значенням функції
Ord(‘B’) буде число 66.
Символічні дані можна об’єднувати в масив, наприклад:
Var P: array[1..50] of char;
Фактично P – це рядок з 50 символів. Його можна ввести в
циклі.
Спеціальна функція Length(T) повертає
ціле число – кількість символів в рядку. Рядок можна ввести з клавіатури за
допомогою оператора Readln.
Наприклад:
Readln(Т);
Для
рядкових даних допустима операція зчеплення, наприклад:
Q:=’ Великий ‘ + ‘ Дніпро ‘;
Але
можливий і такий варіант:
LivePole:=’‘; {це пустий рядок}
For i:=1 to k do LivePole:= LivePole+’ ‘;
Після
завершення циклу змінна LivePole буде мати k проміжків.
Для
обробки даних типу String використовують спеціальні підпрограми.
Процедура
Insert(S1, S2, Npoz) вставляє рядок S1у рядок S2, починаючи з позиції Npoz.
Приклад:
S2:=’ Приватизація ‘;
Insert (‘х’ , S2, 4); {в S2 буде – Прихватизація}
Процедура
Delete(S1, Npoz, Kil) вилучає з рядку S1 підрядок із Kil символів, починаючи з
позиції Npoz.
Приклад:
S1 := ‘Закріпити’;
Delete (S1,3,3); {в S1буде - запити}
Функція
Copy(S1, Npoz,Kil) виконує копіювання послідовності із Kil символів з позиції
Npoz рядку S1.
Приклад:
S2:=Copy(‘Металіст’,5,3); {в S2 буде – ліс}
Функція
Pos(S1, S2) шукає в S2 (з лівого краю) підрядок S1. Результатом функції є ціле
число – номер позиції, починаючи з якої підрядок S1 перший раз входить до S2.
Якщо S1 в S2 немає, результат дорівнює нулю.
Приклад:
S2:=’ Влада чи Безвладдя‘;
Nom:=Pos(‘ ‘,S2); {Nom стане рівним 6}
Щоб
знайти у тексті місце другого проміжку, треба щось зробити з першим, наприклад, замінити його на ‘*’.
S2[Pos(‘ ‘,S2)]:=’*’;
Функція
Concat(S1,S2,…,SN) виконує зчеплення рядків S1, S2,…,SN в один рядок.
Приклад:
Підрахувати кількість слів у заданому реченні.
Var s:String;
i,j:Byte;
Begin
Write('Input
line : ');
Readln(s);
s:=s+' ';
j:=0;
For i:=2 to
Length(s) do
If (s[i]='
')and(s[i-1]<>' ') Then j:=j+1;
Writeln('Result
= ',j);
End.