Структурированные типы данных: строки. Описание типа, строковые выражения, функции и процедуры

Страницы работы

Фрагмент текста работы

байт расположен в самом начале строки (имеет нулевой номер) и содержит значение текущей длины строки.

Структура размещения строки в памяти:

Пусть N     максимальная длина строки;

L                 текущая длина строки;

А                ячейка памяти.

А                содержит величину текущей длины строки (L).

А+1            ячейка содержит 1 символ строки;

...

А+L            ячейка содержит последний значащий символ строки;

A+L+1

...                незанятые ячейки памяти

А+N

строковые выражения

Выражения, в которых операндами служат строковые данные, называются строковыми.

Строковые выражения состоят из строковых констант, переменных, указателей, функций и знаков операций. Над строковыми данными допустимы операция конкатенации (сцепления) и операции отношения.

Операция конкатенации (+) применяется для сцепления нескольких строк в одну результирующую строку.

Пример.

Stroka1:= 'IBM';         {длина строки 3 символа}

Stroka1:= Stroka1 + 'PC AT';            {длина строки 8 символов}

Помни:

·  Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, все лишние символы справа отбрасываются.

Важнейшее отличие строк от других типов данных заключается в том, что строки могут динамически изменять свою длину.

Операции отношения ( =,  <,  >,  <>,  <=, >= ) проводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операция конкатенации.

Сравнение двух строк происходит по следующим правилам:

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

2.  Если длины сравниваемых строк равны, происходит поэлементное сравнение символов слева направо до первого несовпадающего символа. И та строка считается больше, в которой несовпадающий символ имеет больший номер в таблице ASCII;

Результат выполнения операций отношения над строковыми операндами  всегда имеет булевский тип и принимает значение True, если выражение истинно, и False, если ложно.

Пример.

'dos6.22' < 'Dos6.22'          True

'IBm' > 'IBM'         False

3. Строки считаются равными, если они полностью совпадают по длине и содержат одни и те же символы.

В строковом выражении допускается смешение операндов строкового и литерного типа. Если при этом литерной переменной присваивается значение строкового типа,  длина строки должна быть равна 1,иначе возникает ошибка выполнения.

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

Пример.

Stroka:= 'информатика'

Stroka[1+2]    -           'ф'

Stroka[7]         -           'а'

Запись Stroka[0] дает доступ к нулевому байту, содержащему значение текущей длины строки.

Для обработки строковых данных используются специальные процедуры и функции.

процедуры

Delete (St: string; M, N: byte) - удаление N символов строки St начиная с позиции М. Если М > 255 возникает программное прерывание.

Insert (St1, St2: string; M: byte) - вставка строки St1 в строку St2, начиная с позиции M.

Пример.

St1:= 'IBM AT';

St2:= 'PC';

St3:= Insert (St1, St2, 4)        'IBM PC AT'

Str (A, St: string;) - преобразование числового выражения A в строковый формат и помещение результата в строку St.

После А может записываться формат, аналогичный формату вывода. Если в формате указано недостаточное для вывода количество разрядов, поле вывода автоматически расширяется до нужной длины.

Пример.

Str(1500: 6, St)           '_ _1500'

Val (St: string; A:<число>, Cod: byte) - преобразует значение числа в строковом формате в величину вещественного или целого типа и помещает результат в переменную А. Значение St не должно содержать незначащих пробелов в начале и конце строки. Cod - целочисленная переменная. Если во время преобразования ошибки не обнаружено, значение

Похожие материалы

Информация о работе