готов лаби 4 курс 1 сим / ЛП / otchet_3 (1)
.docМіністерство освіти і науки, молоді і спорту України
Кіровоградський національний технічний університет
Механіко-технологічний факультет
Кафедра програмного забезпечення
Дисципліна: « Логічне програмування »
Лабораторна робота № 3
Тема: «Елементарні рекурсивні програми»
Виконав: ст. групи КІ-08-2
Салтан В.С.
Перевірила: викладач
Савеленко О. К.
Кіровоград 2011
Мета: Згадати поняття рекурсії та розглянути методи написання рекурсивних програм на мові програмування Turbo Prolog.
Завдання:
-
Намалювати на папері власне генеалогічне дерево до четвертого покоління.
Приклад:
2. Скласти програму, що містить факти взаємозв’язків сусідніх поколінь (з предикатами „мати” й „батько”).
3. Включити в програму правила, що описують:
- предків;
- предків по материнській лінії;
- предків по батьківській лінії.
Зауваження: відношення “і” (“,”) зв’язує умови сильніше, ніж відношення “або” (“;”).
4. Задати питання виду:
-
Хто являється предками вказаної особи?
-
Хто є предками вказаної особи по материнській (батьківській) лінії?
-
Чиїм предком являється вказана особа?
Генеологічне дерево:
Лістинг програми:
domains
s = symbol
predicates
m(s,s)
f(s,s)
pred(s,s)
pred_m(s,s)
pred_f(s,s)
clauses
m ("Katerina","Vitalik").
m ("Galina","Katerina").
m ("Akelina","Galina").
m ("Valentina","Sergey").
m ("Froselina","Valentina").
m ("Marina","Semen").
m ("Natalia","Vasil").
f ("Ivan","Galina").
f ("Oleksandr","Vasil").
f ("Sergey","Vitalik").
f ("Vasil","Katerina").
f ("Semen","Sergey").
f ("Yevgen","Valentina").
f ("Afanasij","Semen").
pred_m(X,Y):-m (X,Y).
pred_m(X,Y):-m (R,Y), pred (X,R).
pred_f(X,Y):-f (X,Y).
pred_f(X,Y):-f (R,Y), pred (X,R).
pred(X,Y):-m(X,Y);f(X,Y).
pred(X,Y):-m(Z,Y),pred(X,Z);f(Z,Y),pred (X,Z).
Результат:
1) Хто являється предками вказаної особи?
2) Хто є предками вказаної особи по материнській (батьківській) лінії?
3) Чиїм предком являється вказана особа?
Контрольні питання:
-
Що таке рекурсія?
Рекурсія – один з фундаментальних механізмів програмування на Пролозі.
-
Особливості використання рекурсії в Турбо Пролозі?
Рекурсію можна застосовувати для досягнення такого ж ефекту, який реалізується при застосуванні ітеративних керуючих конструкцій (циклів) в процедурних мовах. Прикладом використання рекурсії может служити визначення відношення ”предок”. Дане відношення можна виразити за допомогою двох правил. Перше правило буде визначати безпосередніх предків, а друге – віддалених.
-
Наведіть приклад програми на мові програмування Турбо Пролог з використанням рекурсії?
Прикладом використання рекурсії може служити визначення відношення ”предок”. Дане відношення можна виразити за допомогою двох правил. Перше правило буде визначати безпосередніх предків, а друге – віддалених.