double arrow

Строковые процедуры и функции в Турбо-Паскале

Строковый тип (STRING) в языке программирования Паскаль

Строки в языке программирования Паскаль - это последовательности литер. В качестве ограничителя строк-констант используются апострофы, например: 'PASCAL', 'компьютер', '25'.

В языке Турбо-Паскаль определен стандартный строковый тип STRING. В определении строкового типа должна быть указана в квадратных скобках максимальная длина строки данного типа. Максимальная длина - целочисленная константа в диапазоне от 0 до 255.(В старших версиях Турбо-Паскаля разрешено не указывать N, в этом случае считается, что N=255.)

Примеры:

TYPE ABC = STRING[100];

SCREENLINE = STRING[80];

XYZ=STRING;

Строковые выражения состоят из строковых констант, переменных, имен строковых функций и операторов. Знак "+" используется для слияния (конкатенации) строк. Если длина результата больше 255 символов, то возникает ошибка. При сравнении двух строк истина получается тогда и только тогда, когда сравниваемые строки совпадают посимвольно и имеют одинаковую длину (то есть принадлежат одному и тому же типу).

Типы STRING[N] для различных N и CHAR совместимы. Строки и символы могут употребляться в одних и тех же выражениях.

Строковая переменная занимает в памяти место, равное в байтах максимальной длине плюс один. Тип STRING[N] в Турбо-Паскале представляется как ARRAY[0..N] OF CHAR.

К любому элементу строки так же, как к элементу одинарного массива. В результате получается величина типа CHAR.

Например, если

VAR A:STRING[8];

и A:='COMPUTER',

то A[3] равно'M', A[5] - 'U'.

В компоненте строки с индексом 0 находится символ, номер которого есть текущая длина строки. То есть ORD(A[0]) есть текущая длина строки. Например, если A:='DAY' то ORD(A[0])=3.

В Турбо-Паскале имеются ряд стандартных процедур и функций, специально предназначенных для работы со строками.

3.1. Процедура DELETE.

Синтаксис:

DELETE(var S:String;Pos,Len:Integer);

Убирает из строки S Len символов начиная с Pos. Если Len больше длины S то ничего не происходит. Если Pos+Lеn больше длины строки то удаляются все символы до конца строки.

3.2. Процедура INSERT.

Синтаксис:

INSERT(S:String;var D:String;Pos:Integer);

Вставляет строку S в строку D начиная с символа с номером Pos. Если Pos больше длины D то S и D сливаются. Если длина результата при этом больше максимальной длины D то в D записываются только самые левые символы.

3.3. Процедура STR.

Синтаксис:

STR(I:Integer;var S:String);

STR(R:Real;var S:String);

Преобразует I или R из числа в строку и записывает эту строку в S.

ВНИМАНИЕ! Процедура Str не должна входить в функции, вызываемые в процедурах WRITE и WRITELN.

3.4. Процедура VAL.

Синтаксис:

VAL(S:String;var R:Real;var P:Integer);

VAL(S:String;var I,P:Integer);

Преобразует строковую переменную S в число (тип зависит от типа переменной I или R соответственно). Если в строке S ошибок нет, то P равно 0, иначе значение R (или I) неопределенно, а P присваивается номер первого ошибочного символа.

3.5. Функция CONCAT.

Синтаксис:

CONCAT(S1,S2,...,Sn:String):String;

Возвращает строку, полученную конкатенацией (слиянием) строк S1,...,Sn. Если длина результата больше 255 то возникает ошибка времени выполнения.

3.6. Функция COPY.

Синтаксис:

COPY(S:String;Pos,Len:Integer):String;

Возвращает строку, полученную из Len символов строки S начиная с позиции Pos. Если Pos больше, чем длина строки S то возвращается пустая строка. Если Pos + Len больше, чем длина строки S то возвращаются только символы, принадлежащие строке S.

3.7. Функция LENGTH.

Синтаксис:

LENGTH(S:String):Integer;

Возвращает длину строки S.

3.8. Функция POS.

Синтаксис:

POS(Pattern,Sourse:String):Integer;

Возвращает номер символа, начиная с которого Pattern входит в Sourse. Если вхождения нет, то возвращается 0.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: