Приложение 1.
Служебные предикаты Турбо-Пролога
i - параметр имеет определенное значение при обращении к данному предикатуНапример, если вызываемый предикат имеет два аргумента, то возможны такие потоковые шаблоны - (i,i), (o,o), (i,o), (o,i), или более коротко - (io,io).
o - параметр получает значение при любом обращении к предикату
io - тип может быть i или о независимо от потоковых типов остальных параметров
1. Стандартные предикаты ввода данных.
Турбо-Пролог предоставляет стандартные предикаты .IVLS чтения строки символов; целого, вещественного или символьного значения с клавиатуры терминала: чтения из файла. Приведенные ниже предикаты не могут непосредственно использоваться для чтения сложных объектов или списков(string) -- (о) |
|
(integer) - (о) |
|
(real) - (о) |
|
(char) -- (о) |
|
File <-> String (string,string) - (i.io) |
2. Предикаты преобразования данных
char_int ( СимвольныиПараметр , ЦелыйПараметр )( integer, integer, integer, string, integer, integer, integer, integer) - (i,i,i,i,i,i,i,i) |
|
(integer) - (io) |
|
(siring) -- (io) |
|
(integer) - (i) |
4. Предикаты работы с файлами.
Турбо-Пролог определяет текущий входной данных, из которого производится чтение всех вводимых данных, и текущий выходной поток, в который производится запись данных. Обычно с текущим выходным потом связывается дисплей, а с текущим входным потоком - клавиатура.( file , string ) - (i,i) |
|
( file , string ) -- (i,i) |
|
( file . string ) - (i,i) |
|
( file , string ) - (i,i) |
|
( file ) -- (io) |
|
( file ) -- (io) |
|
( file ) -- (i) |
|
( file , real , integer ) -- (i,io,i) |
|
( me ) -- (i) |
|
( string ) -- (i) |
|
( string ) - (i) |
|
( string , string ) - (i,i) |
|
( string ) -- (io) |
5. Предикаты управления экраном.
(integer.integer.integer) - (i,i,io) |
|
(mteger,mteger,integer) - (i,i,io) |
|
(integer,iriteger,intcger,strmg) - (i,i,i,io) |
|
(integer,integer,integer,integer) - (i,i,i,i) |
|
(integer,integer) - (i,i) (o,o) |
|
(integer) - (io) |
7. Предикаты работы с графикой.
Графические возможности Турбо-Пролога реализованы для двух уровней: пунктирной графики, когда используются команды вида "начертить линию, проходящую через указанные точки" и графики построения "от руки", с помощью цветного пера. Перед тем как использовать команды графики Турбо-Пролога, Вы должны установить экран в графический режим, а по его окончании очистить экран и вернуться к текстовому режиму. Заметим, что текст и графика могут вместе использоваться внутри окна и на полном экране. Графический предикат имеет форму:2 3 4 5 |
640 320 640 640 |
200 200 200 350 |
Синий Зеленый Голубой Красный Сиреневый Коричневый Белый Серый Ярко-синий Ярко-зеленый Ярко-голубой Ярко-красный Ярко-сиреневый Желтый Ярко-белый |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
random (ВещественнаяПеременная) (real) - (о)
- domain
- name , address = string
age = integer
list = age*- predicates
- pcrson( name , address , age)
sumlist( list , age , integer )- goal
- findall( Age , Person(_,_,Age) , L ) , sumlist ( L , Sum , N)
Age = Sum / N ,
write("\n\nЭта программа находит средний возраст лиц") ,
write ("\nСредний возраст = ",Age) , nl , nl .- clauses
- sumlist( [] , 0 , 0 ).
sumlist( [H п T],Sum,N := sumlist( T,S1,N1),Sum=H+S1,N=1+N1.
person("Петров" ."Попова, 5",22).
регsоn("Иванов, 5",20)