готов лаби 4 курс 1 сим / ЛП / L3_Kol
.docМіністерство освіти і науки України
Кіровоградський національний технічний університет
Кафедра програмного забезпечення
Дисципліна: ” Логічне програмування ”
Лабораторна робота № 3
Тема: «Елементарні рекурсивні програми»
Виконав: ст. групи КІ-07-3
Коломійчук В.
Перевірив: викладач
Якименко Н.М.
Кіровоград 2010
Лабораторна робота № 3
Тема: “ Елементарні рекурсивні програми ”.
Мета: Згадати поняття рекурсії та розглянути методи написання рекурсивних програм на мові програмування Turbo Prolog.
Завдання:
-
Намалювати на папері власне генеалогічне дерево до четвертого покоління.
Приклад:
2. Скласти програму, що містить факти взаємозв’язків сусідніх поколінь (з предикатами „мати” й „батько”).
Зауваження: предикати з однаковими назвами повинні розташовуватись послідовно, т.б. в одній групі.
3. Включити в програму правила, що описують:
- предків;
- предків по материнській лінії;
- предків по батьківській лінії.
Зауваження: відношення “і” (“,”) зв’язує умови сильніше, ніж відношення “або” (“;”).
-
Задати питання виду:
-
Хто являється предками вказаної особи?
-
Хто є предками вказаної особи по материнській (батьківській) лінії?
-
Чиїм предком являється вказана особа?
domains
s=symbol
predicates
mama(s,s)
papa(s,s)
predok(s,s)
mat_pred(s,s)
bat_pred(s,s)
clauses
mama("ValentinaM","Vova").
mama("Mariya","ValentinaM").
mama("Ivanna","Mariya").
mama("Olena","Mikola").
mama("Galuna","Valeriy").
mama("Evdokiya","Galuna").
mama("Valentuna","Viktor").
papa("Valeriy","Vova").
papa("Mikola","ValentinaM").
papa("Mihailo","Mariya").
papa("Mihailo","Mikola").
papa("Viktor","Valeriy").
papa("Ivan","Galuna").
papa("Petro","Viktor").
predok(X,Y):-
mama(X,Y);papa(X,Y).
predok(Z,X):-
mama(Y,X),predok(Z,Y);papa(Y,X),predok(Z,Y).
mat_pred(X,Y):-
mama(X,Y).
mat_pred(X,Y):-
mama(Z,Y),predok(X,Z).
bat_pred(X,Y):-
papa(X,Y).
bat_pred(X,Y):-
papa(D,Y),predok(X,D).
Контрольні питання:
-
Що таке рекурсія?
Рекурсія – один з фундаментальних механізмів програмування на Пролозі.
-
Особливості використання рекурсії в Турбо Пролозі?
Рекурсію можна застосовувати для досягнення такого ж ефекту, який реалізується при застосуванні ітеративних керуючих конструкцій (циклів) в процедурних мовах. Прикладом використання рекурсії может служити визначення відношення ”предок”. Дане відношення можна виразити за допомогою двох правил. Перше правило буде визначати безпосередніх предків, а друге – віддалених.
-
Наведіть приклад програми на мові програмування Турбо Пролог з використанням рекурсії?
Прикладом використання рекурсії може служити визначення відношення ”предок”. Дане відношення можна виразити за допомогою двох правил. Перше правило буде визначати безпосередніх предків, а друге – віддалених.