Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебно-методическое пособие по Паскалю.doc
Скачиваний:
7
Добавлен:
25.04.2019
Размер:
398.34 Кб
Скачать

6.4 Строки

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

Например:

Type

line = string[25];

Var

mline : line;

...

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

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

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

Например:

Var

str1, str2, st : string[10];

Begin

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

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

st := str1 + str2;

WriteLn(st)

End.

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

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

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

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

Например: 'a' < 'б', т.к. ORD('a') < ORD('б');

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

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

Например:

Var

mline : string;i : integer;

Begin

. .

for i := 1 to length( mline ) do

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

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

. .

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

Для строковых типов данных определены следующие стандартные процедуры и функции:

STR(x[:width[:decimals]];var s:string) - эта функция преобразует численное значение x в его строковое представление s.

VAL(s:string; var x,code:integer) - эта функция преобразует строковое значение s в его численное представление x.

INSERT(source: string; var s: string; index: integer) - эта процедура предназначена для вставки строки SOURCE в строку S, начиная с символа с номером INDEX в этой строке.

DELETE(var s: string; index, count: integer) - эта процедура производит удаление из строки-параметра S подстроки длиной COUNT, начиная с символа с номером INDEX.

CONCAT(s1, [s2,...]: string): string - эта функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина результирующей строки превышает 255 символов, то она усекается до этой длины.

COPY(s: string; index: integer; count: integer): string - эта функция возвращает подстроку, выделенную из исходной строки S, длиной COUNT символов, начиная с символа под номером INDEX.

POS(substr, s: string): byte - эта функция производит поиск в строке S подстроки SUBSTR. Результатом функции является номер позиции подстроки в исходной строке.

LENGTH(s: string): integer - эта функция возвращает текущую длину строки S.

MOVE(var x, y; count: word) - эта функция копирует заданное количество COUNT последовательных байт из источника X в приемник Y.

FILLCHAR(var x; count: word; value) - эта функция заполняет заданное количество COUNT последовательных байт переменной X указанным значением VALUE.

UPCASE(CH) - эта функция возвращает для символьного выражения CH соответствующую заглавную букву; если значением CH является любой другой символ (в т.ч. строчная буква русского алфавита), функция возвращает его без преобразования.