Стандартные предикаты обработки списков



В системе Arity Prolog определены следующие предикаты для работы со списками:

· length(L,N)¾ истинен, если N ¾ число элементов в списке L; предикат length(L,N) можно использовать для определения длины списка.

· sort(L1,L2) ¾ истинен, если список L2 получен из списка L1 путем упорядочения элементов по возрастанию и удаления повторяющихся элементов.

· bagof(X, p(X) ,L) ¾ истинен, если список L ¾ список таких термов X, для которых предикат p(X) истинен. Список L не упорядочивается, повторяющиеся элементы в списке не удаляются.

· setof(X, p(X) ,L) ¾ истинен, если список L ¾ список таких термов X, для которых предикат p(X) истинен. Список L упорядочивается, повторяющиеся элементы в списке удаляются. Если нет термов Х, для которых предикат p(X) истинен, то предикат setof(X, p(X) ,L) имеет значение «ложь».

· findall(X, p(X) ,L) ¾ истинен, если список L ¾ список таких термов X, для которых предикат p(X) истинен. Список L упорядочивается, повторяющиеся элементы в списке не удаляются. Если нет термов Х, для которых предикат p(X) истинен, то предикат setof(X, p(X) ,L) имеет значение «истина» при подстановке L=[].

 

Пример использования предиката findall.

 

Пусть требуется определить средний возраст сотрудников фирмы, информация о которых хранится в базе данных, представленной в виде фактов:

person(‘Иванов’,30, m).

person(‘Зайцев’,28, m).

person(‘Петрова’,25, w).

person(‘Захарова’,32, w).

person(‘Зубков’,41, m).

person(‘Судакова’,30, w).

В правиле middl_age можно использовать предикат findall следующим образом:

middl_age:¾ findall(A, person(_,A,_),L),length(L,N), sumlist(L,S), Age is S/N, write(‘Средний возраст = ’), write(Age).

sumlist([],0).

sumlist([H|L],S):¾ sumlist(L,S1), S is S1+H.

 

 

Стандартные предикаты обработки строк.

В системе Arity Prolog определены следующие предикаты для работы со строками:

· atom_string(A,S) обращает символьный атом A в строку S.

· concat(S1,S2,R) ¾ истинен, если строка R есть результат объединения (конкатенации) строк или атомов S1 и S2.

· concat(S1,S2,…,Sn,R) ¾истинен, если строка R есть результат объединения (конкатенации) строк или атомов S1, S2,…Sn.

· float_text(Fl, S ,For) обращает вещественное число Fl в строку S по формату For. Аргумент For может принимать одно из трех значений:

o general ¾ незначащие нули числа при формировании строки игнорируются;

o fixed(N) ¾ число с фиксированной точкой, число цифр после десятичной точки равно N;

o scientific(N) ¾ число с плавающей точкой в полулогарифмической форе представления, число знаков мантиссы равно N.

· int_text(Int, S ) обращает целое число Int в строку S или наоборот.

· name(A,L) ¾ истинен, если список L ¾ список кодов ASCII символов атома A.

· list_text(L, AS) обращает список L печатаемых символов алфавита в строку AS.

· read_string(L,S) ¾ всегда истинен и возвращает строку S длина которой не больше L, строка вводится с клавиатуры.

· string_length(S,L) ¾ истинен, если L есть длина строки S.

· string_search(Sub,S,L) ¾ истинен, если Sub подстрока строки S, начинающаяся с позиции L.

· substring(InSt,N,L, OutSt) ¾ истинен, если OutSt есть подстрока строки InSt, начинающаяся с позиции N и длина которой равна L.

Таким образом, очевидно, что версия Arity Prolog обладает мощными встроенными средствами для обработки текстов на естественном языке.

 


Система программирования Arity Prolog 5.0.

Описание среды программирования Arity Prolog 5.0.


Структура окна среды программирования Arity Prolog представлена на рис 7.1

 

 

 


Система Arity Prolog имеет главное меню и рабочие окна: окно редактирования, окно диалога, окно справки и окно трассировки. При запуске системы на экране отображается окно диалога и главное меню. Переход из окна диалога в окно редактирования, изображенное на рис. 7.1, и обратно в окно диалога производится нажатием функциональной клавиши F8 или с помощью команды главного меню Switch. Переход в главное меню производится нажатием функциональной клавиши Alt.

Главное меню содержит следующие элементы:  

· File ¾ команды создания, открытия, сохранения файлов и баз данных, временного выхода из среды в операционную систему MS DOS и выхода из среды программирования; 

· Edit ¾ команды редактирования исходного текста программ;

· Buffers ¾ команды перехода из одного буфера в другой, установки действий, выполняемых при таком переходе, интерпретации программы;  

· Info ¾ команды выдачи информации о среде программирования и изменения главного окна среды;

· Debug ¾ команды управления средствами отладки и трассировки;

· Switch ¾ команда перехода из окна редактирования в окно диалога и наоборот;

· Help ¾ команды выдачи справочной информации.

Подменю File включает подкоманды:

Ø New ¾ создание нового буфера в окне редактирования;

Ø Open File ¾ загрузка программы из файла в буфер;

Ø Consult File ¾ интерпретация программы из файла;

Ø Merge File ¾ присоединение программы из файла к буферу;

Ø Save File ¾ сохранение программы в файле;

Ø Save File as ¾ сохранение программы в файле с другим именем;

Ø Restore Db ¾ перезапись базы данных;

Ø Restore Db from ¾ перезапись базы данных из файла;

Ø Save Db ¾ сохранение базы данных;

Ø Save Db as ¾ сохранение базы данных в файле с другим именем.

Подменю Edit включает подкоманды:

Ø Find, Find Selected, Repeat Last Find, Change ¾ команды поиска фрагментов текста;

Ø Undo, Cut, Copy, Paste, Clear ¾ команды выделения, копирования и переноса фрагментов текста.

     Подменю Buffers включает подкоманды:

Ø Goto , Goto Last ¾ команды перехода из одного буфера в другой;

Ø Erase Buffer ¾ очистка буфера;

Ø Save All Buffers ¾ сохранение содержимого всех буферов на диске;

Ø Reconsult Buffer ¾ интерпретация содержимого текущего буфера;

Ø Save on Exit ¾ сохранение содержимого текущего буфера при переходе в режим диалога;

Ø Reconsult on Exit ¾ интерпретация содержимого текущего буфера при переходе в режим диалога.

Подменю Info включает подкоманды:

Ø Statistics ¾ выдача информации о среде программирования;

Ø Modify Windows ¾ изменение параметров окон среды программирования.

     Подменю Debug включает подкоманды:

Ø Spy ¾ установка контрольной точки;

Ø Trace on ¾ установка режима трассировки;

Ø Clear All Spy Points ¾ удаление всех контрольных точек.

Разработка программы на языке Пролог в среде программирования Arity Prolog выполняется следующим образом:

§ С помощью команды File/New создается новый буфер и происходит переход в окно редактирования.

§ В окне редактирования пользователь набирает текст программы.

§ С помощью команды Buffers/Reconsult программа, находящаяся в текущем буфере, интерпретируется. Затем производится переход в окно диалога с помощью клавиши F8.

§ Если программа успешна интерпретирована, то выдается сообщение:
«Reconsulting ... APIBUF2.ARI [ buffer 1 ].»
 Если программа содержит синтаксические ошибки, то интерпретатор Arity Prolog выдаст соответствующие сообщения об ошибках, которые надо исправить и повторить команду Buffers/Reconsult.

§ При успешном завершении интерпретации программы можно перейти в окно диалога и задать системе запрос.

§ С помощью команды File/Save as или File/Save программа из текущего буфера сохраняется в файле на диске.

 


Дата добавления: 2018-04-04; просмотров: 280;