Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
05.06.2015
Размер:
55.81 Кб
Скачать

Міністерство освіти і науки України

Кіровоградський національний технічний університет

Кафедра програмного забезпечення

Дисципліна: ” Логічне програмування ”

Лабораторна робота № 3

Тема: «Елементарні рекурсивні програми»

Виконав: ст. групи КІ-07-3

Коломійчук В.

Перевірив: викладач

Якименко Н.М.

Кіровоград 2010

Лабораторна робота № 3

Тема: “ Елементарні рекурсивні програми ”.

Мета: Згадати поняття рекурсії та розглянути методи написання рекурсивних програм на мові програмування Turbo Prolog.

Завдання:

  1. Намалювати на папері власне генеалогічне дерево до четвертого покоління.

Приклад:

2. Скласти програму, що містить факти взаємозв’язків сусідніх поколінь (з предикатами „мати” й „батько”).

Зауваження: предикати з однаковими назвами повинні розташовуватись послідовно, т.б. в одній групі.

3. Включити в програму правила, що описують:

- предків;

- предків по материнській лінії;

- предків по батьківській лінії.

Зауваження: відношення “і” (“,”) зв’язує умови сильніше, ніж відношення “або” (“;”).

  1. Задати питання виду:

  • Хто являється предками вказаної особи?

  • Хто є предками вказаної особи по материнській (батьківській) лінії?

  • Чиїм предком являється вказана особа?

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).

Контрольні питання:

    1. Що таке рекурсія?

Рекурсія – один з фундаментальних механізмів програмування на Пролозі.

    1. Особливості використання рекурсії в Турбо Пролозі?

Рекурсію можна застосовувати для досягнення такого ж ефекту, який реалізується при застосуванні ітеративних керуючих конструкцій (циклів) в процедурних мовах. Прикладом використання рекурсії может служити визначення відношення ”предок”. Дане відношення можна виразити за допомогою двох правил. Перше правило буде визначати безпосередніх предків, а друге – віддалених.

    1. Наведіть приклад програми на мові програмування Турбо Пролог з використанням рекурсії?

Прикладом використання рекурсії може служити визначення відношення ”предок”. Дане відношення можна виразити за допомогою двох правил. Перше правило буде визначати безпосередніх предків, а друге – віддалених.

Соседние файлы в папке ЛП