Рядковий тип (тип 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.
Немає коментарів:
Дописати коментар