Restorecrtmode/0 Графика
Назначение Восстанавливает начальный графический режим,
определенный по initgraph
Обращение restorecrtmode
Домены Нет
Шаблоны описания Нет
аргументов
Описание restorecrtmode восстанавливает начальный графический
режим, определенный по initgraph. Если текстовый
режим отличен от 80x25, тогда вы должны вызвать
предикат textmode для запоминания начального режима.
Этот предикат можно использовать в сочетании с
setgraphmode для кратковременного перехода из
графического режима в текстовый.
Смотри initgraph,setgraphmode
retract/1
Назначение Удаляет факты из внутренней базы данных
Обращение nondeterm retract(<Факт>)
Домены (dbasedom)
Шаблоны описания (вх)
аргументов
Описание retract удаляет первый <Факт> в базе данных, который
соответствует данному <Факт>. Остальные факты
удаляются в процессе отката (возврата к предыдущему
состоянию). <Факт> сравнивается с фактами в базе
данных, это значит, что любая свободная переменная
будет связываться при обращении в retract.
Пример
domains
list = integer*
database - dba1
fact1(integer,string,list)
database - dba2
fact2(integer,string)
clauses
fact1(1,"факт1",[1,2,3]).
fact1(2,"факт2",[1,3]).
fact1(3,"факт2",[3,2,1]).
fact2(1,"один").
fact2(1,"более одного").
fact2(2,"два").
-------- Dialog --------
Goal: fact1(X,Y,Z)
X=1, Y=факт1, Z=[1,2,3]
X=2, Y=факт2, Z=[1,3]
X=3, Y=факт2, Z=[3,2,1]
3 Solutions
Goal: retract(fact1(X,Y,[_,2|Z]))
X=1, Y=факт1, Z=[3]
X=3, Y=факт2, Z=[1]
2 Solutions
Goal: retract(fact1(X,Y,Z))
X=2, Y=факт2, Z=[1,3]
1 Solution
Goal: fact1(X,Y,Z)
No Solution
Goal: retract(fact2(1,X))
X=один
X=более одного
2 Solutions
retract/2
Назначение Удаляет факт из локальной внутренней базы данных
Обращение retract(<Факт>,ИмяБД)
Домены (dbasedom,symbol)
Шаблоны описания (*,вх)
аргументов
Описание С помощью retract/2 вы можете указать сегмент базы
данных, из которого будут удалены факты. Однако
основное преимуществом retract/2 является следующее:
если первый аргумент является свободной переменной,
все факты в указанной секции базы данных будут
удалены.
Пример
domains
list = integer*
database - dba1
fact1(integer,string,list)
database - dba2
fact2(integer,string)
clauses
fact1(1,"факт1",[1,2,3]).
fact1(2,"факт2",[1,3]).
fact1(3,"факт2",[3,2,1]).
fact2(1,"один").
fact2(1,"более одного").
fact2(2,"два").
-------- Dialog --------
Goal: retract(X,dba1)
X=fact1(1,"факт1",[1,2,3])
X=fact1(2,"факт2",[1,3])
X=fact1(3,"факт2",[3,2,1])
3 Solutions
Goal: retract(fact2(1,X),dba2)
X=один
X=более одного
2 Solutions
retractall/1.
Назначение Удаляет все сравниваемые факты из внутренней базы
данных
Обращение retractall(<Факт>)
Домены (<dbasedom>)
Шаблоны описания (*)
аргументов
Описание retractall удаляет все сравниваемые факты для
предиката базы данных. Предикат всегда выполняется
успешно, даже если в базе данных не было фактов для
уничтожения.
Неудачное Никогда не дает.
завершение
Ошибки Нет ошибок.
Пример
domains
LIST = integer*
database - dba1
fact1(integer,string,list)
database - dba2
fact2(integer,string)
clauses
fact1(1,"факт1",[1,2,3]).
fact1(2,"факт2",[1,3]).
fact1(3,"факт2",[3,2,1]).
fact2(1,"один").
fact2(1,"более одного").
fact2(2,"два").
-------- Dialog --------
Goal: fact1(X,Y,Z)
X=1, Y=факт1, Z=[1,2,3]
X=2, Y=факт2, Z=[1,3]
X=3, Y=факт2, Z=[3,2,1]
3 Solutions
Goal: retractall(fact1(_,_,_))
Yes
Goal: fact1(X,Y,Z)
No Solution
Goal: retractall(fact1(_,_,_)) % retractall дает
всегда успех
Yes
Goal: retractall(fact2(1,_)) % retract сравнивает
все
Yes
retractall/2.
Назначение Удаляет все сравниваемые факты из указанной
внутренней базы данных
Обращение retractall(<Факт>,ИмяБД)
Домены (<faсt>,<symbol>)
Шаблоны описания (*)
аргументов
Описание retractall удаляет все сравниваемые факты из
указаанной базы данных. В retractall не могут
находиться свободные переменные. Необходимо, чтобы
переменные при обращении были связанными или
ананимными (знак подчеркивания). retractall является
определенным и всегда будет согласован.
Неудачное Никогда не дает.
завершение
Ошибки Нет ошибок.
Пример
domains
LIST = integer*
database - dba1
fact1(integer,string,list)
database - dba2
fact2(integer,string)
clauses
fact1(1,"факт1",[1,2,3]).
fact1(2,"факт2",[1,3]).
fact1(3,"факт2",[3,2,1]).
fact2(1,"один").
fact2(1,"более одного").
fact2(2,"два").
-------- Dialog --------
Goal: fact1(X,Y,A)
X=1, Y=факт1, A=[1,2,3]
X=2, Y=факт2, A=[1,3]
X=3, Y=факт2, A=[3,2,1]
3 Solutions
Goal: retractall(_,dba1)
Yes
Goal: fact1(X,Y,Z)
No Solution
Goal:
save/1.
Назначение Записывает содержимое неименнованной базы данных
Обращение save(ИмяФайлаДОС)
Домены (string)
Шаблоны описания (вх)
аргументов
Описание Записывает все факты для предикатов базы данных в
текстовый файл, который имеет имя ИмяФайлаДОС. save
записывает факт на отдельной строке в файле. Файл
может быть после этого считанным в память с помощью
предиката consult. Текст файла может также
просматриваться и обрабатываться с использованием
редактора, однако недопустимы дополнительные пробелы,
и все функторы должны состоять из строчных букв.
save/1 записывает факты из секции database, которая
была описана без имени.
Неудачное Никогда не дает.
завершение
Ошибки 1027 Невозможно открыть файл.
1028 Невозможно записать файл.
Пример
domains
list=integer*
database
fact1(integer,string,list)
fact2(INTEGER,STRING)
clauses
fact1(1,"факт1",[1,2,3]).
fact1(2,"факт2",[1,3]).
fact1(3,"факт2",[3,2,1]).
fact2(1,"один").
fact2(1,"более одного").
fact2(2,"два").
-------- Dialog --------
Goal: save("con")
fact1(1,"факт1",[1,2,3])
fact1(2,"факт2",[1,3])
fact1(3,"факт2",[3,2,1])
fact2(1,"один")
fact2(1,"более одного")
fact2(2,"два")
Yes
save/2.
Назначение Записывает содержимое указанной внутренней базы
данных
Обращение save(ИмяФайлаДОС,ИмяБД)
Домены (string,<symbol>)
Шаблоны описания (вх,вх)
аргументов
Описание save записывает содержимое секции базы данных с
именем, определенным ИмяБД в файл ИмяФайлаДОС.
Неудачное Такое же, как в save/1.
завершение
Ошибки Такое же, как в sаve/1.
Пример
domains
list = integer*
database - dba1
fact1(integer,string,list)
database - dba2
fact2(integer,string)
clauses
fact1(1,"факт1",[1,2,3]).
fact1(2,"факт2",[1,3]).
fact1(3,"факт2",[3,2,1]).
fact2(1,"один").
fact2(1,"более одного").
fact2(2,"два").
/* Посмотрите что произойдет,
если введете следующую цель:
save(con.dba).
Сохраненная база будет
изображена в окне диалога */
Goal: save("con",dba1)
fact1(1,"факт1",[1,2,3])
fact1(2,"факт2",[1,3])
fact1(3,"факт2",[3,2,1])
Yes
Goal: save("dba1 dba",dba1)
Yes
Goal: save("dba2 dba",dba2)
Yes
scr_attr/3
Назначение Устанавливает или выдает атрибут экрана
Обращение scr_attr(Строка,Колонка,Атр)
Домены (integer,integer,integer)
Шаблоны описания (вх,вх,вх) , (вх,вх,вых)
аргументов
Описание (вх,вх,вх)
Устанавливает атрибут символа на экранной позиции
(Строка,Колонка) со значением, определенным Атр.
(вх,вх,вых)
Возвращает значение атрибута, установленного для
символа в позиции (Строка,Колонка).
Неудачное Никогда не дает
завершение
Ошибки 1001 Неверное значение позиции курсора.
Пример
/* Эта программа демонстрирует встроенные предикаты
scr_attr и scr_char. Замечание: цвета, используемые
в этом примере, могут быть невидимы на монохромном
дисплее */
goal
makewindow(1, 12, 7, "", 0, 0, 10, 40),
scr_attr(0, 0, 139), scr_char(0, 0, 'a'),
scr_attr(0, 1, 72), scr_char(0, 1, 'B'),
scr_attr(0, 2, 24), scr_char(0, 2, 'c'),
scr_attr(0, 3, 33), scr_char(0, 3, 'D'),
scr_attr(0, 4, 42), scr_char(0, 4, 'e'),
scr_attr(0, 5, 94), scr_char(0, 5, 'F'),
% Сейчас читаю содержимое позиции (0,3)
scr_attr(0, 3, Attr), scr_char(0, 3, Char),
cursor(2,0),
write("Атрибутом в позиции (0,3) является ",Attr),
write("\nа символом является ", Char, ".").
scr_char/3
Назначение Записывает или читает символы в или из экрана
Обращение scr_char(Строка,Колонка,Симв)
Домены (integer,integer,char)
Шаблоны описания (вх,вх,вх) , (вх,вх,вых)
аргументов
Описание (вх,вх,вх)
Записывает символ Симв на экран, текущим атрибутом на
позицию, даваемую параметрами Строка и Колонка.
(вх,вх,вых)
Читает символ из описанной позиции.
Неудачное Никогда не дает.
завершение
Ошибки 1001 Неверное значение позиции курсора.
Пример Смотри scr_attr/3.
scroll/2
Назначение Перемещает содержимого текущего окна
Обращение scroll(НомСтр,НомКол)
Домены (integer,integer)
Шаблоны описания (вх,вх)
аргументов
Описание scroll перемещает содержимое текущего окна вверх (или
вниз) и влево (или вправо). НомСтр показывает число
линий, перемещаемых вверх или вниз. Положительное
число - перемещение вверх, отрицательное число -
перемещение вниз.
НомКол показывает число перемещений влево или вправо.
Положительное число - перемещение влево,
отрицательное число - перемещение вправо.
Неудачное Никогда не дает.
завершение
Ошибки Нет ошибок.
Пример
predicates
msg(STRING)
clauses
msg(X):-
shiftwindow(OLD), shiftwindow(2),
concat("Нажмите любую клавишу в: ",X,X1),
window_str(X1), readchar(_),
shiftwindow(OLD).
goal
makewindow(2,112,0,"",21,5,1,70),
makewindow(1, 12, 7, "Окно перемещения", 5, 5, 15, 70),
file_str("prolog.err",X),
window_str(X),
msg("Перемещение текста вверх"),scroll(3,0),
msg("Перемещение текста вниз"),scroll(-6,0),
msg("Перемещение текста вверх"),scroll(3,0),
msg("Перемещение текста влево"),scroll(0,15),
msg("Перемещение текста вправо"),scroll(0,-30),
msg("Перемещение текста влево"),scroll(0,15).
- Справочное руководство по турбо прологу 2.0
- Глава 2. Элементы языка 50
- Глава 3. Интерфейс с другими языками 75
- Часть 2. Стандартные предикаты 91
- Часть 3. Приложения 250
- Введение
- Дистрибутивные диски
- Рекомендуемая литература:
- Часть 1. Руководство программиста по турбо прологу глава 1. Система меню турбо пролога
- Пользователям Турбо Пролога 1.X
- Структура меню Турбо Пролога
- Выбор элементов меню.
- "Горячие" клавиши.
- Системные окна и строки помощи
- Окно редактирования.
- Как войти в окно редактирования
- Компоненты окна редактирования
- Как выйти из окна редактирования.
- Окно трассировки
- Окно сообщений
- Диалоговое окно
- Строка помощи
- Главное меню.
- Окно редактирования.
- Окно вспомогательного редактирования (Xedit).
- Окно просмотра.
- Изменение размера окон.
- Просмотр окон
- Создание нового файла.
- Загрузка существующего файла.
- Команды редактора.
- Сохранение исходного текста в файле.
- Запись исходного текста на диск
- Вспомогательный редактор
- Меню и команды
- Меню файлов (Files)
- Загрузка файлов (Load)
- "Указка" (Pick)
- Новый (New)
- Выход (Quit)
- Команда редактирования (Edit)
- Команда запуска (Run)
- Меню компиляции (Compile)
- Память (Memory)
- Меню опций (Options)
- Опции компоновки (Link Options)
- Стек (Stack)
- Область ссылок (Trail Array)
- "Куча" (Heap)
- Контроль во время исполнения (Run-time check)
- Цвета (Colors)
- Размер окна (Window size)
- Каталоги
- Текущий каталог (Current directory)
- Авто-загрузка сообщений (Avto-Load Message)
- Режим экрана (Screen mode)
- Конфигурация клавиатуры (Keyboard Configuration)
- Перемещение курсора (Cursor movement)
- Глава 2. Элементы языка
- Ключевые слова.
- Специальные предикаты.
- Разделы программы.
- Раздел доменов (domains).
- Стандартные домены.
- Списковые домены.
- Домены составных объектов.
- Файловый домен.
- Специально заданные предопределенные домены.
- Сокращение объявлений доменов.
- Объявление ссылочных доменов.
- Раздел предикатов (predicates).
- Раздел базы данных (database).
- Раздел предложений (clauses).
- Простые константы.
- Переменные.
- Составные объекты.
- Списки - Специальный вид составных объектов.
- Раздел констант.
- Условная компиляция.
- Включение файлов в вашу программу.
- Директивы компилятора.
- Управление памятью в Турбо Прологе.
- Экономия ресурсов памяти.
- Управление распределением памяти.
- Генерирование выполняемых программ.
- Модульное программирование.
- Проекты.
- Глобальные объявления.
- Глобальные домены.
- Глобальная база данных.
- Глобальные предикаты.
- Компиляция и компоновка модулей.
- Пример.
- Глава 3. Интерфейс с другими языками
- Вызов других языков из Турбо Пролога.
- Что делать перед вызовом.
- Объявление внешних предикатов.
- Вызов соглашений и передача параметров.
- Соглашение об обозначениях
- Использование ключевого слова as
- Вызов процедуры, написанной на Си из Пролога.
- Опции компилятора Турбо Си и компоновка.
- Вызов программ на языке ассемблера из Турбо Пролога.
- Использование внутреннего ассемблера Турбо Си.
- Вызов Турбо Пролога из других языков.
- Динамическое распределение памяти.
- Передача составных объектов в другие языки.
- Передача списков.
- Передача структур.
- Примеры.
- Обработка списков.
- Программирование на низком уровне.
- Часть 2. Стандартные предикаты
- Arc/5 Графика
- Bar/4 Графика
- Bt_close/2 Внешняя База Данных
- Bt_create/5 Внешняя База Данных
- Bt_delete/2 Внешняя База Данных
- Bt_open/3 Внешняя База Данных
- Bt_statistics/8 Внешняя База Данных
- Chain_delete/2 Внешняя База Данных
- Chain_first/3 Внешняя База Данных
- Chain_inserta/5 Внешняя База Данных
- Chain_insertafter/5 Внешняя База Данных
- Chain_insertz/5 Внешняя База Данных
- Chain_last/3 Внешняя База Данных
- Chain_next/3 Внешняя База Данных
- Chain_prev/3 Внешняя База Данных
- Chain_terms/5 Внешняя База Данных
- Circle/3 Графика
- Cleardevice/0 Графика
- Clearviewport/0 Графика
- Closegraph/0 Графика
- Db_btrees/2 Внешняя База Данных
- Db_chains/2 Внешняя База Данных
- Db_close/1 Внешняя База Данных
- Db_create/3 Внешняя База Данных
- Db_delete/2 Внешняя База Данных
- Db_flush/1 Внешняя База Данных
- Db_garbagecollect/1 Внешняя База Данных
- Db_open/3 Внешняя База Данных
- Db_openinvalid/3 Внешняя База Данных
- Db_statistics/5 Внешняя База Данных
- Detectgraph/2 Графика
- Drawpoly/1 Графика
- Ellipse/6 Графика
- Fillellipse/4 Графика
- Fillpoly/1 Графика
- Floodfill/3 Графика
- Getarccoords/6 Графика
- Getaspectratio/2 Графика
- Getbkcolor/1 Графика
- Getcolor/1 Графика
- Getdefaultpalette/1 Графика
- Getdrivername/1 Графика
- Getfillpattern/1 Графика
- Getfillsettings/2 Графика
- Getgraphmode/1 Графика
- Getimage/6 Графика
- Getlinesettings/3 Графика
- Getmaxcolor/1 Графика
- Getmaxx/1 Графика
- Getmaxy/1 Графика
- Getmaxmode/1 Графика
- Getmodename/2 Графика
- Getmoderange/3 Графика
- Getpalette/1 Графика
- Getpalettesize/1 Графика
- Getpixel/3 Графика
- Gettextsettings/5 Графика
- Getviewsettings/5 Графика
- Getx/1 Графика
- Gety/1 Графика
- Graphdefaults/0 Графика
- Graphresult/1 Графика
- Imagesize/5 Графика
- Initgraph/5 Графика
- Key_current/4 Внешняя База Данных
- Key_delete/4 Внешняя База Данных
- Key_first/3 Внешняя База Данных
- Key_insert/4 Внешняя База Данных
- Key_last/3 Внешняя База Данных
- Key_next/3 Внешняя База Данных
- Key_prev/3 Внешняя База Данных
- Key_search/4 Внешняя База Данных
- Line/4 Графика
- Linerel/2 Графика
- Lineto/2 Графика
- Moverel/2 Графика
- Moveto/2 Графика
- Outtext/1 Графика
- Outtextxy/3 Графика
- Pieslice/5 Графика
- Pieslicexy/6 Графика
- Putimage/4 Графика
- Putpixel/3 Графика
- Rectangle/4 Графика
- Restorecrtmode/0 Графика
- Setactivepage/1 Графика
- Setallpalette/1 Графика
- Setaspectratio/2 Графика
- Setbkcolor/1 Графика
- Setcolor/1 Графика
- Setfillpattern/2 Графика
- Setfillstyle/2 Графика
- Setgraphmode/1 Графика
- Setgraphbufsize/1 Графика
- Setlinestyle/3 Графика
- Setpalette/2 Графика
- Setrgbcolor/4 Графика
- Settextjustify/2 Графика
- Settextstyle/3 Графика
- Setusercharsize/4 Графика
- Setviewport/5 Графика
- Setvisualpage/1 Графика
- Setwritemode/1 Графика
- Term_delete/3 Внешняя База Данных
- Term_replace/4 Внешняя База Данных
- Textheight/2 Графика
- Textwidth/2 Графика
- Часть 3. Приложения приложение а. Введение вdos
- Что такое dos
- Как загрузить программу?
- Каталоги
- Подкаталоги
- Avtoexec.Bat-файл
- Команда path
- Смена каталогов
- Приложениеb. Интерактивный редактор турбо пролога
- Быстрый вход, быстрый выход
- Служебная строка окна редактора
- Основные команды редактора
- Команды Редактора, совпадающие с командами WordStar Основные команды работы с курсором
- Команды быстрого движения курсора
- Команды вставки и удаления
- Команды работы с блоками
- Остальные команды редактора
- Старые команды
- Поиск и замена
- Редактор Турбо Пролога по сравнению с WordStar
- Корректировка файла на диске.
- Приложение c. Сообщения об ошибках
- Приложение d. Различия между версиями 1.1 и 2.0
- Файл определения проекта
- Новые ограничения по именам
- Новые предопределенные домены
- Контроль состава параметров шаблона (flow pattern)
- Поддержка старых командных клавиш редактора
- Ошибочные ситуации в стандартных предикатах
- Расширение Турбо Пролога 2.0
- Системные расширения
- Приложениеe. Словарь специальных терминов
- Приложение f. Географическая база данных (Geobase)
- Использование Geobase
- Системы с 2-мя флоппи-дисковыми устройствами
- Компиляция Geobase
- Создание автономной программы
- Главное меню Geobase
- Справка
- Команды dos
- Редактор
- Запросы к базе данных
- Просмотр языка
- Корректировка языка
- Принципы Geobase
- Использование принципа Geobase
- Создание вашей базы данных
- Преобразование Geobase
- Предикат "ent"
- Предикат "db"
- Трансляция запросов на естественном языке
- Внутренние имена объектов
- Внутренние имена связей
- Определение структуры предложений
- База данных языка
- Грамматический разбор с помощью разделения списков
- Заключение
- Приложение g. Анализатор предложений на турбо прологе
- Использование анализатора предложений
- Помощь пользователя
- Операционная система
- Редактирование базы данных
- Загрузка базы данных из файла
- Сохранение базы данных
- Анализ предложений
- «Показать/изменить словарь»
- Приложениеh.Geni: оболочка экспертной системы
- Использование geni
- Запросы geni
- Просмотр знаний
- Корректировка базы знаний
- Сохранение базы знаний
- Создание новой базы знаний
- Чистка текущей базы знаний
- Проектирование новой базы знаний
- Приложение I. Tlib: библиотека турбо
- Компоненты командной строки tlib
- Компонент «описание»
- Список операций
- Имена файла и модуля
- Операции tlib
- Создание библиотеки
- Использование файла ответа
- Расширенные возможности: опция /с
- Примеры
- Приложение j. Tlink: компоновщик турбо
- Активизация tlink
- Использование ответных файлов
- Компоновка модулей Турбо Пролога и Турбо Си.
- Модуль инициализации
- Библиотеки
- Опции tlink
- Опция /c
- Опция /d
- Опция /I
- Опция /l
- Опции /m, /s, /X
- Опция /m
- Опция /s
- Опция /X
- Опция /n
- Ограничения
- Сообщения об ошибках
- Предупреждения
- Нефатальные ошибки
- Фатальные ошибки
- Приложение k. Метапрограммирование Введение
- Пролог/Турбо: развитие и философские установки
- Конструкторские решения в Турбо Прологе
- Чем Турбо зарядило Турбо Пролог
- Интерпретатор правил с обратной цепочкой рассуждений
- Термы (горючее для интерпретатора правил)
- Статические термы: область sTerm (статических термов)
- Интерпретирование области термов.
- Что такое интерпретатор?
- Интерпретация правил в Прологе
- Использование sTerm и aTerm для моделирования интерпретатора правил
- Переменные и среда
- Процесс унификации
- Унификация статических и действительных термов
- Интерпретация тела правила
- Выполнение выполняемых термов: предикат call.
- Встроенные предикаты
- Сканнер и транслятор
- Операторы традиционного Пролога
- Использование операторов в Турбо Прологе
- Интерпретатор Пролога
- Реализация трассировки
- Теперь объединим все вместе
- Расширения экспертной системы
- Цепочка с прямым порядком рассуждений
- Стандартные предикаты, реализованные в pie
- Заключение