Некоторые операции и предикаты 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);

Некоторые операции и предикаты SWI-Prolog - student2.ru

Рис. 1. Стандартная offline-среда программирования SWI-Prolog

· с помощью offline-среды программирования SWI-Prolog-Editor (http://lakk.bildung.hessen.de/netzwerk/faecher/informatik/swiprolog/indexe.html);

Некоторые операции и предикаты SWI-Prolog - student2.ru

Рис. 2. Среда программирования SWI-Prolog-Editor

· с помощью стандартной online-среды[7] программирования SWI-Prolog (http://swish.swi-prolog.org);

Некоторые операции и предикаты SWI-Prolog - student2.ru

Рис. 3. Стандартная online-среда программирования SWI-Prolog

Дальнейшая работа со SWI-Prolog рассматривается на примере online-среды.

1.4. Лабораторная работа № 1
Представление фактов и правил в Прологе

Цель работы:освоение основ программирования на языке Пролог и online-среды программирования SWI-Prolog.

Рекомендации по выполнению работы

Для перехода в режим редактирования и исполнения программ необходимо нажать на кнопку «Program» (см. рис. 3).

В левой панели осуществляется редактирование программы, содержащей факты и правила.

В правой нижней панели выполняется набор вопросов и запуск их на исполнение с помощью кнопки «Run!».

Панель вопросов
Панель ответов
Панель редактирования программ
Некоторые операции и предикаты SWI-Prolog - student2.ru

Рис. 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) уй – вуй (дядя по матери (брат матери)).

В.При необходимости добавить в программу недостающие факты и правила, требуемые для работы правил из п. Б).

Г.Отчет должен содержать:

· титульный лист;

· описание задания;

· текст программы;

· вопросы с ответами, иллюстрирующие корректность работы программы;

· вывод.

Наши рекомендации