Рассмотрим пример. Пусть необходимо описать алгоритм работы некоторой серии микросхем, каждая их микросхем имеет свой алгоритм работы, но и некоторые общие свойства. Опишем класс элемент, являющийся подклассом некоторого системного класса 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. Полный условный оператор.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.