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

9. Оголошення процесів

Імена можуть бути дані й цілим процесам за допомогою зарезервованого слова PRОС. Ці імена вводяться у формі:

PROC ім'я_процесу =

тіло іменованого процесу:

Тут ім'я_процесу - це ім'я процесу. Закінчується опис процесу двокрапкою. Тепер, коли компілятор зустріне це ім'я в програмі, замість нього буде підставлений відповідний фрагмент програми, що реалізує цей процес. Звичайно, дане ім'я повинне бути оголошене у відповідній області видимості визиваючих процесів. Слід зазначити, що в мові Оккам відсутня можливість рекурсивного визначення процесів.

При іменуванні процесів можна використати список формальних параметрів, що включається між іменами процесів і знаком = і заключається в круглі дужки. При виклику іменованого процесу фактичні параметри повинні позиційно відповідати формальним. Спосіб передачі параметрів у процес визначається одним із зарезервованих слів VALUE, VAR або CHAN, які містяться перед списком відповідних формальних параметрів.

Зарезервоване слово VALUE позначає спосіб передачі параметрів за значенням (аналогічно передачі параметрів за значенням у мові Паскаль). При описі формального параметра за допомогою ключового слова VALUE фактичний параметр трактується як вираз, значення якого повинне бути визначене перед входом у даний іменований процес. Це значення копіюється в деякий локальний осередок процесу, і подальші операції всередині процесів, у яких бере участь формальний параметр, описаний як VALUE, відбуваються тільки із цим осередком. Звідси ясно, що формальні параметри, передані за значенням, не можуть бути вихідними параметрами описуваного процесу.

Ключові слова VAR і CHAN позначають спосіб передачі параметрів по імені, тобто відповідні формальні параметри аналогічні перемінними-змінними в мові Паскаль. Фактичні параметри в цьому випадку трактуються як адреси комірок пам'яті, глобальних для даного процесу. Природно, що такий спосіб передачі параметрів дозволяє використати фактичні параметри, як для вхідних, так і для вихідних даних процесу.

При оголошенні списку формальних параметрів однієї природи відповідне зарезервоване слово, що позначає способи передачі параметрів, може стояти тільки перед першим параметром списку.

Масиви варто передавати як параметри за допомогою імені масиву й пари квадратних дужок після нього без вказівки його розміру. Спосіб передачі масивів в Оккам-програмах дозволяє використати ті самі іменовані процеси з масивами різних розмірів.

Як уже було сказано вище, тіло іменованого процесу буде підставлено Оккам-компілятором замість імені процесу, що зустрівся в тексті програми. При цьому фактичні параметри іменованого процесу будуть позиційно відповідати його формальним параметрам. Наприклад:

PROC not1 (VALUE a, VAR z) =

z := NOT a:

VAR bit:

SEQ

... - деякі дії

notl (bit + l, bit)

... - інша частина програми

У розглянутому фрагменті програми змінної bit привласнюється побітове заперечення виразу bit + 1. Існує інший підхід до рішення цього завдання:

PROC notl (CHAN a, z) =

VAR buffer:

SEQ

a ? buffer

z ! NOT buffer:

CHAN comms1, comms2:

PAR

... - деякі дії

not1(comms1, comms2)

... - інша частина програми

У цьому прикладі як параметри іменованого процесу використовуються канали. Це обставина якісно відрізняє іменовані процеси від звичайних процедур.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]