Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

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




В системе 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.










Последнее изменение этой страницы: 2018-04-12; просмотров: 490.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...