Рядковий тип (тип string) використовується для обробки текстової
інформації. 
Він подібний до масиву символів, але з тією відмінністю, що
елементи такого масиву завжди нумеруються з номера 0. При цьому в елементі
з номером 0 зберігається величина, що вказує, яка кількість символів записана у
даний рядок. Самі символи знаходяться у елементах рядка починаючи з
елемента з номером 1. 
Звертатись до змінної можна як до цілого рядка або
поелементно, як до елементів масиву (з урахування вищевказаної
особливості).
Опис змінної рядкового типу має вигляд: 
<змінна >:string[довжина рядка]; 
Довжина рядка – це число, що вказує, яку максимальну кількість
символів можна буде зберігати у вказаній змінній. Це число не може
перевищувати 255. 
При описі змінної рядкового типу довжину рядка можна
не вказувати. В такому випадку довжина рядка буде 255 символів. 
Як уже
відмічалось довжина рядка вказує, яку максимальну кількість символів можна
буде зберігати у заданій змінній. Якщо спробувати записати більшу кількість
символів, то всі зайві символи буде відкинуто без всякого попередження, тому
програміст повинен сам контролювати, у яку змінну рядкового типу скільки
елементів можна записати. 
Приклад: 
… 
var
 st, st1:string[10];{описано рядок, що може містити до 10 символів} 
 st2:string;{даний рядок може містити до 255 символів} 
st3:string[1];{ даний рядок може містити лише один символ} 
… 
begin 
… 
st1:=’1234567890’;{даний рядок заповнений повністю} 
st2:=’I am a string’;{в даний рядок можна додавати символи} 
st3:=’123’;{в даний рядок записано лише символ ‘1’ інші символи
відкинуто} 
st1[5]:=’d’; {тепер до st1 записано послідовність символів '1234d67890'} 
st:=st1;{до st записано те саме, що і до st1} 
st[5]:=st2[1];{ тепер до st записано послідовність символів '1234I67890'} 
end. 
При роботі із рядками програміст повинен завжди пам’ятати, що змінна
рядкового типу займає в пам’яті (довжина рядка+1) байт, оскільки існує
елемент з номером 0, в якому міститься інформація про кількість символів
реально записаних до цієї змінної. 
Для полегшення роботи із даними рядкового типу існує набір стандартних
процедур та функцій. 
Розглянемо основні з них: 
concat(s1 [,s2,…,sn]) – функція типу string, що повертає рядкову змінну,
яка містить у собі послідовно рядки s1…sn; 
copy(st, index, count) – функція типу string, що повертає рядкову змінну,
яка містить count послідовних символів рядка st, починаючи з елемента з
номером index; 
delete(st, index, count) – процедура, що видаляє count елементів із рядка st,
починаючи з елемента з номером index; 
insert(subst, st, index) – процедура, що вставляє послідовність символів, які
містяться у змінній subst до рядка st, починаючи з позиції з номером index; 
length(st) – функція, що вказує кількість символів, що містяться в рядковій змінній st; 
pos(subst, st) – функція типу integer, що повертає номер позиції рядка st, з
якої починається послідовність символів, які містяться у змінній subst, або 0,
якщо у змінній st нема такої послідовності символів; 
str(x[:width[:decimals]],st) – процедура, що перетворює число x будь-якого
цілого або дійсного типу у рядок символів st; параметри width та decimals,
якщо вони присутні, задають формат перетворення; 
val(st, x, code) – процедура, що перетворює рядок символів st у число,
якщо це можливо, і записує його у змінну x. До змінної code записується 0,
якщо перетворення успішне, або номер позиції першого символу змінної st,
який не може бути перетворений.
У даному переліку між символами [ ] знаходяться необов’язкові
аргументи. 
Наведений список не є повним. 
Приклад використання описаних процедур та функцій: 
var
 x:real; 
y:integer; 
st, st1:string; 
begin 
st:=concat(‘12’,’345’); {st:=’12345’} 
st1:=copy(st, 3, length(st)-2); {st1:=’345’} 
insert(‘-‘, st1, 2); {st1:=’3-45’} 
delete(st,pos(‘2’,st),3); {st:=’15’} 
str(pi:6:2,st); {st:=’ 3.14’} 
end. 
Над рядками можна виконувати операції відношення =,<>,>,<,>=,<=. Ці
операції виконуються посимвольно. Зліва направо порівнюються коди
символів. Якщо один рядок містить менше символів ніж другий, то система на
час порівняння доповнює його справа символами з кодом 0. 
 
Немає коментарів:
Дописати коментар