Строковый тип
Классификация: нестандартный, структурированный (сложный) тип.
Имя определяет программист.
Структурная организация
Данные строкового типа представляют собой строки символов. Строковый тип - массив, элементами которого являются данные литерного типа CHAR. Элементы этого массива пронумерованы, начиная с 0. Сами символы располагаются, начиная с элемента с индексом 1. В нулевом элементе указывается динамическая длина строки (количество символов, которые в данный момент времени хранятся в массиве). Так как все элементы массива одинаковы по размеру, то под динамическую длину, как и под символ, отводится 1 байт. Поэтому строка символов не может иметь длину большую 255. Строка длиной 0 - пустая строка.
Рис. 21.1. – Структура строки символов
Требование однотипности элементов массива приводит к тому, что в элементе с индексом 0 располагается символ, код которого равняется количеству символов, существующих в строке в данный момент времени.
Определение типа
Рис. 21.2. – Определение строкового типа
В определении типа (рис. 21.2), если нужно зарезервировать строку длиной менее 255 символов, в квадратных скобках указывается необходимая длина.
Примеры определения строковых типов и переменных этих типов:
TYPE TS10=STRING[10];
TS=STRING;
VAR A:TS10;
B:TS;
В структурном программировании на языке Паскаль при использовании данных строкового типа этот тип не определяется в разделе нестандартных типов, а при описании переменных используется непосредственное определение строкового типа. Поэтому предыдущий пример в тексте программы должен выглядеть так
VAR A: STRING[10];
B: STRING;
Множество значений
Включает все значения, которые могут быть в структуре заданной в определении типа.
Множество операций
Со строкой символов можно работать, как с одномерным массивом из символов в пределах заполненных элементов этого массива. Т.е. индексы находятся в диапазоне от 0 по значение ORD(<имя переменной типа строка>[0]).
Например, имеется VAR S:STRING и выполнено действие S:='реформа'. После выполнения оператора присваивания индексы массива S находятся в пределах 0..7.Для того, чтобы сформировать в переменной значение 'информатика', необходимо выполнить следующие действия:
S[0]:=CHR(11);{формирование динамической длины строки}
S[1]:='и';
S[2]:='н';
S[8]:='т';
S[9]:='и';
S[10]:='к';
S[11]:='а'.
Однако, для строкового типа определены и свои операции.
Операция конкатенации
Это бинарная операция со знаком +. Здесь операнды и результат любого строкового типа. В результате выполнения операции к строке, являющейся первым операндом, приклеивается вторая строка. Если длина полученной строки превышает 255, то она усекается справа до 255.
Например, в результате выполнения операции 'инфор'+'матика' получается значение 'информатика'.
При присваивании переменной строкового типа значения строки символов, происходит усечение строки символов справа, если ее длина превышает длину, указанную в определении типа строковой переменной.
Операции сравнения (отношения)
Это бинарные операции со знаками =|<>|<|>|<=|>=. Операнды любого строкового типа. Результат типа BOOLEAN. Сравнение производится посимвольно в соответствии с кодами символов, начиная с левого края строк, первое несовпадение определяет результат операции (отсутствие символа - код 0).
Для определения результата операции сравнения можно использовать два следующих правила:
1) две строки равны, если их динамические длины равны и попарно совпадают все соответствующие символы обеих строк;
2) первая строка считается меньше второй, если после первых попарно совпадающих символов код символа первой строки меньше кода символа второй строки или в первой строке отсутствует символ.
Например, сравнение 'FRE'>'FR' дает результат TRUE, т.к. первые две литеры в операндах совпадают, а третья литера во втором операнде отсутствует, что и определяет результат (второй операнд меньше первого); сравнение 'ALFAVIT'>'GAMMA' даст результат FALSE, так как код литеры 'A' меньше кода литеры 'G'.