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
   42   43   44   45   46   47   48   49   50   51   52