Объекты и классы объектов. Подклассы, страница 3

Рассмотрим пример. Пусть необходимо описать алгоритм работы некоторой серии микросхем, каждая их микросхем имеет свой алгоритм работы, но и некоторые общие свойства. Опишем класс элемент, являющийся подклассом некоторого системного класса PROCESS. Параметры класса элемент являются количество входов (КВХ) и выходов микросхемы (КВЫХ). Данный класс описывает символьный массив размерности КВХ+КВЫХ и переходит в пассивное состояние (см.3.1), затем должны выполняться правила действий конкретного элемента. И элемент переходит в пассивное состояние до новой активизации. После чего правила действий конкретного элемента повторяются:

PROCESS ‘CLASS’ ЭЛЕМЕНТ (КВХ, КВЫХ);

‘INTEGER’ КВХ, КВЫХ;

‘BEGIN’

‘CHARACTER’ ‘ARRAY’ Х [1; КВХ+КВЫХ];

PASSIVATE;

РАБОТА: ‘INNER’;

PASSIVATE;

‘GO TO’ РАБОТА;

‘END’ ЭЛЕМЕНТ;

Все элементы делятся на два подкласса: комбинированные элементы и элементы типа АВТОМАТ.

Опишем класс АВТОМАТ, являющийся подклассом элемент. В классе автомат мы должны запоминать предыдущее состояние и время изменения сигнала. Для этого в теле класса автомат определяется символьный массив ХОТ размерности КВХ+КВЫХ и массив действительных чисел ТИЗМ размерности КВХ+КВЫХ. Далее идет описание правил действия (‘INNER’). После чего запоминается старый сигнал и время его изменения.

ЭЛЕМЕНТ ‘CLASS’ АВТОМАТ;

‘BEGIN’

‘CHARACTER’ ‘ARRAY’ ХOT [1; КВХ+КВЫХ];

‘ARRAY’ TИЗМ [1; ВХ+КВЫХ];

‘INNER’;

‘FOR’ I:=1 ‘STEP’ 1 ‘UNTIL’ КВХ+КВЫХ

‘DO’

‘IF’ ХОТ [I] ‘NE’ X [I] ‘THEN’

‘BEGIN’

XOT [I]:= X [I];

ТИЗМ [I]:= TIME;

‘END’

‘END’ АВТОМАТ;

Комбинированный элемент инвертор можно описать следующим образом:

ЭЛЕМЕНТ ‘CLASS’ ИНВЕРТОР;

‘BEGIN’

‘INTEGER’ N1, NB;

N1:=01; NB:=02;

‘IF’ Х[N1]:=”0” ‘THEN’;

‘BEGIN’ X [NB]:=”1”; ‘GO TO’ AA; END;

‘IF’ Х[N1]:=”1” ‘THEN’;

‘BEGIN’ X [NB]:=”0”; ‘GO TO’ AA; END;

X [NB]:= “H”;

AA: ‘END’ ИНВЕРТОР;

Классы автомат и инвертор можно описать не пользуясь префиксом класса элемент. Но тогда необходимо описывать правила действия класса элемент.

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

‘CLASS’ А1(Р1); ‘BEGIN’ … ‘END’;

А1     ‘CLASS’ А2(Р2); ‘BEGIN’ … ‘END’;

А2     ‘CLASS’ А3(Р3); ‘BEGIN’ … ‘END’;

  ОБРАБОТКА УПОРЯДОЧЕННЫХ МНОЖЕСТВ

ПРИЛОЖЕНИЕ

Основные конструкции языка АЛГОЛ-60;

1.Описание простых переменных состоит из основного символа 'INTEGER'  или 'REAL'  или 'BOOLEAN', после которого следует список идентификаторов, отделяемых друг от друга запятыми. Список идентификаторов заканчивается символом: (точка с запятой):

'INTEGER'   I, J, K;  'REAL'   A,K; 'BOOLEAN'  L.

2. Описание массивов состоит из описателя типа переменных, входящих в массив, основного символа 'ARREY', списка идентификаторов и списка граничных пар, заключенных в квадратные скобки.

Список граничных пар состоит из одной или более граничных пар, разделенных запятыми.

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

'INTEGER'   'ARREY'   A, B [-1:8,0:9], [1:100];

3. Оператор присваивания.

Оператор присваивания имеет вид:

A1:=A2:=E;

где А1, A2 -переменные (простые или с индексами), E - выражение (логическое или арифметическое). Переменные А1 и А2 должны иметь один и тот же тип.

4. Условный оператор.

Условный оператор представляет собой последовательность следующего вида:

'IF' R THEN' S':

где R - любое логическое выражение, S - произвольный безусловный оператор.

5. Полный условный оператор.