
- •Глава 6. Симула - универсальный процессо-ориентированный язык моделирования
- •Классы и объекты
- •Декларации класса
- •Подклассы
- •Объекты. Создание и средства доступа к атрибутам объекта
- •2.3. Средства доступа е атрибутам объектов
- •Квазипараллельное выполнение
- •Оператор detach (открепить)
- •Оператор resume (возобновить)
- •Выход через «end» объекта
- •Операторы перехода
- •Обработка упорядоченных множеств
- •Планирование процессов. Системный класс simulation
- •Статистические аспекты языка симула
- •Общая структура программы моделирования
- •Программное моделирование работы карьера
- •Описание классов
- •Текст программы
- •Ввод-вывод в симула
- •Понятие текста
- •Text array таблица [1:n];
- •Создание текстовых объектов
- •Процедуры работы с частью текста
- •Процедуры обработки текстов
- •Взаимное преобразование текстовых и арифметических значений
- •Сравнение текстов
- •Организация ввода – вывода
- •Процедуры ввода
- •Процедуры вывода
- •Контрольные вопросы и задания Литература
Процедуры работы с частью текста
Процедура t.sub(i,j) в качестве своего значения дает ссылку на подтекст в тексте t, начиная с i-й литеры длиной j символов, необходимо отметить, что данная процедура не создает новый текстовый объект, а лишь дает возможность работать с частью текста t, как с текстовой переменной.
Необходимо учитывать, что значения параметров i и j не должны выходить за пределы текста t, иначе при выполнении процедуры выдается сообщение об ошибке. Указатель позиции для переменной t остается без изменения.
text t1,t2,t3;
t1 :- ''Симула-67''
t2 :- t2.sub(1,6);
t3 :- t2.sub(8,2);
В этом случае значением переменной t2 есть ''Симула'', а t3 -''67''.
Вторая процедура работы с частью текста strip. Обращение t.strip эквивалентно обращению t.sub(1,n), где n -такое число, что символы текстового значения t в позициях с номерами больше и все пробелы, если t состоит только из пробелов, то выражение t.strip будет иметь значение notext.
text t1,t2;
t1 :- text (''фортран '');
t2 :- t1.strip;
В данном примере значением t2 будет ''фортран''.
Процедуры обработки текстов
Вся работа с текстами осуществляется при помощи ряда встроенных процедур, которые можно рассматривать как атрибуты текстового объекта. Слева от точки при обращении к атрибутам текста указывается ссылка на текстовый объект (имя переменной), справа - имя атрибута.
Процедура length. Значением данной процедуры является число символов в текстовом значении, если текстовое значение равно notext, то значение процедуры будет 0.
text t1; integer n;
t1:- blanks(10);
n := t1.length;
В данном примере значение n равно10.
2. Процедура pos. Результатом процедуры является текущее значение указателя позиции.
text t1; integer k;
t1 :- text(''симула-67'');
k := t1.pos;
Значение k в данном примере равно 1, так как процедура text устанавливает указатель позиции в 1.
Процедура setpos. При исполнении оператора t.setpos(n) указатель позиции принимает значение n, если n меньше 1 или больше длины текста, то указателю присваивается значение t.length+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'.