Строка в Турбо Паскале –
последовательность символов произвольной длины до 255 символов. для
определения данных строкового типа используется идентификатор String,
за которым следует заключенное в квадратные скобки значение максимально
допустимой длины строки данного типа. Если это значение не указывается,
то по умолчанию длина строки равна 255 байт.
Строку можно рассматривать как массив символов, однако в связи с
широким использованием строк и некоторыми особенностями по сравнению со
стандартными массивами они выделены в отдельный тип данных.
Переменную строкового типа можно определить через описание типа в
разделе определения типов или непосредственно в разделе описания
переменных. Строковые данные могут использоваться в программе также в
качестве констант.
Недопустимо применение строковых переменных в качестве селектора в
операторе Case.
Определение строкового типа устанавливает максимальное количество
символов, которое может содержать строка.
Формат:
Type
<имя типа> = string [максимальная длина
строки];
var
<идентификатор,…> : <имя типа>;
Переменную типа string можно задать и без описания типа:
var
<идентификатор,…> : string
[максимальная длина строки];
Пример:
const
Address=’ул. Переверткина, 25’;
{строковая константа}
Type
Flot = string[125];
Var
Fstr : Flot; {описание с задание типа}
St1 : String; {по умолчанию длина строки = 255}
St2, St3 : String[50];
Nazv : String[280]; {ошибка, длина превышает 255}
Строка в языке Турбо Паскаль трактуется как цепочка символов. (Для
строки из N символов отводится N+1 байт; N байт – для хранения
символов строки, а один байт – для значения текущей длины
строки.)
К любому символу в строке можно обратиться, указав его номер. В самом
начале строки (по нулевым номером) расположен байт, содержащий значение
текущей длины строки.
Строковые выражения.
Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых
констант, переменных, указателей функций и знаков операций. Над
строковыми данными допустимы операция конкатенации и операции
сравнения.
Конкатенация –
применяется для объединения нескольких строк в одну результирующую
строку.
Операции сравнения (=, <>, >, <, >=,<=)
проводят сравнение двух строковых операндов и имеют приоритет более
низкий, чем операция конкатенации, т.е. вначале всегда выполняются все
операция конкатенации, если они присутствуют, и лишь потом реализуются
операции сравнения. Сравнение строк производится слева направо до
первого несовпадающего символа, и та строка считается больше, в которой
первый несовпадающий символ имеет больший номер в стандартной таблице
обмена информацией. Результат выполнения операций отношения над
строковыми операндами всегда имеет булевский тип и принимает значение
True, если выражение истинно, и False, если выражение ложно.
Запись подобная Str[0] дает доступ к нулевому байту, содержащему
значение текущей длины строки. Значение нулевого байта не должно
превышать 255, но нарушение этого правила не вызывает программного
прерывания, так как директива компилятора R по умолчанию находится в
пассивном состоянии {$R-}. Для обеспечения строкового контроля за
диапазоном допустимых значений индекса следует перевести директиву R в
активное состояние {$R+}. В этом случае компилятор активизирует
дополнительные команды для проверки правильности диапазона. Обычно
активный режим R устанавливается на стадии отладки программ.
Строковые процедуры и функции.
Delite (St,Poz,N) –
удаление N символов строки St, начиная с позиции Poz. если значение
Poz>255, возникает программное прерывание.
Insert (Str1, Str2, Poz) – вставка строки Str1 в Str2,
начиная с позиции Poz.
В результате выполнения последнего выражения значение строки S2 станет
равным ‘ЭВМ ЕС 1841’.
Str (IBR, St) – преобразование числового значения величины
IBR и помещение результата в строку St. После IBR может записываться
формат, аналогичный формату вывода. Если в формате указано
недостаточное для вывода количество разрядов, поле вывода расширяется
автоматически до нужной длины.
Val (St, IBR, Code) – преобразует значение St в величину
целочисленного или вещественного типа и помещает результат в IBR.
Значение St не должно содержать незначащих пробелов в начале и конце.
Code – целочисленная переменная. Если во время операции
преобразования ошибки не обнаружено, значение Code равно нулю, если же
ошибка обнаружена (литерное значение переводится в цифровое), Code
будет содержать номер позиции первого ошибочного символа, а значение
IBR не определено.
Copy (St, Poz, N) – выделяет из St подстроку длиной N
символов, начиная с позиции Poz. Если Poz>Lengh(St), то результатом
будет пробел; если Poz>255, возникнет ошибка при выполнении. Poz, N
– целочисленные значения.
Concat (Str1, Str2,…,StrN) – выполняет сцепление
строк Str1, Str2,…,StrN в том порядке, в каком они указаны в
списке параметров.
Сумма символов всех сцепленных строк не должна превышать 255, например:
Pos (Str1, Str2) –
обнаруживает первое появление в строке Str2 подстроки Str1. Результат
имеет целочисленный тип и равен номеру той позиции, где находится
первый символ подстроки Str1. Если в Str2 подстроки Str1 не найдено,
результат равен 0.