Программа на языке ОККАМ состоит из объявлений, присваиваний и ввода/вывода последовательного и параллельного.
Для организации последовательных процессов используется ключевое слово SEQ. После 2-х пробелов идет перечисление последовательно выполняемых процессов. Выполнение параллельных процессов – PAR. Еще есть параллельное выполнение процессов – ALT.
Например:
SEQ
a:=1
b:=2
Это означает, что сначало а будет присвоено единица, а только потом b будет присвоено 2.
PAR
a:=1
b:=2
Здесь неизвестно какое присваивание будет первым(может одновременно, может с опозданием), но известно, что тело этого цикла закончится, когда выполнится 2 присвоения.
Пример: драйвер оператора
У нас будет 3 канала:
CHAN OF BYTE key // канал, откуда поступают нажатия от клавиш
клавиатуры
CHAN OF BYTE scr // канал вывода на экран
CHAN OF BYTE in, out // каналы целых чисел
Нарисуем схему, которую хотим реализовать. То есть у нас имеется драйвер клавиатуры, драйвер экрана, как некие процессы и имеется редактор, который вводит с клавиатуры и выводит на экран.
Вот примитивная схема, которая позволит организовать диалог с оператором.
Код этой программы следующий: параллельно запускается процесс редактора. Ему в качестве параметра передаются 2 канала: входной и выходной. Далее запускается драйвер клавиатуры, которому передается канал от оборудования и входной канал. И запускается 3 канал, который получает результат обработки данных редактором. Эти процессы могут тожеЮ, в свою очередь, порождать процессы: например редактор может порождать процесс, занимающийся формированием какого-нибудь окна.
PAR
edt(in,out)
key.drv(key,in)
scr.drv(out,scr)
