Хелпикс

Главная

Контакты

Случайная статья





Операции со строками



2.2 Операции со строками

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

- строковых констант;

- строковых переменных;

- знаков операций;

- указателей процедур;

- указателей функций.

Над строковыми данными допустимо выполнять операции сцепления и операции отношения. Операции сцепления (+) применяются для сцепления нескольких строк в одну результирующую строку, длина которой не должна превышать 250 символов.

Например, выражение

`Процессор ` + ` Intel ` + ` Celeron ` + ` 1.7/20 GHz`

дает результат `Процессор Intel Celeron 1.7/20 GHz`,

а выполнение операторов

              STR1 := `Группа студентов `;

              STR2 := `ФК- 418`;

              STR3:= STR1+STR2;

дает строку `Группа студентов ФК- 418`.

Такой же результат можно получить и так

    STR3:= STR1+`ФК- 418`.

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

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

Результат выполнения операций отношения над строковыми данными всегда имеет булевский тип (boolean), и равен TRUE, если выражение истинно, и FALSE, если выражение ложно.

Например,

       Выражение                        Результат

    `COM1` < `KOM2`                                      TRUE

    `DOS1.0` > `DOC1.0`                                  TRUE

    `АККОРД` < `AKKORD`                           FALSE

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

Если строки имеют различную длину. Но в общей части символы полностью совпадают, считается, что более короткая строка меньше.Для присваивания строковой переменной результата строкового выражения используется оператор присваивания (:=).

Например,     STR10:= `Название факультета`;

                       STR11:= STR10 + `ФЭМФ`;

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

Например,

Описание                            Строковое выражение           Получаемое значение

переменной А                                                                          переменной А

A : STRING [14];               A := `Группа ФК-418`;               `Группа ФК-418`

A : STRING [9];                 A := `Группа ФК-418`;               `Группа ФК`

A : STRING [6];                 A := `Группа ФК-418`;               `Группа`

В одно выражение допускается включать операнды строкового и литерного (CHAR) типа. Если при этом литерной переменной присваивается значение строкового типа, фактическая длина строки должна быть равна единице, иначе возникает ошибка выполнения. Например,

VAR LITERA : CHAR;

ST1, ST2: STRING [12];

BEGIN

LITERA := `A`;

ST1 := ‘КЛАСС ’;

ST2 := ST1 + LITERA; {Дает результат « КЛАСС А»}

ST1 := ‘B’;

LITERA := ST1;

ST2 := ‘B2’;

LITERA := ST2; {Ошибка, т.к. литерной переменной нельзя присваивать значения длиной более одного символа}

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

    STR5 := ‘Специальность ФК’;

выражение STR5[1] дает обращение к первому символу, а выражение

    STR5[15] + STR5[16]

дает значение «ФК».

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

Замечание.

При вводе и обработке строковых данных кроме непосредственного указания входящих в эти строки символов для обозначения символов можно использовать соответствующие им ASCII коды. В этом случае перед числом, обозначающим код ASCII символа, необходимо поставить знак #. Таким образом можно в качестве элементов строк задавать и символы, не обозначенные на клавиатуре.

Например

    VAR ST1: STRING [32];

    BEGIN

              ST1:= ‘TEKST’ + ‘ ‘ + #3;

Переменной ST1 будет присвоено значение   

              ‘TEKST ♥’

Фрагмент таблицы обмена информацией ASCII CARACTER CODE CARD приведен в Приложении А.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.