Некоторые операции и предикаты SWI-Prolog
Операция / Предикат | Назначение |
true | Истина |
fail, false | Ложь |
= | Для переменной, стоящей слева от операции: · свободной – присваивание без преобразования (вычисления) выражения справа от операции; · связанной – сравнение без преобразования (вычисления) выражения справа от операции. |
<, =<, >=, > | Арифметические (только для чисел) операции сравнения |
=:= | Арифметическое равенство |
=\= | Арифметическое неравенство |
is | Для переменной, стоящей слева от операции: · свободной – присваивание с преобразованием (вычислением) выражения справа от операции; · связанной – сравнение с преобразованием (вычислением) выражения справа от операции. |
@<, @=<, @>=, @> | Операции сравнения для констант и переменных любого типа (чисел, строк, списков и т. д.) |
== | Равенство констант и переменных любого типа |
not(A) | Отрицание логического выражения A |
read(A) | Чтение значения с клавиатуры и присваивание его переменной А |
write(A) | Печать А на экран с установкой курсора после последнего напечатанного символа |
writeln(A) | Печать А на экран с переводом курсора в начало следующей строки |
nl | Перевод курсора в начало следующей строки |
repeat | Предикат, выдающий новое истинное значение при возврате. Передоказываемый предикат |
! | Предикат (cut, сократить), запрещающий возврат далее той точки, где он стоит |
Программирование в SWI-Prolog возможно в разных вариантах:
· с помощью стандартной offline-среды[6] программирования (http://www.swi-prolog.org);
Рис. 1. Стандартная offline-среда программирования SWI-Prolog
· с помощью offline-среды программирования SWI-Prolog-Editor (http://lakk.bildung.hessen.de/netzwerk/faecher/informatik/swiprolog/indexe.html);
Рис. 2. Среда программирования SWI-Prolog-Editor
· с помощью стандартной online-среды[7] программирования SWI-Prolog (http://swish.swi-prolog.org);
Рис. 3. Стандартная online-среда программирования SWI-Prolog
Дальнейшая работа со SWI-Prolog рассматривается на примере online-среды.
1.4. Лабораторная работа № 1
Представление фактов и правил в Прологе
Цель работы:освоение основ программирования на языке Пролог и online-среды программирования SWI-Prolog.
Рекомендации по выполнению работы
Для перехода в режим редактирования и исполнения программ необходимо нажать на кнопку «Program» (см. рис. 3).
В левой панели осуществляется редактирование программы, содержащей факты и правила.
В правой нижней панели выполняется набор вопросов и запуск их на исполнение с помощью кнопки «Run!».
Панель вопросов |
Панель ответов |
Панель редактирования программ |
Рис. 4. Режим редактирования и исполнения программ
В правой верхней панели интерпретатор SWI-Prolog выдает ответы на вопросы. В случае если на вопрос может быть получено более одного ответа, с помощью кнопок «Next», «10», «100» и «1,000» можно вывести на панель дополнительные ответы.
Необходимый теоретический материал для создания программы изложен в подразд. 1.2–1.3.
Задание на выполнение работы
Разработать программу «Родственные связи», отвечающую следующим требованиям.
А. Программа должна содержать общие для всех заданий факты и правила:
· женщина;
· мужчина;
· мать;
· отец;
· родитель;
· супруги.
Б. По индивидуальному заданию добавить в программу правила (от 3 до 5) для определения следующих типов родственников:
1) брат;
2) сестра;
3) ребенок;
4) бабушка;
5) дедушка;
6) внук;
7) внучка;
8) прадедушка;
9) прабабушка;
10) правнук;
11) правнучка;
12) зять (муж дочери, сестры, золовки);
13) невестка (жена сына для его матери, жена брата);
14) свекор (отец мужа);
15) свекровь (мать мужа);
16) тесть (отец жены);
17) теща (мать жены);
18) сноха (жена сына для его отца);
19) сват (отец одного из супругов для родителей другого супруга);
20) сватья (мать одного из супругов для родителей другого супруга);
21) свояк (муж сестры жены);
22) свояченица (сестра жены);
23) свояки (лица, женатые на двух сестрах);
24) деверь (родной брат мужа для жены);
25) золовка (сестра мужа);
26) шурин (брат жены);
27) дядя (брат отца или матери по отношению к детям, племянникам, кроме того, дядей является муж тетки);
28) тетка (сестра отца или матери по отношению к детям, племянникам, кроме того, теткой является жена дяди);
29) племянник (ребенок брата или сестры);
30) внучатый племянник (внук брата или сестры);
31) внучатая племянница (внучка брата или сестры);
32) двоюродный дедушка (дядя отца или матери);
33) двоюродная бабушка (тетка отца или матери);
34) двоюродный брат – кузен (сын родного дяди или тети);
35) двоюродная сестра – кузина (дочь родного дяди или тети);
36) двоюродный дядя (двоюродный брат отца и матери);
37) двоюродная тетка (двоюродная сестра отца и матери);
38) мачеха (неродная мать ребенка);
39) отчим (неродной отец ребенка);
40) падчерица (неродная дочь по отношению к одному из супругов);
41) пасынок (неродной сын по отношению к одному из супругов);
42) сводный брат (сын неродного родителя (мачехи, отчима) по отношению к детям родного);
43) сводная сестра (дочь неродного родителя (мачехи, отчима) по отношению к детям родного);
44) стрый – стрий (дядя по отцу (брат отца)).
45) уй – вуй (дядя по матери (брат матери)).
В.При необходимости добавить в программу недостающие факты и правила, требуемые для работы правил из п. Б).
Г.Отчет должен содержать:
· титульный лист;
· описание задания;
· текст программы;
· вопросы с ответами, иллюстрирующие корректность работы программы;
· вывод.