logo search
TurboProlog / Документация / TOM_2

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).