Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Компютерні системи штучного інтелекту_методичні...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
521.73 Кб
Скачать

2.1. Програма роботи та завдання.

2.1.1. Створити в середовищі Turbo Prolog програму подібну прикладу 1 та дослідити її.

2.1.2. Задати різні варіанти цілей та проаналізувати отримані результати.

2.1.3. Дослідити програму з прикладу 2. Зафіксувати результати.

2.1.4. Дослідити програму прикладу 3.

2.1.5. Порівняти програми-приклади, що залишились за їх ефективністю розв’язання поставленої задачі.

2.1.6. Зафіксувати у звіті вихідні коди створених програм та логіку їх роботи.

2.1.7. Відповісти письмово на контрольні питання.

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

1) Що таке ітерація?

  1. Зв'язок між ітерацією та рекурсією?

Лабораторне заняття № 7

Тема: Розв’язання практичних задач за допомогою рекурсії

Мета роботи. Навчитися застосовувати рекурсію при написанні програм на Turbo Prolog; розв’язати декілька варіантів завдань; проаналізувати отримані результати.

1. Теоретичні відомості

Досить багато задач можна вирішити за допомогою застосування рекурсій. Серед них відомі такі числа, як Фіббоначі, які утворюються за певним законом.

2. Практична частина

2.1. Програма роботи та завдання.

2.1.1. Створити в середовищі Turbo Prolog програму, що обчислює значення функції F(M,N) для довільної пари цілих чисел M,N>=0 у такий спосіб:

F(M,N)=

2.1.2. Створити в середовищі Turbo Prolog програму, що обчислює N-число Фіббоначі.

2.1.3. Записати аналогічну форму умови задачі, як у пункті 2.1.1.

2.1.4. Зафіксувати у звіті вихідні коди створених програм та логіку їх роботи.

2.1.5. Відповісти письмово на контрольні питання.

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

1) Які типи задач можна розв’язати за допомогою рекурсії?

  1. Різниця між рекурсією та бектрекінгом?

Лабораторне заняття № 8

Тема: Лексикографічне впорядкування

Мета роботи. Дослідити використання вмонтованих предикатів Prolog для реалізації введення з клавіатури, створення вікна побудова дерев розбору, завершення програми; проаналізувати отримані результати.

1. Теоретичні відомості

Лексикографічне впорядкування – це задача , що може бути розв’язана за допомогою рекурсивних структур даних, і яка полягає у впорядкуванні певного списку слів за допо-могою рекурсивних методів.

2. Практична частина

domains

chartree = tree(char, chartree, chartree);

end

predicates

do(chartree)

action(integer, chartree, chartree)

create_tree(chartree, chartree)

insert(char, chartree, chartree)

write_tree(chartree)

repeat

goal do(end).

clauses

do(Tree):-

makewindow(1,7,7,"character tree sort",0, 0, 20, 60),

repeat,

clearwindow,

write("Enter 1 to create a tree\n"),

write("Enter 2 to show tree\n"),

write("Enter 7 to exit\n"),

readint(X),

action(X, Tree, NewTree),

do(NewTree).

action(1, Tree, NewTree):-

write("Enter characters or # toend: "),

create_Tree(Tree, NewTree).

action(2, Tree, Tree):-

write_Tree(Tree),

write("\nPress a key to continue"),

readchar(_).

action(7, _, end):- exit.

create_Tree(Tree, NewTree):-

readchar(C),

C <> 0'#' , !,

write(C, " "),

insert(C, Tree, TempTree),

create_Tree(TempTree,NewTree).

create_Tree(Tree, Tree).

insert(New, end, tree(New, end, end)):- !.

insert(New,

tree(Element, Left, Right),

tree(Element, NewLeft, Right)):-

New < Element, !,

insert(New, Left, NewLeft).

insert(New, tree(Element, Left, Right),

tree(Element, Left, NewRight)):-

insert(New, Right, NewRight).

write_Tree(end).

write_Tree(tree(Item, Left, Right)):-

write_Tree(Left),

write(Item, " "),

write_Tree(Right).

repeat.

repeat:-repeat.