ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПРОЛОГ :: Клоксин У
Страница: 167 из 167 | |||
| ||||||||||||||
| ||||||||||||||
КАТЕГОРИИ КНИГПОСЛЕДНИЕ ОТЗЫВЫ О КНИГАХМихаил (19.04.2017 - 06:11:11) Антихрист666 (18.04.2017 - 21:05:58) Ладно, теперь поспешили вы... (18.04.2017 - 20:50:34) Роман (18.04.2017 - 18:12:26) АНДРЕЙ (18.04.2017 - 16:42:55) СЛУЧАЙНОЕ ПРОИЗВЕДЕНИЕУважаемые господа! Недавно открылся сайт www.yuri-kuzovkov.ru, на котором содержатся тексты и иллюстрации к моим книгам: «Глобализация и спираль истории», «Мировая история коррупции», «История коррупции в России». Предлагаю разместить тексты этих книг в Вашей интернет-библиотеке. Вы можете скачать интернет-версии всех трех книг с сайта www.yuri-kuzovkov.... >> 16.08.10 - 10:00 Хотите чтобы ваше произведение или ваш любимый стишок появились здесь? добавьте его! |
группа_существительного:- определитель, существительное. группа_глагола:- глагол. группа_глагола:- глагол, группа_существительного. определитель:- insymb(the). существительное:- insymb(man). существительное:- insymb(apple). глагол:- insymb(eats). глагол:- insymb(sings). Приведенный выше предикат предложение завершается успешно, если из входного потока поступает предложение, удовлетворяющее заданной грамматике. Заметим, что обработка синтаксических ошибок и команда '=' реализуются на основе предикатов ввода, допускающих повторное согласование при возврате. Предикаты для работы с базой данных в МПрологе также имеют версии, допускающие повторное согласование. Например, fdelclause(EXPR) исключает первое утверждение, заголовок которого может быть сопоставлен с EXPR, тогда как fsupclause(EXPR) только подавляет его. Это означает, что при возвратном ходе это утверждение возвращается на свое место. С помощью этого предиката можно, например, по-другому определить предикат перейти из разд. 7.2: перейти(X,X). перейти(X,X):- в_след_комн(Х,Z), перейти(Z,Y). в_след_комн(Х,Z):- fsupclause(d(X,Z)); fsupclause(d(Z,X)). Здесь нам уже не нужен вспомогательный третий аргумент (содержащий список комнат, где мы уже бывали). Вместо этого, чтобы быть уверенным в том, что в каждую дверь мы входим только один раз, мы просто подавляем на период поиска факты, соответствующие дверям, через которые мы уже прошли. Имеется большой набор предикатов вывода, позволяющий осуществлять разнообразные виды форматированного вывода. Например, можно задавать границы строк и предельную глубину вывода. Задание глубины вывода полезно при выводе очень сложных термов (или даже бесконечных термов поскольку в МПрологе соответствующих проверок не делается), когда нас интересует только их общая структура. Задание глубины вывода равной N означает, что фактически выводиться будут только первые N уровней терма, а подтермы уровня N+1 будут представлены как (…) . Предикаты обработки особых ситуаций МПролога позволяют программисту самому программировать действия по восстановлению при ошибках. Например, ниже представлен простой вариант средства 'спроси у пользователя', позволяющего запросить у пользователя указания, как продолжать выполнение, если встретился неопределенный предикат. ask_the_user:- broken _call(С), outterm("How to continue from: "), outterm(C), outterm("?"), nl, interm(C), ineot. где broken_call(С) - это стандартный предикат, конкретизирующий переменную С ошибочным целевым утверждением. Выполнив целевое утверждение newhandler("undefined predicate", ask_the_user) система будет вызывать ask_the_user (спроси_у_пользователя) всякий раз, когда что-либо окажется неопределенным. Например, определив предикаты плотность и нас как в разд. 2.5, но оставив неопределенным предикат площадь: плотность(X,Y):- нас(X,Р), площадь(X,A), Y is P/A. нас(китай,800). . . . мы можем наблюдать следующий диалог: *? плотность(китай,D). How to continue from площадь(китай,_101)? * площадь(китай,4). D = 200 Continue (y/n)? * y NO *? плотность(китай,D). How to continue from площадь(китай,_101)? * n. NO Другой важный встроенный предикат – это error_protect (Call, Handler), который выполняет целевое утверждение Call в защищенном окружении: когда внутри Call возникает особая ситуация (не обрабатываемая текущим обработчиком особых ситуаций), выполняется Handler. Средства отладки Средства трассировки МПролога аналогичны тем, что имеются в Прологе-10. Литература MPROLOG Language Reference Manual MPROLOG User's Guide /VAX/11-VMS/ MPROLOG User's Guide /VAX/11 – UNIX/ MPROLOG User's Guide /IBM – VM/CMS/ MPROLOG User's Guide /Siemens BS2000/ Getting Started with MPROLOG Указанная литература может быть получена через институт по координации вычислительной техники (SZKI), г. Будапешт, ВНР . |
ИНТЕРЕСНОЕ О ЛИТЕРАТУРЕ
ТОП 20 КНИГ
ТОП 20 АВТОРОВ
| ||||||||||||
|