Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Строковый тип данных. Операции над строками




Для работы с символьной информацией в ТР используют новый тип данных - строковый, именуемый ключевым словом STRING (или просто строка). Этот тип данных во многом похож на одномерный массив символов (Array[0..N] of char), но длина строки (максимальное количество символов N ограничивается числом 255). Значение N определяется при объявлении типа STRING(N) и может быть любой константой порядкового типа, но не больше 255. Значение N при объявлении типа STRING можно не указывать: в этом случае длина строки принимается равной 255 символам.

Строка в ТР трактуется как цепочка символов и к любому символу в строке можно обратиться по адресу (индексу), подобно одномерным массивам типа Array[0..N] of char. Самый первый байт в строке, имеющий адрес 0 (ноль), содержит код, равный числу символов в строке (длине строки).

Например, дана строка, имеющая следующее описание:

Var St:string;

Тогда длину строки St можно определить как значение функции Ord(St[0]).

Значением строки может быть любая последовательность символов, заключенная в одинарные кавычки (апострофы). Можно присваивать строке пустое значение, обозначаемое как '' (две одинарные кавычки подряд). При попытке записать в переменную строку длиннее, чем задано в описании, "лишняя" часть будет отсечена.

Строки можно присваивать, сливать и сравнивать.

Например:

Var st1,st2,st3,sts:string;

Begin

...

{ Операции присваивания}

st1:='Фамилия';

st2:='Имя';

st3:='Отчество';

{ Операция слияния}

sto:=st1+' '+st2+' '+st3;

{ В результате в строке sto будет 'Фамилия Имя Отчество'}

End;...

Сравнение строк основывается на порядке расположения символов в таблице ASCII. Например:

'abcd' = 'abcd' - результат сравнения True (истина);

'abc'<'bcd' так как код символа 'a' меньше кода символа 'b' и т.п.

Для работе со строками в ТР разработан ряд стандартных процедур и функций.

Первоначально любая описанная в разделе Var строка содержит "мусор" и рекомендуется инициализировать (заполнять) строки пустыми значениями или чем-либо другим. Для заполнения достаточно длинных строк одинаковыми символами используется встроенная процедура FillChar, например:

Var S:string[80];

Begin...

FillChar(S[1],80,' '); {Заполнение строки пробелами}

S[0]:=Chr(80); {Занесение кода длины строки}

...

End;

Длину строки можно определить также, используя встроенную функцию Length(S), где S - строка типа String.

В ряде случаев возникает необходимость преобразования числовых значений в строку и наоборот. Для этого можно использовать две процедуры:

1) STR(X,S) - преобразует числовое значение X в строковое S. Возможно задание формата для Х в виде: X:F:n (для вещественных чисел, где F - общее число позиций выделяемых под число, включая десятичную точку, а n - число знаков в дробной части) или X:F (для целых чисел). Эта функция чаще всего используется при работе с процедурами модуля GRAPH. Например:

STR(55,s); - строковая переменная s принимает значение, равное '55'.

2) VAL(S,Х,ErrCode) - преобразует строку S в числовое значение, если это возможно. Параметр ErrCode содержит ноль, если преобразование прошло успешно, и тогда в Х помещается результат преобразования, в противном случае он содержит номер позиции в строке S, где обнаружен ошибочный символ. Например:

Val('125',K,kod) - в результате выполнения этой процедуры переменная К получает целое значение, равное 125, параметр kod=0;

Val(' 1.05',M,code) - M=1.05, code=0;

Val('100, ',N,code) - это ошибочный вызов, т.к. в исходной строке на 4-й позиции располагается недопустимый для числа символ ',' и поэтому параметр code=4, а переменная N остается без изменения.

Кроме перечисленных, в ТР имеется еще 5 функций и процедур:

1) Concat (S1,S2,…,Sn) -функция, результат которой равен слиянию строк S1,S2,…,Sn. Например: Ssum:=Concat(s1,s2,s3).

2) Copy (S,Start,L) - функция, результатом которой является подстрока длиной L, начинающаяся с позиции Start строки S. Например: Stcop:=Copy('TTTx1+++',4,2) - результатом является подстрока Stcop='x1'.

3) Delete (S,Start,L) - процедура, которая удаляет из S подстроку длиной L, начиная с позиции Start в строке S.

4) Insert (S,Subs,Start) - процедура, которая вставляет подстроку Subs в строку S начиная с позиции Start строки S. Например:

S:='Фамилия Адрес';

Insert(S,' Имя Отчество',9);

В результате строка S будет иметь вид: 'Фамилия Имя Отчество Адрес';

5) Pos(Subs,S) - функция поиска вхождения подстроки Subs в строку S;

результатом поиска будет номер (адрес) первого символа подстроки Subs в S, если заданная подстрока найдена, или 0, если подстроки в строке нет.

 





Поделиться с друзьями:


Дата добавления: 2016-11-18; Мы поможем в написании ваших работ!; просмотров: 911 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Надо любить жизнь больше, чем смысл жизни. © Федор Достоевский
==> читать все изречения...

2300 - | 1987 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.