Определение 2 (процедурное)

stopÏaP&

(stoppable(P))0 = P0 È {stop} &

SKIP, если x=stop

(stoppable(P))/<x>= {

stoppable(P/x), если x ≠ stop

Для последующих процессов управления будут приводиться только процедурные определения, поскольку их теоретико-множественные определения являются достаточно громоздкими.

Функция “reset”.

Действие этой функции определяется процессом resettable(P). Пусть “reset” ÏaP (символ “ reset ” не принадлежит алфавиту процесса P). Тогда процесс resettable(P) может быть определен как процесс, поведение которого определяется процессом P за исключением следующих условий:

(1) “ reset ” Î resettable(P);

(2) символ “reset” появляется в каждом из меню процесса resettable(P);

(3) при активации события “reset” процесс resettable(P) возвращается к начальному состоянию.

Например: resettable(P)/<a, b, reset> = resettable(P)

 

Рис.2. Пример представления процесса resettable(P).

Определение (процедурное).

resetÏaP&

resettable(P) =start(P,P), где

(start(P,Q))0 = P0 È {reset} &

start(Q,Q), если x=reset

(start(P,Q))/<x>= {

start(P/x,Q), если x ≠ reset

 

Функция “back”.

Действие этой функции определяется процессом backtrackable(P). Пусть “back” ÏaP (символ “ back ” не принадлежит алфавиту процесса P). Тогда процесс backtrackable(P) может быть определен как процесс, поведение которого определяется процессом P за исключением следующих условий:

(1) “back ” Î backtrackable(P);

(2) символ “back” появляется в каждом из меню процесса

backtrackable(P);

(3) при активации события “back” процесс backtrackable(P)

возвращается к предыдущему состоянию меню - диалога.

Например: backtrackable(P) / <a, b, back> = backtrackable(P) / < a >

Рис.3. Пример представления процесса backtrackable(P).

Определение (процедурное).

backÏaP&

backtrackable(P) =recover(P,P), где

(recover(P,Q))0 = P0 È {back} &

Q, если x=back

(recover(P,Q))/<x>= {

recover(P/x, recover(P,Q)), если x ≠ back

Функции – переключатели.

Действия функций – переключателей “on” и “off” определяются процессом coroutine(P).

Пусть (aP È aQ) ∩ {off,on} = Æ . Определим процесс coroutine(P,Q) следующим образом:

(1) сначала coroutine(P,Q) стартует как процесс P, затем

(1.1) при активации события “off” действие процесса прерывается для переключения на процесс, который стартует сначала как процесс Q, затем

(1.2) при активации события “on ” действие процесса прерывается для возобновления работы прерванного ранее процесса P с точки последнего прерывания;

(2) дальнейшее поведение процесса coroutine(P,Q) определяется следующим образом:

(2.1) активация “off” переключает выполнение с прoцесса P на процесс Q, продолжая процесс Q с места последнего его прерывания;

(2.2) аналогично п. (1.2).

Поведение процесса coroutine(P,Q) иллюстрируется на следующем ниже рисунке:

Рис.4. Иллюстрация поведения процесса coroutine(P,Q).

 

Данный процесс является важным для моделирования взаимодействующих процессов в меню – диалоговых системах, в системах разделения времени для реализации многозадачного режима, в компиляторах для одновременного обслуживания процессов лексического и синтаксического анализов и т.п..