Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Бип из системно... 65535
Пример работы с... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
21 ошибка прогр... 65535
Гостевая книга ... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Содержание сайт... 65535
Invision Power ... 65535
Имитационное мо... 65535
Программируемая... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 24
На сайте нет зарегистрированных пользователей

Пользователей: 13,360
новичок: tomtumper
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Расчет мер близости на отношениях на Delphi + Пояснительная записка
Игра Sokoban на Delphi + Блок схемы
Диплом - база данных поставщиков на Delphi (MS Sql Server)+ Пояснительна...

Пример сеанса работы -МПролог

Предлагаем вам услугу размещения файлов сайта на сервере, http://www.avahost.ru/vpshosting.html - виртуальный Приватный Сервер ,хостинг - идеальное решение для пользователей, которым нужна большая мощность и гибкость настроек чем может предложить обычный виртуальный хостинг.
Ниже приводится пример сеанса работы с подсистемой разработки программ (PDSS) системы МПролог,
В системе МПролог средства диалоговой разработки программ отделены от интерпретатора и реализованы в подсистеме PDSS, которая исполняет команды первичного ввода, редактирования, выполнения, трассировки и другой обработки модулей МПролога. Подсистема PDSS также позволяет задавать значительное число глобальных параметров, определяющих режимы работы команд. Например, параметр line_length (длина_строки) задает длину выводимых строк при специально форматированном выводе утверждений.
DO $S.MPRO.PDSS
MPROLOG (V1.4) Program Development Subsystem 1.4:4 (
c) 1982 Institute for Coordination of Computer Techniques (SZKI), Budapest.
По команде help выводится общая вспомогательная информация о возможностях PDSS (# означает приглашение системы) [20] ;
* help Команда; h[elp] [ТЕМА…]
Выводит вспомогательную информацию по заданной теме или о возможностях самой команды help, если аргумент опущен.
Можно получить информацию по следующим темам:
all_global all_symbolic all_visible body bye coded consult declaration delete dynpart edit enter exception_handling execute export face focus global goal help hidden import insert interface list local match_order mode modify module move next nonprolog operator options previous query read rename replace reply reset rungoal savemod selectors set solutions status symbolic trace type untimed untrace visible =
Сведения по конкретной теме, например по теме module, указанной в третьей колонке, можно получить следующим образом:
*help module
Команда: m[odule] [ИМЯ]



Делает модуль ИМЯ текущим модулем. Если ИМЯ опущено, то текущим модулем становится `неименованный_модуль'. После этой команды никакое утверждение не помещается в поле зрения.
Возможности PDSS позволяют разрабатывать несколько модулей. Данный сеанс начинается с команды module, создающей модуль, в который затем будут помещаться определения предикатов.
* module first
MODULE first
* enter hates(ann,john).
PREDICATE hates/2
*?- hates(kate,X).
NO



Команда enter используется здесь для дополнения модуля first новым утверждением. На основе одного этого утверждения ответ на вопрос hates(kate, X) получается отрицательным.
В то же время, когда утверждений, относящихся к данному целевому утверждению, вообще нет, система ведет себя по-другому: такая ситуация рассматривается как особая, и она обрабатывается стандартным обработчиком особых ситуаций PDSS:
*?- likes(X,Y).
Exception -505: undefined predicate In call of likes(_425,_426) Function (h for help)?
* h
 p – enter new PDSS level
 b – backtrace
 a – abandon execution
 с – continue
 f – fail
 s – contents of the stack
 r - redo the broken call
 i – user handled interrupt
 h – help Function (h for help)'
* f
NO



Здесь enter new PDSS level означает выход на новый уровень команд PDSS (аналогично команде break в Прологе-10), backtrace означает вывод списка предшественников ошибочного вызова (аналогично команде backtrace в Прологе для PDP-11 с ОС UNIX).
После завершения указанных выше действий пользователь может запросить другие действия. Предикаты continue и fail продолжают приостановленное выполнение программы так, как если бы вместо особой ситуации имела место согласованность или несогласованность цели с базой данных. В данном случае ввод f приводит к ответу NO .
Однако систему МПролог можно заставить вести себя так, как Пролог-система, описанная в книге. Для этого достаточно в качестве обработчика особой ситуации для undefined predicate задать целевое утверждение fail:
*?- newhandler("undefined predicate",fail).
Yes
*?- likes(X,Y).
No



Будем считать, что файл test содержит ту же самую последовательность утверждений, что и в предыдущих приложениях. Тогда мы можем считать содержащиеся в нем утверждения в базу данных. При этом, если параметр auotostate не в состоянии «off» (выключено), то будет выводиться функтор (т. е. имя/число аргументов) читаемых из файла предикатов.
*?- [test]. likes/2
Yes
*?- listing(likes/2).
likes(john,alfred).
likes(alfredjohn).
likes(bertrandjohn).
likes(david,bertrand).
likes(john,ANYBODY): - likes(ANYBODY,bertrand).
Yes



Переменные (в данном случае ANYBODY) записаны прописными буквами как в Прологе-10. Однако в МПрологе предусмотрена особая возможность сохранения символьных имен переменных в пользовательской программе.
Альтернативным способом вывода заданного предиката или некоторых из определяющих его утверждений является использование команды type:
* type likes/2
likes(john,alfred).
likes(alfred,john).
likes(bertrand,john).
likes(david,bertrand).
likes(john,ANYBODY):- likes(ANYBODY,bertrand).



Второе и четвертое утверждения данного предиката можно просмотреть с помощью команды;
* type likes / 2 CL (2,4)
likes(alfred, john).
likes(david,bertrand).



А все утверждения, включающие bertrand выбираются следующим образом:
* type likes / 2 CL (bertrand)
likes(bertrand, john).
likes(david,bertrand).
likes(john,ANYBODY):- likes(ANYBODY,bertrand).



Получение альтернативных решений для целевого утверждения осуществляется немного иначе, чем в Прологе-10:
*?- likes(john,Who).
WHO = alfred Continue (y/n)?
* y
WHO = david Continue (y/n)?
* у
NO



Новые утверждения можно добавлять как с помощью команды enter, так и путем чтения псевдо-файла user (как в Прологе-10):
*?- [user].
likes(timothy,bertrand).
likes/2+6
* bye
Yes



Команда ввода вопроса (?-) не выдает сведений о времени его выполнения. Эту информацию можно получить путем задания команды execute (в краткой форме ':'):
* :likes(john,X).
(*** CPU time: 0.27 sec, 1 calls, 0 backtracks ***)



Подсистема PDSS гибко реагирует на синтаксические ошибки. В стандартном режиме при возникновении такой ошибки пользователю предоставляется выбор: отредактировать ошибочное утверждение или выполнить целевое утверждение:
*?- likes(john,ann)). full stop expected at) Enter the editor (y/n)?
* y
10: likes(john,ann))
*** Enter editor commands
* 10: likes(john,ann)
*** Line 10 replaced ***
* end NO



Команда end закрывает цикл редактирования. Затем делается попытка согласовать отредактированную цель, и в результате получается ответ NO .
Тот же метод применим и в случае чтения файла в базу данных: ошибочные утверждения могут быть отредактированы, а затем процесс чтения файла продолжается.
Сеанс работы с PDSS завершается по команде bye. При этом система предупреждает пользователя о возможности утраты модулей, которые не были записаны в файлы.
* bye
*** The following module(s) have not been saved: ***
first Do you want to exit (y/n)?
* y
Normal exit from MPROLOG PDSS




Опубликовал Kest Июль 10 2009 12:58:49 · 0 Комментариев · 7137 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Фильтры изображений
3D Тетрис [Исходн...
SMExport
Учебник для продв...
ATComponents
Изучаем Ассемблер
PHP в примерах
oTextrackBar
Calendar
PDF
Графика в проекта...
AddPage [Исходник...
Панель случайной ...
32 урока по Delphi
Проигрыватель Mp3
Фундаментальные а...
Borland Delphi 6....
MiniChat
Игра PackMan
В.Понамарев - COM...

Топ загрузок
Приложение Клие... 100770
Delphi 7 Enterp... 97748
Converter AMR<-... 20258
GPSS World Stud... 17013
Borland C++Buil... 14181
Borland Delphi ... 10257
Turbo Pascal fo... 7371
Калькулятор [Ис... 5966
Visual Studio 2... 5205
Microsoft SQL S... 3661
Случайные статьи
ВИД МОРОЖЕНОГО КОМ...
Структурированные ...
Связывание текстов...
Как подключиться к...
Следует определить...
АНТИПАТТЕРН: КЛОНИ...
Дизайн сайта
Создание рекламног...
Линейная сортировк...
присвоения чрезмер...
В типичной реализа...
Оптимизация режим...
Несколько мелких х...
Странные эффекты
Структуры данных н...
Интернет-магазины ...
Реализация классиф...
7.6. Представле...
Игра «Выдающийся ум»
Программирование п...
пользователей,ш; с...
Работаем вместе с ...
Содержание
1.1. Разработка пр...
В структуре Window...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?