Конспект установочных лекций по комплексному курсу Информатика, Теория информации


Языковые средства для параллельных ходов работы - часть 2


process х;

     ргос р =: ... ;          {объявление процедуры}

     start р name х ;            {начать параллельно протекающий процесс}

     if terminated х            then      {cбop, если процесс не заканчивается}

else terminate х

Пример (поиск в дереве). Пусть заданы тип

node вершин и тип tree

двоичных деревьев с помощью объявления

sort tree = empty j cons(tree left, node

root, tree right).

Пусть задано двоичное дерево t, в котором надо проверить, встречается ли определенная вершина i. В программе будем использовать процедуру suche с заголовком процедуры proc suche = (tree t, node i, var bool z), которая результирующей переменной z присваивает значение true, если в двоичном дереве t имеется вершина, помеченная через i, и значение false в противном случае. Последовательная программа, которая решает поставленную задачу, выглядит следующим образом:

proc suche = (tree t, node i, var bool z):

if  isempty(t)

then    if root(t) == i     then z := true

else var bool zl, zr; suche(left(t), i, zl); suche(right(t), i, zr); z :== zl v zr

else z := false

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




- Начало -  - Назад -  - Вперед -