Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 6. Симула - универсальный процессо-ориент...doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
386.56 Кб
Скачать

Процедуры работы с частью текста

Процедура t.sub(i,j) в качестве своего значения дает ссылку на подтекст в тексте t, начиная с i-й литеры длиной j символов, необходимо отметить, что данная процедура не создает новый текстовый объект, а лишь дает возможность работать с частью текста t, как с текстовой переменной.

Необходимо учитывать, что значения параметров i и j не должны выходить за пределы текста t, иначе при выполнении процедуры выдается сообщение об ошибке. Указатель позиции для переменной t остается без изменения.

  1. text t1,t2,t3;

  2. t1 :- ''Симула-67''

  3. t2 :- t2.sub(1,6);

  4. t3 :- t2.sub(8,2);

В этом случае значением переменной t2 есть ''Симула'', а t3 -''67''.

Вторая процедура работы с частью текста strip. Обращение t.strip эквивалентно обращению t.sub(1,n), где n -такое число, что символы текстового значения t в позициях с номерами больше и все пробелы, если t состоит только из пробелов, то выражение t.strip будет иметь значение notext.

  1. text t1,t2;

  2. t1 :- text (''фортран '');

  3. t2 :- t1.strip;

В данном примере значением t2 будет ''фортран''.

Процедуры обработки текстов

Вся работа с текстами осуществляется при помощи ряда встроенных процедур, которые можно рассматривать как атрибуты текстового объекта. Слева от точки при обращении к атрибутам текста указывается ссылка на текстовый объект (имя переменной), справа - имя атрибута.

  1. Процедура length. Значением данной процедуры является число символов в текстовом значении, если текстовое значение равно notext, то значение процедуры будет 0.

  1. text t1; integer n;

  2. t1:- blanks(10);

  3. n := t1.length;

  4. В данном примере значение n равно10.

  1. 2. Процедура pos. Результатом процедуры является текущее значение указателя позиции.

  2. text t1; integer k;

  3. t1 :- text(''симула-67'');

  4. k := t1.pos;

Значение k в данном примере равно 1, так как процедура text устанавливает указатель позиции в 1.

  1. Процедура setpos. При исполнении оператора t.setpos(n) указатель позиции принимает значение n, если n меньше 1 или больше длины текста, то указателю присваивается значение t.length+1.

  1. Процедура more. Значение данной процедуры истинно (true), если t.pos>=1 и t.pos<=t.length, и ложно (false) в противном случае.

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

character a1,b1;

a1:='a';

b1:=a1;

Над символьными переменными определены следующие процедуры: digit и letter.

Значением процедуры digit будет true, если символ является цифрой, и false - в противном случае, значением процедуры letter будет true, если символ является буквой.

Для считывания символов из текста и записи символов в текст используются процедуры getchar и putchar.

Процедура getchar доставляет в качестве своего значения символ, на который указывает текущий указатель позиции. Процедура putchar заменяет символ, на который указывает текущий указатель позиции, каждая из процедур увеличивает на 1 текущий указатель позиции.

text t;

character c;

c := 'ы';

t :- text(''дом'');

t.setpos(2);

t.putchar (c);

c := getchar;

В результате выполнения данной процедуры переменная t получит значение ''дым'', а с - 'm'.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]