Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ОАП.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
1.1 Mб
Скачать

9.4. Строки

Турбо - Паскаль предоставляет средства для работы с данными строкового типа. Строковый тип данных представляет собой цепочку символов. Длина цепочки может изменяться от 0 до 255. Для определения строкового типа используется служебное слово STRING, за которым в квадратных скобках указывается максимальная длина строки

Например:

Type

line = string[25];

Var

mline : line;

...

В данном примере переменная mline представляет собой последовательность, включающую до 25 символов, причем каждый символ имеет стандартный тип CHAR.

9.4.1. Основные операции

Для строковых типов данных определена операция "конкатенация", обозначаемая символом '+'. Смысл операции заключается в формировании новой строки. Динамическая длина сформированной строки равна сумме символов строк-операндов, а ее значение равно последовательности символов исходных строк.

Например:

Var

str1, str2 : string[10];

st : string[25];

Begin

str1 := 'Турбо - ';

str2 := 'Паскаль';

st := str1 + str2;

WriteLn(st)

End.

В результате выполнения программы будет на экране отображена текстовая строка: 'Турбо - Паскаль '.

Кроме операции конкатенации над значениями строковых типов разрешены операции сравнения < , <=, > , >=, = , <>, IN, при выполнении которых действуют следующие правила:

а) более короткая строка всегда меньше более длинной;

б) если длины сравниваемых строк равны, то происходит поэлементное сравнение символов этих строк с учетом лексикографической упорядоченности значений стандартного символьного типа CHAR.

Например:

'a' < 'б', т.к. ORD('a') < ORD('б');

в) компаратор IN определяет вхождение левого операнда в правый. Если левый операнд входит в правый, то результат компарации будет истинным (TRUE), в противном случае - ложным (FALSE). Левым операндом может быть только элементарное данное (здесь символ), а правым - любое множество элементов.

9.4.2. Доступ к элементам строковых данных

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

Например:

Var

mline : string;

i : integer;

Begin

. . .

for i := 1 to length( mline ) do

if mline[i] IN ['a'...'z'] then

mline[i] := chr( ord( mline[i] ) + 1);

. . .

Можно заметить, что работа со строковыми данными аналогична работе с символьными массивами, однако, это не означает их полную идентичность. Так, распространенной ошибкой является работа с элементами строки без учета ее текущей длины. Необходимо помнить, что если длина символьного ряда статична, то длина стринга динамична.