Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Файлы и разделы базы данных




98. Если нумеровать потомков каждого узла дерева слева направо, то можно для каждого узла составить его описание (см. при-мер). В разделе БД хранится терм представленный в виде совокупности описаний узлов. Преобразовать описание в структуру Пролога.

Аргументы: имя раздела БД (имя структуры);
структура.

?- recorded(tst,X,_).
X = 1:f ->;
X = 1:1:a ->;
X = 1:1:1:m ->;
X = 1:1:2:k ->;
X = 1:1:2:1:v ->;
X = 1:2:r ->;
X = 2:n ->;
X = 2:1:i ->;
X = 2:1:1:d ->;
X = 2:1:2:e ->;
X = 2:1:3:z ->;
X = 3:o ->;
no
?- pred(tst,X).
X = tst(f(a(m,k(v)),r),n(i(d,e,z)),o)
yes
?-

99. Растровое изображение хранится в дисковом файле формата PPM (см. приложение В). Построить зеркальное отражение исходного изображения. Результат сохранить в новом файле.

Аргументы: имя исходного файла;
имя нового файла.

?- pred(’sample.ppm’,’new.ppm’).
yes
?-

 

100. В разделе БД хранится терм в графическом представлении. Преобразовать его в структуру Пролога. Символы псевдографики см. в приложении В.

Аргументы: имя раздела БД;
структура.

?- recorded(test,X,_).
X = a ->;
X = ├─f ->;
X = │ ├─a ->;
X = │ │ ├─m ->;
X = │ │ └─k ->;
X = │ │ └─v ->;
X = │ └─r ->;
X = ├─n ->;
X = │ └─i ->;
X = │ ├─d ->;
X = │ ├─e ->;
X = │ └─z ->;
X = └─o ->;
no
?- pred(test,X).
X = a(f(a(m,k(v)),r),n(i(d,e,z)),o)
yes
?-

101. Растровое изображение, хранится в дисковом файле формата PPM (см. приложение В). Преобразовать исходное цветное изображение в черно-белое (в градациях серого). Результат сохранить в новом файле. Для пересчета цветовых координат пикселя (R, G, B) к яркости можно воспользоваться формулой L = 0.3 R + 0.59 G + 0.11 B.

Аргументы: имя исходного файла;
имя нового файла.

?- pred(’sample.ppm’,’new.ppm’).
yes
?-

 

102. В разделе БД хранится текст на русском языке. Каждый терм, хранящийся в разделе, представляет собой предложение на русском языке. Осуществить форматирование текста, переписав его в новый раздел БД. Форматирование производится путем разбиения всего текста на строки длиной, не превышающей заданную ширину страницы (переносы расставляютя по правилам русского языка).

Аргументы: имя раздела БД с исходным текстом;
ширина страницы (в знаках);
имя раздела БД с отформатированным текстом.

?- recorded(test1,X,_).
X = Впрочем, был еще и повод. ->;
X = Возможно, главный. ->;
X = Его сложно объяснить в двух словах, мимоходом. ->;
X = И чем ближе к концу моего рассказа, тем сложнее. ->;
no
?- pred(test1,46,test2).
yes
?- recorded(test2,X,_).
X = Впрочем, был еще и повод. Возможно, главный. ->;
X = Его сложно объяснить в двух словах, мимоходом. ->;
X = И чем ближе к концу моего рассказа, тем слож- ->;
X = нее. ->;
no
?-

103. В раздел БД загрузить текст программы на языке Паскаль и удалить из него комментарии.

Аргументы: имя файла с исходной программой;
имя раздела БД.

?- pred(’first.pas’,test1).
yes
?-

 

104. В двух разделах БД хранятся произвольные термы. Переписать в третий раздел только те термы, которые содержатся в первом разделе, но не содержатся во втором.

Аргументы: имя первого раздела БД;
имя второго раздела БД;
имя третьего раздела БД.

?- recorded(test1,X,_).
X = a ->;
X = v ->;
X = t ->;
X = 7 ->;
no
?- recorded(test2,X,_).
X = 4 ->;
X = 6 ->;
X = a ->;
X = x ->;
no
?- pred(test1,test2, test3).
yes
?- recorded(test3,X,_).
X = v ->;
X = t ->;
X = 7 ->;
no
?-

105. Растровое изображение хранится в дисковом файле формата PPM (см. приложение В). Подсчитать количество цветов, используемых в данном изображении.

Аргументы: имя файла;
количество цветов.

?- pred(’sample.ppm’,X).
X = 27 ->;
yes
?-

106. В разделе БД содержатся существительные русского языка. Заполнить заданный шаблон (подобие кроссворда, см. приложение В) этими существительными так, что бы каждое слово было использовано всего один раз.

Аргументы: имя раздела БД (словарь);
имя факта (задает шаблон);
список слов (заполняют шаблон).

?- pred(verb,form,X).
X = казак*роман*бокал+короб*замок*канал ->;

yes
?-

107. В разделе БД хранится шаблон кроссворда (см. пример и приложение В). Преобразовать шаблон к виду, пригодному для использования в задаче составления кроссворда.

Аргументы: имя раздела БД;
шаблон (список).

?- recorded(test1,X,_).
X = xxxxx ->;
X = x x x ->;
X = xxxxx ->;
X = x x x ->;
X = xxxxx ->;
no
?- pred(test1,X).
X = [_1,_2,_3,_4,_5]*[_6,_7,_8,_9,_A]*[_B,_C,_D,_E,_F]+
[_1,_11,_9,_12,_5]*[_3,_13,_8,_14,_D]*[_5,_15,_A,_16,_F]
yes
?-

108. В разделе БД содержатся числа. Найти все различные совокупности чисел (как по количеству элементов, так и по составу) такие, что сумма чисел совокупности не превышает заданного числа.

Аргументы: имя раздела БД (множество чисел);
ограничение на сумму (число);
список ссылочных номеров допустимого подмножества.

?- recorded(test1,X,R).
X = 3
R = ~402F0A ->;
X = 2
R = ~402F32 ->;
X = 5
R = ~402F5E ->;
X = 7
R = ~402F20 ->;
X = 2
R = ~402F14 ->;
no
?- pred(test1,5,X).
X = [~402F0A]->;
X = [~402F32]->;
X = [~402F5E]->;
X = [~402F14]->;
X = [~402F0A,~402F32]->;
X = [~402F0A,~402F14]->;
X = [~402F32,~402F14]->;
no
?-

109. Растровое изображение хранится в дисковом файле формата PPM (см. приложение В). Произвести земену цвета, указанного во втором аргументе, на цвет, указанный в третьем аргументе. Результат сохранить в новом файле.

Аргументы: имя исходного файла;
заменямый цвет; новый цвет
имя нового файла.

?- pred(’sample.ppm’,(32,120,200),(0,0,0),’new.ppm’).
yes
?-

 

110. Дана матрица инцидентности графа (см. приложение В). Сформировать раздел БД так, чтобы каждой вершине графа соответствовал свой терм БД, являющийся списком ссылочных номеров термов, соответствующих тем вершинам графа, которые инцидентны данной вершине графа. Для примера диалога в среде интерпретатора использованы граф и матрица инцидентности из приложения В.

Аргументы: матрица инцидентности;
имя раздела БД.

?- pred([[1,0,0,1],[1,1,0,0],[0,1,1,0],[0,0,1,1]],m).
yes
?- recorded(m,X,R).
X = [~402F0A,~402F32]
R = ~402F14 ->;
X = [~402F14,~402F5E]
R = ~402F0A ->;
X = [~402F0A,~402F32]
R = ~402F5E ->;
X = [~402F14,~402F5E]
R = ~402F32 ->;
no
?-

 

 


ЛИТЕРАТУРА

1. Братко И. Алгоритмы искусственного интеллекта на языке PROLOG. 3-е изд. / Пер. с англ. – М.: Издательский дом «Вильямс», 2004. – 640 с.

2. Братко И. Программирование на языке Пролог для искусственного интеллекта. / Пер. с англ. – М.: Мир, 1990. – 560 с.

3. Шрайнер П.А. Основы программирования на языке Пролог: курс лекций: учебное пособие – М.: Интернет-университет информационных технологий, 2005. – 176 с.

4. Малпас Дж. Реляционный язык Пролог и его применение. / Пер. с англ. / Под ред. В.Н. Соболева. – М.: Наука, 1990. – 464 с.

5. Метакидес Г., Нероуд А. Принципы логики и логическое программирование. / Пер. с англ. под ред. к.ф.м.н В.А. Захарова и акад. В.А. Садовничего. – М.: Изд-во «Факториал», 1998. – 288 с.

6. Стерлинг Л., Шапиро Э. Искусство программирования на языке Пролог. / Пер. с англ. – М.: Мир, 1990. – 235 с.

7. Стобо Д.Ж. Язык программирования Пролог. / Пер. с англ. – М.: Радио и связь, 1993. – 368 с.

8. Хоггер К. Введение в логическое программирование. / Пер. с англ. – М.: Мир, 1988. – 348 с.

9. The Arity/Prolog compiler and interpreter. Version 6.1. Arity Corporation Damonmill Square Concord, Massachusetts 01742, 1992, Arity Corporation. – 444 с.

 


Приложение А

Подготовка к работе

Версия языка Пролог Arity/Prolog32 распространяется разработчиком без специализированной программы для установки программного обеспечения. Это в большинстве случаев не вызывает каких-либо трудностей. Однако имеет смысл описать короткую процедуру по настройке этой версии языка в ОС Windows XP для обеспечения удобной работы с интерпретатором. Большая часть инструкции представляет собой стандартный набор действий по настройке консольного приложения для запуска в среде Windows XP.

Шаг 1.

Разархивировать штатными средствами операционной системы архив с дистрибутивом в выбранную Вами папку. Например, это может быть папка C:\Program Files\Arity32.

Шаг 2.

К системной переменной PATH добавить путь к исполняемым файлам Пролога C:\Program Files\Arity32\bin.

Шаг 3.

Для ускорения доступа к интерпретатору можно создать ярлык на рабочем столе (только для файла api.exe).

Шаг 4.

Настройка ярлыка.

В контекстном меню для ярлыка выбирается пункт «Свойства» и далее в появившемся окне диалога производятся следующие действия:

ü на закладке «Шрифт» выбирается шрифт для использования – Lucida Console (этот выбор обеспечивает корректное отображение символов русского языка и псевдографики);

ü на той же закладке выбирается удобный размер шрифта (исходя из индивидуальных предпочтений);

ü на закладке «Расположение» следует установить ширину в 80 (символов), а высоту в 25 (строк) для буфера и размера экрана.


Приложение Б

Предикаты Arity/Prolog32

A

 

аbolish(+Name/Arity)

Удаляет из базы данных все фразы с заданными именем Name и арностью Arity.

abort(+Code)

Производит переход к предикату restart. Если не имеется предиката restart, то прекращается выполнение откомпилированной программы, а для интерпретируемой программы осуществляется возврат в интерпретатор.

arg(+N,+Term,-Value)

Унифицирует Value с N -ым аргументом терма Term.

arg0(+N,+Term,-Value)

Унифицирует Value с N +1-ым аргументом терма Term.

argrep(+Term,+N,+Arg,-Newterm)

Заменяет N -ый аргумент в терме на Arg и унифицирует результат с Newterm.

assert(+Clause)

Добавляет фразу к предикату. Эквивалентен assertz.

assert(+Clause,+N)

Добавляет фразу Clause к предикату в качестве N -ой фразы.

asserta(+Clause)

Добавляет фразу Clause к предикату в качестве первой фразы.

assertz(+Clause)

Добавляет фразу Clause к предикату в качестве последней фразы.

atom(?X)

Согласуется, если X является атомом.

atom_string(?Atom,?String)

Преобразует атом в строку или строку в атом. Этот предикат необходим только для совместимости с предыдущими версиями Arity/Prolog. В Arity/Prolog32 строки – это то же самое, что и атомы и, как следствие, этот предикат определяется следующим образом: atom_string(X, X):- string(X).

atomic(?X)

Согласуется, если X является атомарным (простым) термом.

B

 

bagof(?Term,+Spec,-Bag)

Spec является либо целью Goal, либо термом вида Var^Spec, который указывает на то, что Var – это свободная переменная. Bag конкретизируется неупорядоченным списком экземпляров Term, каждый из которых является решением цели Goal.

betweenb(+BTree,?Key1,?Key2,?Relation1,?Relation2,?Key,?Term)

Возвращает термы из b-дерева, располагающиеся между Key1 и Key2. Аргументы Relation1 и Relation2 определяют необходимость осуществлять возврат крайних (предельных) ключей и могут иметь значения <, >, или =.

betweenkeysb(+BTree,?Key1,?Key2,?Key)

Возвращает термы из b-дерева, располагающиеся между Key1 и Key2.

bit_count(+Int,-Count)

Возвращает количество Count битов в целом числе Int, которые равны единице.

bit_lit(+Bit,+Int)

Согласуется, если бит с номером Bit равен 1 в целом числе Int. Биты нумеруются с последнего значащего бита, начиная с номера 0.

bit_unlit(+Bit,+Int)

Согласуется, если бит с номером Bit равен 0 в целом числе Int. Биты нумеруются с последнего значащего бита, начиная с номера 0.

break

Запускает рекурсивный цикл интерпретатора. При очередной рекурсии запрос будет иметь на один знак вопроса больше:?- затем??- затем???-, и т.д. Вы можете выйти из рекурсивного цикла интерпретатора, используя комбинацию клавиш Ctrl-Z.

btree_count(+Btree,-/+Count)

Возвращает количество ключей Count в b-дереве Btree.

C

 

call(+P)

Обращается к интерпретируемой цели P и согласуется, если согласуется P.

call(+A,+P)

Обращается к интерпретируемой цели P и согласуется, если согласуется P, используя адрес A структуры, сформированный путем обращения к evalAddress/2.

case(+[A1 -> B1, A2 -> B2,...|C])

Выполняет B1, если согласуется A1, иначе выполняет B2, если согласуется A2, и т.д. Если не согласуется ничего, то выполняет C.

case(+[A1 -> B1, A2 -> B2,...])

Выполняет B1, если согласуется A1, иначе выполняет B2, если согласуется A2, и т.д. Если не согласуется ничего, то сам case согласуется.

chdir(?Path)

Изменяет или возвращает текущую директорию Path.

chmod(+Filename,?Attributes)

Изменяет или возвращает байт-атрибут Attributes файла Filename.

clause(+Head,-Body)

Унифицирует Head и Body с заголовком и телом фразы соответственно.

close(+Handle)

Закрывает файл, заданный идентификатором потока Handle.

cls

Очищает текущее окно и перемещает курсор в его верхний левый угол.

code_world(?Old,?New)

Унифицирует имя текущего кодового мира с Old и затем изменяет его на New.

command_string(-X)

Возвращает аргументы командной строки в X, включая произвольное количество пробелов между командой и первым аргументом. Формат этой строки зависит от операционной системы.

compare(-Comp,+T1,+T2)

compare(-Comp,+T1,+T2,+Case)

Сравнивает термы T1 и T2 в соответствии со стандартным порядком сравнения и унифицирует Comp с результатом сравнения. Результатом сравнения является =, <, или >. Аргумент Case можно использовать для придания сравнению контекстной чувствительности: 0 – наличие контекстной чувствительности; 1 – отсутствие таковой.

concat(+String1,+String2,-Result)

Соединяет две строки или атома и возвращает новую строку в Result. Может быть использован ASCII-код для строки, состоящей из одного символа.

concat(+[String1,String2,...], -Result)

Соединяет две или более строки или атома и возвращает новую строку в Result. Может быть использован ASCII-код для строки, состоящей из одного символа.

consult(+Filename)

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

create(-Handle,+Filename)

Создает и открывает для записи новый файл и возвращает его идентификатор потока Handle. Если файл Filename уже существует, то новый файл переписывает старый.

create_world(+World_name)

Создает новый мир с заданным именем.

ctr_dec(+Ctr,-X)

Уменьшает значение счетчика Ctr на 1 и возвращает его значение X до уменьшения.

ctr_inc(+Ctr,-X)

Увеличивает значение счетчика Ctr на 1 и возвращает его значение X до увеличения.

ctr_is(+Ctr,-X)

Возвращает текущее значение X счетчика Ctr.

ctr_set(+Ctr,+X)

Устанавливает новое значение X счетчика Ctr.

current_op(?Prec,?Assoc,?Op)

Возвращает через отказ от ответа определения операторов, имеющие силу на данный момент.

current_predicate(?Predicate)

Возвращает через отказ от ответа предикаты, содержащиеся в текущем кодовом мире. Аргумент Predicate может не быть свободной переменной и в этом случае быть либо именем предиката, либо его именем и арностью в виде name/arity.

D

 

data_world(?Old,?New)

Унифицирует имя текущего мира данных с Old и затем делает текущим миром данных New.

date(?date(Year,Month,Day))

Устанавливает системные часы к заданной дате или возвращает текущую дату.

date_day(+date(Year,Month,Day),-WeekDay)

Возвращает день недели заданной даты как целое число между 0 (воскресенье) и 6 (суббота).

dbPartition(-OldPartition,+NewPartition)

Возвращает и устанавливает сегмент базы данных, используемый по умолчанию.

dbsLen(+Term,-Len)

Возвращает длину в байтах строки, которая была бы создана с использованием term2dbs/2 или term2dbcs/4.

debug

debug(+File)

Включает отладчик, изначально переведя его в режим leep. Если задан аргумент File, тогда создается указанный файл и в него производится эхопечать вывода отладчика.

debugger

Обеспечивает отладочную статистику по текущему режиму отладки и отслеживаемым предикатам.

dec(+N,-X)

Уменьшает на 1 целое число N и возвращает в X результат.

defineb(+BTree,+SplitSize,+Uniqueness,+Order)

defineb(+BTree,+SplitSize,+Uniqueness,+Order,+Case)

Задает атрибуты b-дерева.

defineh(+Table_Name,+HashBuckets)

Задает количество корзин хеширования HashBuckets, которое нужно использовать в хеш-таблице Table_Name.

delete(+Filename)

Удаляет заданный файл.

delete_world(+World_name)

Удаляет мир с заданным именем World_name.

directory(+Path,-Name,-Mode,-Time,-Date,-Size)

Возвращает файлы директории Path. Режим Mode является суммой любого сочетания элементов из следующего набора:

ü 1 – только на чтение (read only);

ü 2 – скрытые (hidden);

ü 4 – исключить системные файлы;

ü 16 – директории;

ü 32 – архивные.

disk(?DiskName)

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

display(+Term)

display(+Handle,+Term)

Выводит терм в префиксной польской записи на стандартное устройство вывода или устройство, заданное идентификатором потока Handle.

E

 

eq(?X,?Y)

Определяет, являются ли X и Y одним и тем же объектом данных.

erase(+Ref)

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

eraseall(+Key)

Удаляет все термы, хранящиеся под заданным ключом.

errcode(-OldCode,+NewCode)

Возвращает код сообщения OldCode о самой последней синтаксической ошибке или ошибке ввода/вывода и устанавливает хранящийся код в новое значение NewCode.

expand_term(+Term,-Newterm)

Преобразует терм, построенный согласно системе обозначений DCG-грамматики, в эквивалентный ему терм Пролога.

expunge

Удаляет системные ссылки на удаленные термы базы данных.

F

 

fail

Эта цель никогда не согласуется.

file_list(+Filename)

Сохраняет содержимое базы данных в файл с именем Filename.

file_list(+Filename,+Name/Arity)

Сохраняет фразы с заданным именем и арностью Name/Arity в файл с именем Filename.

fileerrors(?Old,?New)

Разрешает или запрещает сообщения об ошибках ввода/вывода или возвращает текущую установку этого флага. Для того чтобы разрешить сообщения, установите New в on, в противном случае установите New в off.

findall(?Term,+Goal,-List)

Собирает все экземпляры терма Term, при которых цель Goal согласуется, и возвращает эти экземпляры в виде неупорядоченного списка List. Предполагается, что для всех свободных переменных имеет место экзистенциальная квантификация.

float(?X)

Согласуется, если X является вещественным числом.

float_text(?Number,?Text,?Format)

Конвертирует число в строку согласно спецификации, заданной в аргументе Format, или конвертирует строку в вещественное число. Аргументом Format может быть

ü fixed(N) – известный формат с фиксированной точкой без хвостовых пробелов и с N цифрами после десятичной точки;

ü scientific(N) – формат с плавающей точкой и N цифрами после десятичной точки.

flush

Удаляет все символы из буфера клавиатуры.

functor(?Struct,?Name,?Arity)

Возвращает имя структуры и ее арность.

G

 

gc

Сборка мусора. Восстанавливает неиспользуемое стековое пространство.

get(?Char)

get(+Handle,?Char)

Считывает следующий символ со стандартного устройства ввода или из файлового потока с идентификатором Handle, пропуская непечатные символы, и унифицирует код ASCII с Char.

get0(?Char)

get0(+Handle,?Char)

Считывает следующий символ со стандартного устройства ввода или из файлового потока с идентификатором Handle и унифицирует код ASCII с Char. Предикат get0 не пропускает непечатные символы.

get0_noecho(?Char)

Считывает следующий символ со стандартного устройства ввода и унифицирует код ASCII с Char. Предикат get0_noecho не производит эхопечать символа на стандартное устройство вывода.

get_bit(+Bit,+Int,-Value)

Возвращает в Value (либо 0, либо 1) значение указанного бита целого числа.

get_cursor(-Low_scan,-High_scan)

Возвращает текущую форму курсора.

getEnvVar(+Variable,-/+Valve)

Позволяет получить значение переменной окружения (например, PATH). Не согласуется, если не указано имя переменной.

ground(?Term)

Согласуется, если терм Term не содержит свободных переменных, т.е. любой подтерм терма не является свободной переменной.

H

 

halt

Производит выход из интерпретатора или откомпилированного приложения.

halt(+Exit_code)

Производит выход из интерпретатора или откомпилированного приложения с кодом завершения Exit_code.

hard_erase(+Ref)

Удаляет терм базы данных с указанным ссылочным номером. В отличие от erase предикат hard_erase не сохраняет следов удаленных термов.

I

 

ifthen(+P,+Q)

Выполняет цель Q, если согласуется цель P. Если цель P не согласуется, то предикат ifthen согласуется без выполнения цели Q.

ifthenelse(+P,+Q,+R)

Выполняет цель Q, если согласуется цель P, в противном случае выполняет цель R.

in(+Port,?Byte)

Считывает байт из заданного порта ввода/вывода.

inc(+N,-X)

Увеличивает на 1 число N и возвращает результат в X.

instance(+Ref,-Term)

Возвращает терм, связанный с заданным ссылочным номером.

int_text(?Integer,?Text)

Конвертирует целое число в строку или строку в целое число. Если оба аргумента не являются свободными переменными, производит проверку на эквивалентность числа и строки.

integer(?X)

Согласуется, если X является целым числом.

X is E

Оценивает (вычисляет) выражение E и унифицирует результат вычисления с X.

K

 

key(+Key,-Ref)

Возвращает ссылочный номер заданного ключа.

key_count(+Key,-Count)

Возвращает количество термов базы данных, хранящихся под заданным ключом.

keyb(-Ascii,-Scan)

keyb(-Ascii,-Scan,-/+Flags)

Считывает следующий символ с клавиатуры и возвращает его ASCII- и Scan-коды. В случае двух аргументов множество флагов Flags возвращается как сумма произвольного сочетания из следующего набора:

ü 1 – нажата клавиша, правый shift;

ü 2 – нажата клавиша, левый shift;

ü 4 – нажата клавиша control;

ü 8 – нажата клавиша alt;

ü 16 – активен режим scroll lock;

ü 32 – активен режим caps lock;

ü 128 – активен режим вставки.

keyb_peek(-Ascii,-Scan)

keyb_peek(-Ascii,-Scan,-/+Flags)

Считывает следующий символ с клавиатуры и возвращает его ASCII- и Scan-коды и при этом не удаляет символ из буфера. В случае двух аргументов аргумент Flags имеет то же значение, что и в случае предиката keyb.

keys(?Key)

Возвращает имя и арность ключа текущего мира данных. Если указан конкретный ключ Key, то согласуется при наличии указанного ключа в текущем мире данных.

keysort(+L1,-L2)

Сортирует список L1 согласно стандартному порядку сравнения термов. Элементы списка должны иметь вид Key -Value. Дубликаты элементов не удаляются. Отсортированный список возвращается в аргументе L2.

L

 

leash(+Mode)

Устанавливает режим работы с портом. Аргумент Mode может иметь значения full, tight, half или loose.

length(+List,-N)

Возвращает длину N списка List.

list_text(?List,?String)

Конвертирует список символов в строку или конвертирует атом или строку в список символов.

listing

Выводит на стандартное устройство вывода все предикаты текущего кодового мира.

listing(+Name)

listing(+Name/Arity)

listing(+[Name/Arity,Name/Arity])

Для заданного предиката или списка предикатов выводит на стандартное устройство вывода все фразы, его (предикат) или их (предикаты из списка) определяющие.

load_key(+Filename,+Key)

Загружает содержимое файла в базу данных под указанный ключ.

lock

Используется для блокировки возможности использования Ctrl-Break для немедленного завершения программы. Предикат lock добавляет 1 к системному семафору (счетчику блокировок). Должен использоваться совместно с предикатом unlock.

M

 

mkdir(+Path)

Создает новую директорию. Если аргумент Path является полным именем пути (включая имя диска и имена директорий), то директория будет создана так, как это точно указано. Если аргумент Path – это просто имя без указания пути, тогда директория создается в текущей директории.

mth_ref(+Ref,+Dir,-NewRef)

Возвращает либо предыдущий (Dir = -1), либо следующий (Dir = 1) ссылочный номер базы данных для указанного ссылочного номера Ref.

N

 

name(?Atom,?List)

Конвертирует список в атом или конвертирует атом (целое число) в список.

nl

nl(+Handle)

Производит переход на новую строку на стандартном устройстве вывода или в файловом потоке с идентификатором Handle.

nodebug

nodebug(-File)

Выключает отладчик. Если используется аргумент File, то в нем возвращается имя файла, в который производилась эхопечать сообщений отладчика.

nonvar(?X)

Согласуется, если X не является свободной переменной.

nospy(+Name)

nospy(+Name/Arity)

Удаляет точки слежения из указанного предиката.

not(+P)

Не согласуется, если цель P может быть согласована; в противном случае согласуется.

notrace

notrace(-File)

Предикат делает то же самое, что и предикат nodebug.

nref(+Ref,-Next)

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

nth_char(+N,-String,-Char)

Возвращает ASCII-код N -ого от начала строки символа. Нумерация символов в строке начинается с 0.

nth_ref(+Key,+N,-Ref)

Возвращает ссылочный номер N -ого по порядку терма в цепочке термов, хранящихся под указанным ключом.

number(?X)

Согласуется, если X является числом (целым или вещественным).

O

 

op(+Prec,+Assoc,+Op)

Задает старшинство, ассоциативность и имя оператора.

open(-Handle,+Filename,+Access)

Открывает существующий файл. Аргумент Access может иметь значения

ü r – чтение;

ü w – запись;

ü a – добавление;

ü rw – чтение/запись;

ü ra – чтение/добавление;

ü dw – защита от записи;

ü drw – защита от чтения/записи;

ü cn – создание, если такого файла нет;

ü fe – отказ от работы, если файл уже существует;

ü re – замена файла, если уже существует;

ü ni – не наследуется порожденным дочерним процессом.

Если указывается более чем один режим доступа, нужно использовать список, например, режим чтения с защитой от записи [r,dw].

P

 

p_open(-/+Handle,+Filename,+Access)

Открывает файл с заданным именем Filename. Если такого файла нет в текущей директории, p_open производит поиск в директориях, указанных в переменной окружения path файла autoexec.bat.

p_open(-Handle,+Filename,+Type,+Pathvar)

Открывает файл с заданным именем Filename. Pathvar позволяет включить такие переменные пути как include, help или path.

pfname(+FileName,?/+Prefix,?/+Name,?/+Extension,?/+HasExt)

Разбирает имя файла на компоненты его пути: префикс, имя и расширение. HasExt – признак наличия расширения и может быть равен 121 или 110 (ASCII-коды символов y и n).

pref(+Ref,-Prev)

Возвращает ссылочный номер предыдущего терма цепочки термов.

put(+Char)

put(+Handle,+Char)

Выводит символ на стандартное устройство вывода или файл с дескриптором Handle.

R

 

randomize(+Seed)

Переустанавливает генератор случайных чисел. Аргумент Seed является целым числом.

read(-Term)

read(+Handle,-Term)

Считывает терм со стандартного устройства ввода или файла с дескриптором Handle.

read_ascib(+Handle,+Text)

Считывает текстовое поле из файла с дескриптором Handle; длина поля указывается в первом байте, считываемом из файла.

read_asciw(+Handle,+Text)

Считывает текстовое поле из файла с дескриптором Handle; длина поля указывается в первом слове (16 битах) считываемых, из файла.

read_asciz(+Handle,+Text)

Считывает «заканчивающееся нулем» текстовое поле из файла с дескриптором Handle.

read_asciz_field(+Handle,+Width,+Text)

Считывает «заканчивающееся нулем» текстовое поле заданной ширины из файла с дескриптором Handle.

read_float(+Handle,+Float)

Считывает следующие 8 байт из файла с дескриптором Handle как вещественное число.

read_int8(+Handle,+Integer)

Считывает следующие 8 бит из файла с дескриптором Handle как целое число.

read_int16(+Handle,+Integer)

Считывает следующие 16 бит из файла с дескриптором Handle как целое число.

read_int32(+Handle,+Integer)

Считывает следующие 32 бита из файла с дескриптором Handle как целое число.

read_line(+Handle,-Line)

Считывает строку файла с дескриптором Handle.

read_string(+MaxLength,-String)

read_string(+Handle,+MaxLength,-String)

Считывает строку из MaxLength символов либо со стандартного устройства ввода, либо из файла с дескриптором Handle.

reconsult(+Filename)

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

record_after(+Ref,?Term,-Newref)

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

record_before(+Ref,?Term,-Newref)

Добавляет терм в цепочку до терма с ссылочным номером Ref и возвращает ссылочный номер присвоенный добавленному терму.

record_visi(+Goal,+Type,+Offset)

Обеспечивает низкоуровневый доступ к таблице видимости. Type может иметь следующие значения: 1 – prolog, 2 – eval, 3 – evalpost, а Offset – это адрес предиката. Для того чтобы удалить определение видимости, установите Type=0.

recorda(+Key,?Term,-Ref)

Вставляет терм в начало цепочки термов и возвращает ссылочный номер, назначенный добавленному терму.

recordb(+BTree,+Sort_Key,+Term)

Записывает терм в b-дерево.

recorded(+Key,?Term,-Ref)

Возвращает через поиск с возратом термы и связанные с ними ссылочные номера, хранящиеся под заданным ключом.

recorded(+Key,+Dir,?Term,-Ref)

Возвращает через поиск с возратом термы и связанные с ними ссылочные номера, хранящиеся под заданным ключом. Порядок поиска задается с помощью аргумента Dir: 1 – прямой; 0 – обратный.

recorded_nth(+Key,+N,-Term,-Ref)

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

recorded_ref(+Ref,+Dir,?Term,-Ref)

Возвращает через поиск с возвратом термы и связанные с ними ссылочные номера, хранящиеся до или после терма с указанным ссылочным номером. Порядок поиска задается с помощью аргумента Dir: 1 – прямой; 0 – обратный.

recorded_terms(+Key,?Match,-Terms)

Возвращает в списке все термы, хранящиеся под ключом, которые унифицируются с термом Match.

recorded_tro(+Key,?Term,-Ref)

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

recordh(+Table_name,+Sort_key,+Term)

Записывает терм в хэш-таблицу.

recordz(+Key,?Term,-Ref)

Вставляет терм в конец цепочки термов и возвращает ссылочный номер, назначенный добавленному терму.

ref(?X)

Согласуется, если X является ссылочным номером базы данных.

refPartition(+Ref,-Partition)

Возвращает раздел (partition) базы данных, в котором хранится терм с указанным ссылочным номером.

removeallb(+BTree)

Удаляет b-дерево.

removeallh(+Table_name)

Удаляет хэш-таблицу.

removeb(+BTree,+Sort_key,?Term)

Удаляет терм из b-дерева. Если Term является свободной переменной, тогда удаляется первый терм под Sort_key.

removeb(+BTree,+Sort_key)

Удаляет все термы из b-дерева, которые связаны с указанным Sort_key.

removeh(+Table_name,+Sort_key,?Term)

Удаляет терм из хэш-таблицы. Если Term является свободной переменной, тогда удаляется первый терм под Sort_key.

rename(+Filename,+NewName)

Изменяет имя файла.

repeat

Всегда согласуется (в том числе и тогда, когда обнаруживается в ходе поиска с возвратом).

replace(+Ref,+Term)

replace(+Ref,+Term,-NewRef)

Заменяет терм, имеющий указанный ссылочный номер, термом, заданным в аргументе Term. В версии с тремя аргументами, NewRef будет тем же самым что и Ref до тех пор, пока не потребуется сменить страницу базы данных. В этом случае NewRef будет новым ссылочным номером, принадлежащим новой странице.

replaceb(+BTree,+Sort_key,+Old_term,+New_term)

Заменяет терм, хранящийся в указанной позиции в b-дереве.

replaceh(+Hashtable,+Key,?Term0,+Term)

Если Term0 хранится в хэш-таблице под заданным ключом, то он заменяется термом Term.

reset_op

Возвращает определения операторов к значениям, принятым по умолчанию.

resetspy

Очищает все точки слежения.

restore

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

restore(+Name)

Восстанавливает базу данных, заданную именем Name.

retract(+Clause)

Удаляет первое вхождение указанной фразы из базы данных.

retrieveb(+BTree,?Sort_key,?Term)

Возвращает терм из b-дерева.

retrieveb_keys(+BTree,-Keys)

Возвращает все ключи Keys из b-дерева в виде списка.

retrieveb_nth(+BTree,+N,-Sort_key)

Возвращает N-ый ключ из b-дерева.

retrieveb_terms(+BTree,-Terms)

Возвращает все термы Terms из b-дерева в виде списка.

retrieveb_terms(+BTree,+Sort_key,-Terms)

Возвращает все термы Terms, связанные с указанным Sort_key, из b-дерева в виде списка.

retrieveh(+Table_name,?Sort_key,?Term)

Возвращает терм из хэш-таблицы.

rmdir(+Path)

Удаляет директорию.

S

 

save

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

save(+Name)

Сохраняет внутреннюю базу данных в файл с заданным именем Name.

scan_code(+Ascii,-Scan)

Возвращает Scan-код, связанный с кодом Ascii.

screen_height(?/+Old,?/+New)

Позволяет изменить высоту экрана (в строках) к одному из возможных значений – 25, 43 (как EGA, так и VGA), или 50 (только VGA).

searchPath(+PathSpec,+FileSpec,+Flags, -/+CompleteFileSpec)

Позволяет производить поиск файла на диске. Аргумент PathSpec указывает как следует искать. Если Вы хотите узнать значение переменной окружения, вам нужно установить второй бит флага. Имеют значение следующие биты флага Flag: 1 – поиск в текущей директории; 2 – PathSpec является переменной окружения; 4 – поиск директории, содержащей EXE-файл приложения.

see(+Filename)

Открывает файл для чтения и делает его текущим устройством ввода.

see_h(+Handle)

Ранее открытый файл с дескриптором Handle становится текущим устройством ввода.

seeing(?Filename)

Возвращает имя файла, который был открыт на чтение с помощью предиката see. Если использовался предикат see_h, то цель seeing не согласуется.

seek(+Handle,+Offset,+Method,-NewLoc)

Перемещает внутренний указатель файла к указанной позиции в файле. Аргумент Offset представляет собой относительную позицию внутри файла в байтах. Method указывает стартовую точку от которой вычисляется смещение Offset, и может быть: bof – началом файла; eof – концом файла или current – текущей позицией.

seen

Завершает ввод из текущего открытого файла и закрывает файл.

set_bit(+Bit,+NewValue,+OldInt,-NewInt,-OldValue)

Устанавливает значение бита в целом числе, возвращая новое целое число и старое значение бита.

set_bits(+OldInt,+Mask,+Data,-NewInt)

Устанавливает в целом числе набор битов, заданный маской Mask, в значения, указанные в аргументе Data.

set_cursor(+Low_scan,+High_scan)

Изменяет форму курсора так, как это задано аргументами Low_scan и High_scan.

set_cursorshape(+Shape)

Позволяет изменить форму курсора к одному из четырех вариантов: 0 – скрытый курсор, 1 – прямоугольник (█), 2 – половина прямоугольника (▄) или 3 – знак подчеркивания (_).

setof(?Term,+Goal,-Set)

Собирает все экземпляры терма Term, при которых согласуется цель Goal, и возвращает их в виде упорядоченного списка без дубликатов (Set).

setup_editor(+Bkgrnd,+Border,+Status,+ROE,+SOE,+Indent)

Изменяет цвета и другие установки редактора Arity/Prolog32.

shell

Позволяет выполнить команды операционной системы из интерпретатора команд. Для возврата в программу (интерпретатор) введите exit. Этот предикат всегда согласуется.

shell(+Command)

Выполняет команду операционной системы и согласуется.

skip(+Char)

skip(+Handle,+Char)

Считывает и пропускает символы со стандартного устройства ввода или файла с дескриптором Handle до тех пор, пока не будет обнаружен символ Char.

sort(+L1,-L2)

Сортирует список L1 по возрастанию, удаляя дубликаты, и возвращает отсортированный список в L2.

sortkey(+Key)

Сортирует термы хранящиеся под ключом базы данных.

spy(+Name)

spy(+Name/Arity)

Специфицирует предикат как точку слежения при отладке.

statistics

Показывает окно, которое демонстрирует всю статистику по использованию системы Arity/Prolog32.

statistics(+Info,-Struct)

Возвращает информацию об использовании системы интерпретатором Arity/Prolog32. Аргумент Info может быть стеком базы данных, локальным стеком, глобальным стеком, trail-стеком, корзиной мусора, версией, edb, кэшем.

stdin(+Filename,+Goal)

Делает указанный файл стандартным устройством ввода при доказательстве указанной цели.

stdinout(+InFile,+OutFile,+Goal)

Делает указанные файлы стандартными устройствами ввода и вывода при доказательстве указанной цели.

stdout(+Filename,+Goal)

Делает указанный файл стандартным устройством вывода при доказательстве указанной цели.

string(?X)

Согласуется, если X является строкой.

string_length(+String,?Length)

Возвращает длину строки. Если Length является целым числом, то согласуется, если это длина строки String.

string_lower(+Text,-Lower)

Преобразует текст Text к эквивалентной строке в нижнем регистре.

string_search(+SubString,+String,-Location)

Производит поиск подстроки в строке и возвращает (в случае успеха) начальную позицию найденного вхождения в аргументе Location. Location является смещением (<

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...