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

Міністерство освіти і науки, молоді і спорту України

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

Механіко-технологічний факультет

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

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

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

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

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

Салтан В.С.

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

Савеленко О. К.

Кіровоград 2011

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

Завдання:

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

Приклад:

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) Чиїм предком являється вказана особа?

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

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

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

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

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

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

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

3

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