Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Comline/1

Предикат comline считывает параметры командой строки при вызове

программы типа .EXE из ДОС; вот его формат:

comline(DosCommandLine) /* (o)*/

Приведенный ниже пример CH16EX03.PRO применяет редактор, который

можно вызвать из ДОС, причем имя редактируемого файла задается в качестве

параметра командной строки.

/* Program CH16EX03.PRO -- Редактор */

predicates

extend (string, string)

clauses

extend(S,S) :-concat (_,".pro",S),!.

extend(S,S1) :-concat (S,".pro",S1).

goal

comline(X),

/*must be compiled to. EXE to work correctly*/

extend(X,X1),

file_str(X1,S),

makewindow(1,23,8, "EDITOR", 0,0,43,80),

edit(S,S1,"","","",0,"",1,0,1,1,_,Ret),

removewindow,

Ret><1,1,

file_str(X1,S1).

Если программа откомпилирована в загрузочный модуль, то можно обра-

титься к приведенному выше редактору и отредактировать файл, MYFILE.PRO с

помощью команды ДОС:

>CH16EX03 myfile.PRO

Операции на уровне бит

Турбо Пролог включает шесть предикатов для битовых операций: bitand,

bitnot, bitxor, bitleft и bitright. Эти предикаты имеют по одной модели

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

нотации.

Bitnot/2

bitnot выполняет функции побитового логического 'НЕ'.

bitnot(X,Z) /* (i,o) */

Если Х связано с целой величиной, Z будет связано с результатом сле-

дующей операции: Х представляется в виде 16 разрядного двоичного числа, а

затем к каждому из разрядов применяется логический оператор 'НЕ', имеющий

вид:

--------------------

Operator X Z

--------------------

bitnot 1 0

0 1

--------------------

,

Bitand/3

Этот предикат выполняет побитно логическую операцию 'И'. Он имеет

вид:

bitand(X,Y,Z) /* (i,i.o) */

Если X и Y связаны с целыми числами, Z будет связано с результатом

следующей операции: X и Y представляются в виде 16-разрядных двоичных чи-

сел, а затем каждому разряду числа Z присваивается значение результата

логической перации 'И', примененной к соответствующим разрядам X и Y.

Схема операции 'И':

--------------------

Operator X Y Z

--------------------

bitand 1 1 1

1 0 0

0 1 0

0 0 0

--------------------

Bitor/3

Этот предикат выполняет побитовое логическое 'ИЛИ'.

bitor(X,Y,Z) /* (i,i,o) */

Выполнение процедуры происходит так: числа X и Y преобразуются к

16-разрядному двоичному виду, затем число Z формируется как результат по-

разрядного применения к X и Y побитового логического 'ИЛИ'.

---------------------

Operator X Y Z

---------------------

bitor 1 1 1

1 0 1

0 1 1

0 0 0

---------------------

Соседние файлы в папке Документация