Page 47 - 4800
P. 47
insert(tree(L, Root, R), X, tree(L, Root, RNew)) :- X > Root, insert( R, X, RNew).
list_to_tree([], end).
list_to_tree([H | T], AllTree) :- list_to_tree(T, Tree), insert(Tree, H, AllTree ).
tree_to_list(end, []).
tree_to_list(tree(L, Root, R), List) :- tree_to_list(L, L1), tree_to_list(R, L2),
append(L1, [Root | L2], List).
record(R, tree(LeftTree, _ ,_)):- record( R, LeftTree).
record(R, tree(_, R, _)).
record(R, tree( _, _, RightTree)):- record(R, RightTree).
append([], L2, L3).
append( [H | L1], L2, [H | L3]) :- append(L1, L2, L3).
db1(tree(tree(end, a, end), c, tree(end, e, end) ) ).
db2([c, e, a]).
Використання описаних вище процедур дозволяє як модифікувати бази даних,
так і здійснювати їхні структурні перетворення. Програма 5_2 дає можливість
досліджувати найпростіші перетворення над базами даних. У цій програмі
використовуються два способи представлення баз даних: у вигляді списку та у вигляді
двійкового дерева. Причому структури цілісних інформаційних елементів обох баз
даних прийняті однаковими і, з метою спрощення, містять у собі усього по одному
полю символьного типу.
Обидві бази задаються безпосередньо в програмі за допомогою предикатів db1()
і db2(). Найпростіші перетворення над базами ілюструються за допомогою восьми
цілей, сформованих безпосередньо в програмі. призначення кожної зі сформованих у
програмі цілей.
Перша ціль (goal1) дозволяє переглянути вміст першої бази даних, заданої у
вигляді бінарного дерева.
Друга ціль (goal2) дозволяє послідовно переглянути записи першої бази даних,
що досягається виділенням із БД окремих інформаційних елементів за допомогою
процедури record().
Третя і четверта цілі (goal3 і goal4) ілюструють можливість модифікації першої
БД шляхом додавання в неї нового елемента зі збереженням упорядкованості.
П'ята і шоста цілі (goal5 і goal6) показують, як база даних, задана у вигляді
списку, може бути перетворена в структуру типу бінарного дерева.
Сьома ціль (goal7) ілюструє можливість перетворення впорядкованого дерева у
відсортований список.
Восьма ціль (goal8) показує як подвійне перетворення структури БД дозволяє
відсортувати вихідний список. На першому етапі вихідний список перетворюється в
бінарне дерево. При цьому забезпечується упорядкованість цього дерева. На другому
етапі бінарне дерево перетворюється в список, але тому що дерево упорядковане, то і
список виходить відсортованим.
5.9. Зміст звіту з лабораторної роботи
1. Вказати номер, тему й мету лабораторної роботи.
2. Створити базу даних згідно з індивідуальним завданням (додаток Г) п’ятьма
способами з використанням Пролог.
3. Вивести записи бази даних.
47