Рядки

Рядковий тип (тип 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. 

Немає коментарів:

Дописати коментар