Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
23.05.2015
Размер:
1.7 Mб
Скачать

8.Множество переменных процесса содержит

все переменные, входящие в какой-либо из операторов блок-схемы,

а также переменную atP .

9.Начальное условие процесса совпадает с начальным условием Init блок-схемы.

7.5Пример процесса с передачей сообщений

В этом параграфе мы рассмотрим в качестве примера процесс “буфер”:

сначала мы определим этот процесс в виде блок-схемы, и

затем мы построим по этой блок-схеме представление процесса “буфер” в стандартной форме.

7.5.1Понятие буфера

Пусть n – некоторое положительное целое число.

Под буфером размера n мы в этом параграфе будем понимать систему (называемую ниже просто буфером), которая обладает следующими свойствами.

В буфер можно вводить символы. Символы, введённые в

буфер, можно выводить из буфера.

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

В буфере может одновременно содержаться не более n символов.

187

В каждый момент времени совокупность символов, содержащихся в буфере, представляет собой упорядоченную последовательность

c1, . . . , ck

(0 ≤ k ≤ n)

(7.15)

которая называется содержимым буфера. Число k называется размером содержимого буфера.

Случай k = 0 соответствует ситуации, когда в буфере не содержится ни одного символа, в этом случае мы будем говорить, что буфер пуст.

Если в текущий момент времени содержимое буфера имеет вид (7.15), и k < n, то в буфер можно ввести произвольный символ c, и после выполнения этой операции содержимое буфера примет вид

c1, . . . , ck, c

Если в текущий момент времени содержимое буфера имеет вид (7.15), и k > 0, то из буфера можно вывести символ, расположенный в начале его содержимого (т.е. c1), после выполнения этой операции содержимое буфера примет вид

c2, . . . , ck

Таким образом, в каждый момент времени содержимое буфера представляет собой очередь символов, причём

каждая операция ввода символа в буфер добавляет вводимый символ в конец этой очереди, и

каждая операция вывода символа из буфера

выводит из буфера первый элемент этой очереди, и

удаляет этот элемент из очереди

Очереди, операции с которыми выглядят описанным выше образом, называются очередями типа FIFO (First Input - First Output).

188

7.5.2Представление поведения буфера в виде блок-схемы

Одним из возможных формальных уточнений понятия буфера является процесс Bu ern, описание которого приводится в этом параграфе в виде блок-схемы. В этом процессе

операция ввода символа в буфер представляется действием с именем In, и

операция вывода символа из буфера представляется действием с именем Out.

Процесс Bu ern имеет следующие переменные:

переменная n типа int, её значение не изменяется, оно равно максимальному размеру содержимого буфера

переменная k типа int, её значение равно размеру содержимого буфера в текущий момент времени

переменная q типа string, её значение равно содержимому буфера в текущий момент времени

переменная f типа char, в эту переменную будут записываться вводимые символы при выполнении операции ввода.

Блок-схема, представляющая процесс Bu ern, имеет следующий вид (используемые в этой блок-схеме обозначения были определены в параграфе 7.2.3):

189

'$

start

n > 0

q = ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k = 0

 

 

 

 

 

 

 

 

 

 

 

 

&

 

 

%

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k < n

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

 

 

k > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

In ? f

 

 

?

-

Out ! qˆ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

?

 

 

 

q := q

[f]

 

 

 

 

 

 

 

 

q := q0

 

 

·

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

 

 

?

 

 

 

k := k + 1

 

 

 

 

 

 

 

k := k − 1

 

 

 

 

 

 

 

 

 

 

7.5.3Представление поведения буфера в виде процесса

Для построения процесса Bu er n, который соответствует определённой выше блок-схеме, мы нарисуем точки на её рёбрах:

190

'$

start

n > 0

q = ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

&

 

A

%

 

 

 

 

 

 

 

 

 

 

 

 

-

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k < n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k > 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

s?

 

 

+

 

F

 

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Gs

 

 

?

Hs

 

s?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K

 

 

L

 

 

 

 

 

 

 

 

M

 

N

 

 

 

In

? f

 

s - Out

! qˆ

 

 

 

s

 

 

s?

 

 

 

 

 

 

 

 

 

 

s?

 

s

 

 

q := q

·

[f]

 

 

 

 

 

 

 

q := q0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

O

s?

 

 

 

 

 

 

 

 

 

 

s?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

k := k + 1

 

 

 

 

 

 

k := k − 1

 

 

 

 

 

 

 

 

 

 

 

 

При построении процесса по этой блок-схеме будут удалены точки A, G, H, K и N.

Искомый процесс Bu er n имеет следующий вид:

191