Строка - последовательность любых символов кодовой таблицы персонального компьютера. При использовании в выражениях строка заключается в апострофы. Для определения данных строкового типа используется идентификатор string, за которым может следовать в квадратных скобках значение длины строки. Если это значение не указано, то по умолчанию длина строки равна 255 байт.
Переменную строкового типа можно определить через описание в разделе описания переменных.
Строковые данные могут использоваться в программе также в качестве констант.
К любому символу в строке можно обратиться, указав имя строки и номер символа в квадратных скобках.
Операции над строками
Над строковыми данными допустимы операции сцепления и операции отношения.
Операция объединения (+) применяется для объединения нескольких строк в одну, присоединяя начало второй строки к концу первой, начало третьей строки к концу второй и т. д. Для данной операции существует нейтральный элемент, не влияющий на ее результат, - это строка нулевой длины (пустая строка), обозначаемая двумя рядом стоящими апострофами (‘ ‘). Такую строку можно присоединить к любой строке справа или слева и строка не изменится. В операциях сцепления длина результирующей строки не должна превышать 255. Операция объединения строк некоммутативная, т. е. a+b≠b+a.
Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операция сцепления. Сравнение строк происходит слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Например, ‘program’>’PROGRAM’, ‘MS-DOS’<’MS-Dos’. Если строки имеют различную длину, но в общей части символы совпадают, то короткая строка меньше, чем длинная. Строки считаются равными, если они полностью совпадают по длине и имеют одни и те же символы.
Для присваивания строковой переменной результата строкового выражения используется оператор присваивания (:=). Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, все лишние справа символы отбрасываются.
Для обработки строковых данных можно использовать специальные процедуры и функции.
Строковые процедуры и функции
Length (S) – вычисляет текущую длину в символах строки S. Результат имеет целочисленный тип, например:
Значение S
| Выражение
| Результат
|
‘1234567’
| Length (S)
|
|
‘system 370’
| Length (S)
|
|
Delete (S, P, N) – удаление N символов строки S, начиная с позиции Р. Если значение Р>255, возникает программное прерывание.
Значение S
| Выражение
| Результат
|
‘абвгде’
| delete (S, 4, 2)
| ‘абве’
|
‘река Волга’
| delete (S, 1, 5)
| ‘Волга’
|
Concat (S1, S2, …, SN) – выполняет сцепление строк S1, S2, …, SN в том порядке, в каком они указаны в списке параметров. Сумма всех сцепленных строк не должна превышать 255.
Insert (S1, S2, P) – вставка строки S1 в строкуS2, начиная с позиции Р, например:
S1:=’че’;
S2:= ’знание’;
Insert (S1, S2, 4);
В результате выполнения последнего выражения значение строки S2 станет равным ‘значение’.
Copy (S, P, N)– выделяет из строки S подстроку длиной N, начиная с позиции Р. Если Р>length(S), то результатом будет пробел. Если Р>255, возникнет ошибка при выполнении. P, N – целочисленные выражения.
Pos (S1, S2) – обнаруживает первое появление строки S1 в строке S2. Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ строки S1.
Значение S2
| Выражение
| Результат
|
‘abcdef’
| pos (‘de’, S2)
|
|
‘abcdef’
| pos (‘r’, S2)
|
|
Val (S, i, c) – преобразует строковое значение S в величину целочисленного или вещественного типа и помещает результат в i. Значение S не должно содержать незначащих пробелов в начале и в конце. Если во время преобразования ошибки не обнаружено, значение с (целочисленная переменная) равно 0., если ошибка обнаружена (например, литерное значение переводится цифровое), с будет содержать номер позиции первого ошибочного символа, а значение i будет не определено.
Значение S
| Выражение
| Результат
|
‘1450’
| val (S, i, c)
| i=1450 c=0
|
’14.2E+02’
| val (S, i, c)
| i=14.2E+02 c=0
|
’14.2A+02
| val (S, i, c)
| i=0 c=5
|
UpCase (S) – преобразует строчные буквы в прописные. Обрабатывает буквы только латинского алфавита.