System := System + (System.Node[i] « System.Node[i + 1])
endf;
System := System + (System.Node[n] « System.Node[1])
В цикле к системе добавляются ребра между первым и вторым узлами, между вторым и третьим узлами, …, между предпоследним и последним узлами. Затем добавляется ребро между последним и первым узлами.
Точно такого же результата можно добиться более короткой записью:
System := System + cycle(Node[1..n]).
Здесь cycle – графовая константа (простой цикл). После выполнения операции получается объединение звезды с простым циклом.
Возможны операции и над рутинами. Поскольку рутина представляет собой множество событий (событийных секций), в которых производится планирование других событий из этого же множества, рутина может быть представлена графом. В этом графе вершины – события, а дуги – операторы планирования событий.
Следовательно, добавление и удаление событий – добавление и удаление вершин; введение и исключение планирования – добавление и удаление дуг. Поэтому, система операций над структурами (графами) пригодна и для обозначения операций над рутинами. Например, удаление события можно записать так:
ControlledGenerator := ControlledGenerator – Repeat;
При удалении события автоматически удаляются и все операторы планирования (schedule (Repeat, ·)), связанные с этим событием. Это, опять же, подобно тому, что происходит в графе при удалении вершины: удаляются все входящие в эту вершину дуги и все исходящие из этой вершины дуги.
На рисунке 9 графически изображена связь между событиями ei некоторой рутины. Около дуг, соответствующих операторам указано значение – второй параметр оператора, задающий период времени, через который должно произойти планируемое событие.
На рисунке 10 изображена та же рутина после удаления из нее события e2 .
Рис. 9
Рис. 10