Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROLOG_Labs / Лабораторная работа 1.doc
Скачиваний:
226
Добавлен:
20.03.2015
Размер:
188.93 Кб
Скачать

Практическое задание

1. Откройте Visual Prolog и ознакомьтесь со средой:

    1. основными окнами;

    2. главным меню;

    3. панелью инструментов;

    4. строкой подсказок.

2. Наберите в окне редактора следующую программу:

Domains

num1, num2, rez = real

predicates

sum(num1,num2,rez)

clauses

sum(Num1,Num2,Rez):-Rez=Num1+Num2.

Как видно, данная программа предлагает найти сумму двух чисел. Входящими параметрами здесь являются Num1, Num2, а выходящим – Rez.

Добавьте в программу правило нахождения суммы трёх чисел – sum(Num1,Num2,Num3,Rez). Не забудьте при этом объявить новый предикат.

  1. Напишите правило Пролога, которое отображает следующую ситуацию. У нас есть факты

отец(николай,иван).

мать(нина,иван).

Необходимо написать правило, которое определяет родителей Ивана.

  1. Пусть у Пролог-системы есть набор таких фактов:

родители(николай,нина,иван).

родители(петр,галина,андрей).

родители(виктор,надежда,мария).

Каждый из фактов трактуется таким образом. Первые два аргумента предиката являются родителями лица, которое определено третьим аргументом. Что будет результатом следующих запросов:

  • Goal: родители(X,Y,_);

  • Goal: родители(_,_,X)?

  1. Опишите на Прологе свое дерево родственных отношений на примере рис.1:

Саша Маша

Петя Света Таня Ваня

Юра Катя

Рис.1. Дерево родственных отношений.

Факты должны быть:

parent/2 (т.е. 2-й арности)

man/1

woman/1

Добавьте правило:

mother(X,Y):- parent(X,Y),woman(X).

Добавьте правило для нахождения всех отцов. Получите список всех матерей и их детей, а также отцов и их детей.

Индивидуальное задание. Согласно своему варианту, обозначьте бинарные отношения родства, определенные на множестве людей. Базовыми отношениями при этом являются: бинарное отношение РОДИТЕЛЬ(англ.: parent), унарное отношение ЖЕНЩИНА (англ.:woman), унарное отношение МУЖЧИНА (англ.:man), бинарное отношение СУПРУГИ (англ.:married). Все базовые отношения задаются в форме фактов.

Перечисленные ниже производные родственные отношения определяются на основе базовых родственных отношений. Производные родственные отношения разбиты на три группы: А) близкие кровные родственники; Б) неблизкие кровные родственники; С) родственники по закону (англ.: in law).

Для получения ответов на запросы согласно своему варианту расширьте свое дерево родственных отношений.

А. БЛИЗКИЕ КРОВНЫЕ РОДСТВЕННИКИ

1. отец (father)

2. мать (mother)

3. сын (son)

4. дочь (daughter)

5. брат (brother)

6. сестра (sister)

7. внук (grandson)

8. внучка (granddaughter)

9. дедушка (grandfather)

10. бабушка (grandmother)

11. тетя (aunt)

12. дядя (uncle)

13. племянник (nephew)

14. племянница (niece)

Б. НЕБЛИЗКИЕ КРОВНЫЕ РОДСТВЕННИКИ

1. Правнук (great_grandson)

2. Правнучка (great_granddaughter)

3. (N)-правнук (n_grandson)

4. (N)-правнучка (n_granddaughter)

5. двоюродный брат [кузен] (first_coustin_brother)

6. двоюродная сестра [кузина] (first_coustin_sister)

7. троюродный брат (second_coustin_brother)

8. троюродная сестра (second_coustin_sister)

9. (N)-юродный брат (n_coustin_brother)

10. (N)-юродная сестра (n_coustin_sister)

11. двоюродный дядя (first_coustin_uncle)

12. двоюродная тетя (first_coustin_aunt)

13. троюродный дядя (second_coustin_uncle)

14. троюродная тетя (second_coustin_aunt)

15. (N)-юродный дядя (n_coustin_uncle)

16. (N)-юродная тетя (n_coustin_aunt)

17. двоюродный племянник (first_coustin_nephew)

18. двоюродная племянница (first_coustin_niece)

19. троюродный племянник (second_coustin_nephew)

20. троюродная племянница (second_coustin_niece)

21. (N)-юродный племянник (n_coustin_nephew)

22. (N)-юродная племянница (n_coustin_niece)

23. отпрыск (любого уровня) (shoot)

24. (N)-юродный брат (любого уровня) (any_coustin_brother)

25. (N)-юродная сестра (любого уровня) (any_coustin_sister)

26. (N)-юродный дядя (любого уровня) (any_coustin_uncle)

27. (N)-юродная тетя (любого уровня) (any_coustin_aunt)

28. (N)-юродный племянник (любого уровня) (any_coustin_nephew)

29. (N)-юродная племянница (любого уровня) (any_coustin_niece)

С. РОДСТВЕННИКИ ПО ЗАКОНУ

1. муж (husband)

2. жена (wife)

3. тесть (wifes_father)

4. теща (wifes_mother)

5. свекор (husbands_father)

6. свекровь (husbands_mother)

7. деверь [брат мужа] (husbands_brother)

8. свояченица [сестра жены] (wifes_sister)

9. свояк [муж свояченицы] (husband_of_wifes_sister)

10. зять

11. невестка

12. золовка

ВАРИАНТЫ ЛАБОРАТОРНЫХ ЗАДАНИЙ

-----------------------------------------

Номер Шифры

варианта родственных отношений

-----------------------------------------

1 А1, Б3 (N=4), С11

2 А2, Б8, С8

3 А3, Б4 (N=5), С1

4 А4, Б7, С2

5 А5, Б9 (N=5), С3

6 А6, Б10 (N=5), С4

7 A7, Б13, С5

8 А8, Б14, С6

9 А9, Б15 (N=4), С7

10 А10, Б16 (N=4), С8

11 А11, Б17 (N=4), С9

12 А12, Б18 (N=4), С10

13 А13, Б19 (N=4), С11

14 А14, Б20 (N=4), С12

15 Б1, Б21 (N=5), С1

16 Б2, Б22 (N=5), С2

17 Б5, Б24 (N=4), С7

18 Б6, Б25 (N=4), С4

19 Б11, Б26 (N=5), С6

20 Б12, Б27 (N=5), С2

21 А11, Б28 (N=6), С10

22 А12, Б29 (N=6), С12

23 А8, Б3 (N=5), С5

24 А9, Б4 (N=4), С3

25 А14, Б19, С9

-----------------------------------------