Реферат: Информационно-справочная система, обеспечивающая работу с базой данных Bit

   1. Тема:

      разработка  информационно-справочной системы.

   2. Исходные данные:

      Разработать информационно-справочную систему, обеспечиваю-

      щую работу с базой данных Bit включающей записи вида:

   ╔════════════════════════════════════════════════════════╗

   ║               СПИСОК АБИТУРЬЕНТОВ                     ║

   ╠═══╦════════════════════╦════╦═════╦════════════════════╣

   ║  ║      ФИО           ║    ║  No ║ оценки за экзамены ║

   ║No╠═══════╦═══╦════════╣Пол║ экз.╠══════╦══════╦══════╣

   ║  ║Фамилия║Имя║Отчество║    ║листа║ 1 экз║2 экз║ 3 экз║

   ╠═══╬═══════╬═══╬════════╬════╬═════╬══════╬══════╬══════╣

   Из базы Bit создать базу Вstud с записями вида:

   ╔════════════════════════════════════════════════════════╗

   ║                   СПИСОК СТУДЕНТОВ                    ║

   ╠════╦═════════════════════════════════════╦═════╦═══════╣

   ║   ║                 ФИО                 ║  No ║ сумма ║

   ║No ╠════════════╦═══════════╦════════════╣экз.║ балов ║

   ║   ║   Фамилия  ║    Имя    ║  Отчество  ║листа║      ║

   ╠════╬════════════╬═══════════╬════════════╬═════╬═══════╣

   Меню системы должно включать режимы корректировки,  уничтоже-

   ния просмотра, загрузки,  сохранения.

   Язык  программирования Пролог.

   3. Перечень вопросов, подлежащих разработке:

      3.1 Разработка меню, обеспечивающее взаимодействие пользо-

          вателя с системой, в соответствии с заданием,  предус-

          мотрев режимы:

           - корректировки данных,

           - уничтожения данных,

           - просмотра базы,

           - загрузки базы,

           - сохранения базы,

           - создания новой базы.

      3.2 Разработка процедур:

            -корректировки данных,

           - уничтожения данных,

           - просмотра базы,

           - загрузки базы,

           - сохранения базы,

           - создания новой базы.

   4. Перечень графических материалов:

      4.1 структурная схема меню

      4.2 структурная схема программы.

   5. Календарный план-график работы над курсовой работой:

      1. Получение задания

                           4.10.96

      2. Анализ задания, постановка задачи,  подбор  и  изучение

         литературы

                           18.10.96

      3. Разработка меню и структуры программы

                           25.10.96

      4. Разработка процедур информационно-справочной системы

                           15.11.96

      5. Отладка программы

                           29.11.96

      6. Оформление пояснительной записки и сдача работы на про-

         верку

                           24.12.96

      7. Защита курсовой работы

                           25.12.96

                             Руководитель          /Холкин И.И./

                             Студент   /Данченков А.В., ИИ-1-95/

                          

                                                      

         Введение… 4

         1. Понятие об информационных системах и их

            программной реализации… 4

         2. База данных и способы ее представления… 4

         3. Разработка системного меню… 5

          4.Разработка структуры программы… 7

         5. Разработка процедур:

            5.1 Основной процедуры Begin… 8

            5.2 Вывода главного меню Main_menu… 8

            5.3 Автоматической загрузки БД Autoload… 9

            5.4 Вывода информации о системе

                Working(0)… 9

            5.5 Вывода меню корректировки Working(1). 9

            5.6 Удаления записей Working(2)… 9

            5.7 Вывода меню просмотра Working(3)… 9

            5.8 Вывода меню загрузки Working(4)… 10

            5.9 Вывода меню сохранения Working(5)… 10

            5.10 Создания новой БД Working(6)… 10

            5.11 Выхода из программы Working(7)… 10

            5.12 Обработки ошибки пользователя

                 Working(_)… 10

            5.13 Корректировки данных Correct(1)… 10

            5.14 Добавления новых записей Correct(2). 11

            5.15 Просмотра БД View… 11

            5.16 Вспомагательной Accept… 11

            5.17 Вспомагательных Skip и Skip1… 11

            5.18 Загрузки БД с диска Bd_load… 12

            5.19 Сохранения БД на диске Bd_save… 12

            5.20 Вспомагательной Ask… 12

            5.21 Mesage… 12

            5.22 Error и Io_error… 12

            5.23 Ok… 12

         6. Листинг программы… 13

         7. Отладка программы… 24

         8. Инструкция пользователя и решение

            контрольных примеров:… 25

         Заключение… 28

         Список литературы… 29

                           

   Данная курсовая написана на языке Пролог в среде Turbo Prolog

v2.0 (русифицированная версия). В структуре языка заложены  воз-

можностипростой и черезвычайно эффективной работы с базами  дан-

ных,что позволяет на его основе создавать различного рода инфор-

мационно- справочные системы. Структура  языка  Пролог  соответ-

ствуетструктуре реляционных баз  данных.  Так  отношению  в  РБД

соответствуетпредикат в Прологе, элементу — факт, атрибуту отно-

шения- аргумент предиката и т.д. Встроенные в  Пролог  предикаты

работыс окнами позволяют создать дружественный интерфейс для ра-

ботыпользователя с информационно — справочной системой.

           

             

    Информационно-справочные системы -  это  программы-оболочки,

служащиедля управления массивами и  базами  данных.  В  наш  век

всеобщейкомпьютеризации информационно-справочные системы  значи-

тельнооблегчают труд человека во всех отраслях народного  хозяй-

ства.Значительно упростилась работа московской милиции по  обна-

ружениюугнаного транспорта после создания в Москве  компьютерных

базданных по угнаным автомобилям. Бухгалтерам предприятий и фирм

теперьне нужно перебирать горы бумаг, чтобы получить все  данные

осотруднике: достаточно загрузить информационно-справочную  сис-

темуи она в удобной форме выдаст всю необходимую информацию.

    Области применения информационно-справочных систем  воистину

безграничны:это ведение статистики удоя скота на ферме,  состав-

лениекаталогов книг в библиотеках и произведений искусства в му-

зеях,сбор данных о наличии рабочих вакансий в данном  регеоне  и

многиедругие.

    Одним из способов програмной реализации  информационно-спра-

вочнойсистемы является использование для ее создания языка логи-

ческогопрограммирования Пролог. В данной реализации языка содер-

житсямножество встроенных  предикатов,  существенно  облегчающих

написаниетаких систем.

           

    База данных в простейшем случае  -  упорядоченная  структура

данныхв виде таблицы, каждая  запись  которой  может  объединять

разнотипныеданные, причем все записи одной базы  имеют  одинако-

вуюструктуру. Существуют три модели  представления  баз  данных:

иерархическая,сетевая и реляционная. В силу  особенностей  языка

Пролог,с его  помощью  реализуется  реляционная  модель.  Каждая

строкав базе данных называется элементом отношения,  каждая  ко-

лонка- атрибутом отношения, колличество колонок  -  арностью,  а

колличествострок — мощностью. В  языке  программирования  Пролог

атрибутуотношения соответствует аргумент  предиката,  арности  -

колличествоаргументов в предикате, отношению — предикат, элемен-

ту- факт, и мощности — число фактов. Исходя  из  вышеперечислен-

ныхсоответствий Пролог является прекрасным средством для  реали-

зацииреляционных баз данных.

                 

    Все режимы программы активизируются с помощью меню,  которое

реализованос помощью процедуры main_menu. Для активизации  како-

голибо режима  пользователю  следует  нажать  цифровую  клавишу,

соответствующуювыбранному пункту меню.

    Меню данной  программы  состоит из  семи пунктов:

    0 — О системе...           — вывод данных о системе

    1 — Корректировка данных   — режим корректировки данных

    2 — Уничтожение данных     — режим удаления данных

    3 — Просмотр базы          — режим просмотра базы

    4 — Загрузка базы          — режим загрузки базы

    5 — Сохранение базы        — режим сохранения базы

    6 — Создание новой базы    — режим создания новой базы

    7 — Выход из программы     — выход из программы

 На следующей странице представлена графическая структура меню.

               

         

                     ╔═══════════════════╗

                     ║       begin       ║

                     ║───────────────────║

                     ║основная  процедура║

                     ╚═════════╦═════════╝

              ╔════════════════╩═══════════════╗

      ╔═══════╩═════════╗              ╔══════╩═══════╗

      ║    autoload     ║               ║  main_manu   ║

      ║─────────────────║              ║──────────────║

      ║ автозагрузка БД ║               ║ главное меню ║

      ╚═════════════════╝              ╚══════╦═══════╝

                                               ║

     ╔════════╦════════╦════════╦═══════╦══════╬═══════╗

     ║        ║        ║        ║       ║      ║      ║

  ╔═══╩══════╗║ ╔══════╩══════╗║ ╔═════╩════╗║ ╔═════╩════╗

  ║working(0)║║ ║ working(1)  ║ ║ ║working(2)║ ║ ║working(3)║

  ║──────────║║ ║─────────────║║ ║──────────║║ ║──────────║

  ║Информация║║ ║Корректировка║ ║ ║ Удаление ║ ║ ║Просмотр ║

  ║о системе║ ║ ║   данных    ║ ║ ║  данных  ║║ ║   базы   ║

  ╚══════════╝║ ╚══════╦══════╝║ ╚═════╦════╝║ ╚═════╦════╝

 ╔═════════════╣      ╔╝        ║       ╚╗     ║       ╚═════╗

 ║            ║       ║         ║        ║     ╚═╗          ║

 ║      ╔═════╩═════╗║  ╔══════╩══════╗║ ╔═════╩════╗     ║

 ║      ║ working(4)║ ║  ║  working(5) ║ ║ ║working(6)║     ║

 ║      ║───────────║║  ║─────────────║║ ║──────────║     ║

 ║      ║ Процедура ║ ║  ║  Процедура  ║ ║ ║Создание ║      ║

 ║      ║загрузки БД║ ║  ║сохранения БД║ ║ ║новой БД ║      ║

 ║      ╚═════╦═════╝║  ╚══════╦══════╝║ ╚══════════╝     ║

 ║            ║       ║         ╚══════╗║                   ║

 ║            ╚╗      ╠═══════╦══════╗║ ╚═══════════╗      ║

 ║╔══════════╗║      ║       ║      ║ ╚═════╗      ║       ║

 ║║working(7)║ ║ ╔════╩═════╗║ ╔════╩═════╗║ ╔═════╩═════╗║

 ╠═╣──────────║║ ║correct(1)║ ║ ║correct(2)║ ║ ║accept(N) ║ ║

 ║║  Выход   ║ ║ ║──────────║║ ║──────────║║ ║───────────║║

 ║╚══════════╝║ ║Изменение ║ ║ ║Ввод новых║ ║ ║Определение║║

 ║╔══════════╗║ ║  данных  ║ ║ ║  данных  ║ ║ ║удаляемой ║ ║

 ║║working(_)║ ║ ╚══════════╝║ ╚══════════╝║ ║   записи  ║ ║

 ╚═╣──────────║║      ╔═══════╩════════╗    ║ ╚═══════════╝║

   ║Обработка║ ║      ║   correct(_)   ║     ║              ║

   ║ ошибки  ║ ║      ║────────────────║    ║               ║

   ╚══════════╝║      ║ выход в главное║     ║           ╔═══╝

               ║      ║      меню      ║     ║           ║

               ║      ╚════════════════╝    ║           ║

               ║                             ║           ║

               ║                             ║           ║

              (1)                           (2)         (3)

              (1)                            (2)        (3)

               ║                              ║          ║

               ║                              ║          ╚══╗

               ║                              ╚═══════════╗║

       ╔═══════╩═══════╦════════════╦══════════════╗     ║ ║

  ╔═════╩══════╗╔══════╩════╗╔═════╩══════╗╔═════╩════╗║ ║

  ║load_bd(1) ║ ║ load_bd(2)║ ║ load_bd(3) ║ ║load_bd(4)║║ ║

  ║────────────║║───────────║║────────────║║──────────║║ ║

  ║ Загрузка  ║ ║ Загрузка  ║ ║  Загрузка  ║ ║Загрузка ║ ║ ║

  ║основнойБД ║ ║основной БД║ ║  новой БД  ║ ║ новойБД ║ ║ ║

  ║ из файла  ║ ║ из файла  ║ ║  из файла  ║ ║из файла ║ ║ ║

  ║пользователя║║  bit.dat  ║ ║пользователя║ ║ bstud.dat║ ║║

  ╚════════════╝╚═══════════╝╚════════════╝╚══════════╝║ ║

                                                          ║ ║

       ╔═══════════════╦════════════╦══════════════╦══════╝║

  ╔═════╩══════╗╔══════╩════╗╔═════╩══════╗╔═════╩════╗  ║

  ║save_bd(1) ║ ║ save_bd(2)║ ║ save_bd(3) ║ ║save_bd(4)║  ║

  ║────────────║║───────────║║────────────║║──────────║  ║

  ║Сохранение ║ ║ Сохранение║ ║ Сохранение ║ ║Сохранение║  ║

  ║основнойБД ║ ║основной БД║ ║  новой БД  ║ ║ новойБД ║   ║

  ║ в файле   ║ ║  в файле  ║ ║  в файле   ║ ║ в файле ║   ║

  ║пользователя║║  bit.dat  ║ ║пользователя║ ║ bstud.dat║  ║

  ╚════════════╝╚═══════════╝╚════════════╝╚══════════╝  ║

                                                            ║

          ╔═══════════════════╦═══════════════════╦═════════╝

   ╔══════╩══════╗    ╔══════╩══════╗    ╔══════╩══════╗

   ║   view(1)   ║     ║   view(2)   ║     ║  view(_)   ║

   ║─────────────║    ║─────────────║    ║─────────────║

   ║  Просмотр   ║     ║   Просмотр  ║     ║   Выход    ║

   ║ основной БД ║     ║   новой БД  ║     ║    вменю   ║

   ╚═════════════╝    ╚═════════════╝    ╚═════════════╝

                    

    Процедуры создавались на основе требований, изложенных в за-

даниик курсовой работе.

                

    С помощью процедуры Begin в разделе GOAL инициируется  нача-

ловыполнения программы. Эта процедура  запускает  процедуру  на-

чальнойзагрузки базы данных Autoload, после чего передает управ-

лениепроцедуре вывода главного меню Main_menu.

        

    Эта процедура выводит список пунктов главного  меню  и  ожи-

даетот пользователя ввода числа, которое будет занесено в  пере-

меннуюC. После этого вызывается процедура обработки основных ре-

жимовWorking, в которую переменная C передается в качестве аргу-

мента.В процедуре использован предикат Repeat, в  связи  с  этим

послевозврата из процедуры Working в случае, если C не  равно  7

происходитповторный вывод пунктов меню и ожидание ввода числа.

      

    Процедура Autoload предназначена для автоматической  загруз-

киосновной базы данных при запуске  программы.  Это  значительно

облегчаетработу с системой, так как  не  требуется  при  запуске

программыподгружать основную БД из режима «Загрузка».  Процедура

Autoloadпроверяет существование на диске  файла  bit.dat  с  по-

мощьювстроенного предиката existfile и подгружает БД в память  с

помощьюпредиката consult. В  случае  отсутствия  файла  выдается

сообщениеоб ошибке.

     

    Данная процедура выводит информацию о языке, на котором  на-

писанасистема и данные о создателе.

    

    Процедура Working(1) служит для вывода меню  режима  коррек-

цииданных, находящихся в БД, и внесения новых записей. После ак-

тивизациипроцедура выводит меню в котором имеются режимы: «Изме-

нениеданных», «Добавление данных» и «Выход в меню». Активизация

режимовпроисходит аналогично главному  меню  с  помощью  нажатия

соответствующейцифровой клавиши. Считанное  с  клавиатуры  число

заносится в  переменную  X,  после  чего  вызывается   процедура

Correct, аргументом  которой  служит  X.  С  помощью    процедур

Correct(1)и Correct(2), описанных ниже, собственно и  реализует-

сярежимы коррекции и добавления. В  процедуре  Working(1)  также

примененпредикат Repeat, с помощью которого  реализован  повтор-

ныйвывод меню в случае ошибки ввода.

          

    Данная процедура предназначена для удаления записей из  базы

данных.В программе предусмотрена возможность задания либо  номе-

раудаляемой записи, либо  фамилии  абитурьента,  содержащейся  в

даннойзаписи. Эта  возможность  реализуется  процедурой  Accept,

описаннойниже. Процедура Accept возвращает номер выбранной запи-

сии с помощью встроенного предиката retract запись удаляется  из

базы данных. В  случае  ошибки  (отсутствия  записи,   выбранной

пользователемдля удаления) выводится  соответствующее  сообщение

(процедураError).

      

    Процедура Working(3) выводит меню, содержащее пункты: «Прос-

мотросновной базы», «Просмотр базы BSTUD» и «Выход в главноеме-

ню».Собственно просмотр содержимого  БД  осуществляют  процедуры

View(1)и View(2), рассмотренные ниже. Процедура Working(3)  реа-

лизованав стиле процедур Main_menu и  Working(1)  с  применением

процедурыRepeat.

       

    Данная процедура выводит меню, содержащее следующие  пункты:

«Загрузитьосновную базу из выбранного файла», " Загрузить основ-

нуюбазу из файла bit.dat", " Загрузить базу BSTUD из  выбранного

файла","Загрузить базу BSTUD из  файла  bstud.dat"  и  «Выход  в

главноеменю». Собственно загрузка баз данных осуществляется про-

цедуройLoad_bd, аргументом которой служит переменная C,  считан-

наяс клавиатуры при вводе пользователем номера желаемого  пункта

меню.В процедуре Working(4) также применена процедура Repeat.

      

    Процедура Working(5) аналогична Working(4).  Для  сохранения

базданных применяется процедура Save_bd, рассмотренная ниже, ар-

гументомкоторой является переменная I.

         

    Данная процедура служит для создания новой базы данных. Про-

цедураработает следующим образом: из базы, имеющей  метку  «аби-

турьент», извлекаются нужные данные,  производится  суммирование

оценокза экзамены и новая запись с помощью предиката assertz до-

бавляетсяк базе с меткой «студент». Для того, чтобы были обрабо-

танывсе записи, используется fail. После создания новой  БД  вы-

даетсясоответствующее сообщение и предупреждение  о  том,  чтобы

пользовательне забыл сохранить вновь созданую БД.

        

    Данная процедура состоит  из  отсечения,  которое  запрещает

дальнейшийперебор. Процедура оканчивается успехом  и  происходит

возвратв процедуру Main_menu, в которой выполняется условие C=7,

благодарячему происходит выход из программы.

   

    Процедура Working(_) выводит сообщение об ошибке ввода  циф-

рыи подсказку о том, что следует ввести число от 0 до  7.  Вывод

сообщениясопровождается подачей звукового  сигнала,  реализован-

нойс помощью встроенного предиката sound. После нажатия  клавиши

происходитвозврат в главное меню.

        

     Данная процедура  производит  коррекцию  данных  в  записи.

Имеетсявозможность выбрать запись для корректировки либо по  но-

меру,либо по фамилии абитурьента. Данную возможность  предостав-

ляетпроцедура Accept, описанная ниже, которая  вызывается  после

созданияокна «Изменение данных». Процедура Accept  передает  но-

мервыбранной записи в переменную N, после чего содержимое  запи-

сираспечатывается на экране. После этого пользователю предостав-

ляетсявозможность ввести измененные данные; если  нет  необходи-

мостиизменять какой-либо элемент, можно нажать клавишу  <Enter>.

Вседанные, в том числе и числа, считываются в формате строк. Это

необходимодля осуществления возможности отказа от изменения эле-

ментанажатием клавиши <Enter>. Все считанные  данные  передаются

процедурамSkip (для строковых выходных данных) и Skip1 (для  це-

лочисленныхвыходных данных). Эти процедуры в зависимости от  то-

го, была  ли  нажата  клавиша  <Enter>  возвращают  в  процедуру

Correct(1)либо старое значение, либо новое,  при  чем  процедура

Skip1преобразует с помощь встроенного предиката str_int  строко-

выеданные в целочисленные. Старая запись удаляется из базы  дан-

ныхпредикатом retract, а новая добавляется  предикатом  assertz.

Поокончании выводится предупреждение о том, что  следует  сохра-

нитьвновь введенные данные(процедура Mesage).

      

     Процедура Correct(2) служит для добавления  записей  к  БД.

Пользовательпоочередно вводит каждый элемент записи, отвечая  на

запросысистемы. С помощью предиката assertz данные добавляются в

БД,после чего вызывается предикат  Ask,  формирующий  запрос  на

продолжениепроцесса ввода новых записей.  Если  от  пользователя

будетполучен утвердительный ответ, то благодаря процедуре Repeat

циклввода данных повторится, при получении отрицательного  отве-

тасистема выдаст предупреждение о необходимости сохранения вновь

введенныхданных (процедура Mesage) и произойдет возврат из  про-

цедурыCorrect(2).

           

     Данная процедура служит для вывода на экран содержимого ос-

новной( View(1) ) и вновь созданной ( View(2) ) баз данных. Каж-

даяиз процедур выводит заголовочную таблицу, после чего распеча-

тываетсодержимое каждой записи. Для перебора  всей  БД  применен

предикатfail. После вывода всех записей  выводится  просьба  на-

жатьлюбую клавишу для продолжения.

            

     Данная  процедура  является  вспомагательной  к  процедурам

Correct(1)и Working(2). Она в паре со  вспомагательной  процеду-

ройAcp определяет номер желаемой записи после ввода  пользовате-

лемлибо собственно номера этой записи, либо после ввода  фамилии

абитурьента(данные пункты присутствуют в меню, выводимом  проце-

дуройAccept) и возвращает этот номер в вызывавшую процедуру.

         

     Процедуры Skip и Skip1 являются вспомагательными к процеду-

реCorrect(1). Они  позволяют  определить,  следует  ли  замещать

имеющийсяэлемент записи на новый или нет (если была нажата  кла-

виша<Enter>). В процедурах проверяется, является ли первый аргу-

ментпустой строкой. Если это так, то третьему аргумент  присваи-

ваетсявторой. Если же первый аргумент не является  пустой  стро-

кой,то он присваивается третьему аргументу (в  Skip1  происходит

предварительноепреобразование строковой переменной в целочислен-

ную).

          

     Данная процедура осуществляет загрузку баз данных  из  фай-

ловна диске по  признакам,  зависящим  от  аргумента  процедуры:

Bd_load(1)загружает основную БД из файла, заданного  пользовате-

лем,Bd_load(2) — из файла bit.dat, Bd_load(3) -  базу  BSTUD  из

файла,заданного пользователем и BD_load(4) — базу BSTUD из  фай-

лаbstud.dat. В данных процедурах проверяется  наличие  файла  на

дискес помощью предиката existfile и загрузка БД в память с  по-

мощьюпредиката consult. В случае отсутствия файла на диске,  вы-

даетсясоответствующее сообщение (процедура  Io_error).

        

     Данная процедура осуществляет сохранение баз данных в  фай-

лахна диске по  признакам,  зависящим  от  аргумента  процедуры:

Bd_save(1)сохраняет основную БД в файле, заданном пользователем,

Bd_save(2)- в файле bit.dat, Bd_save(3) — базу  BSTUD  в  файле,

заданном пользователем  и  BD_save(4)  -  базу  BSTUD  в   файле

bstud.dat.Сохранение БД  осуществляется  с  помощью  встроенного

предикатаsave. В случае ошибки выдается соответствующее  сообще-

ние(процедура Error).

              

     Процедура  Ask  является  вспомагательной    к    процедуре

Correct(2).Она запрашивает пользователя, желает  ли  он  продол-

житьввод данных.

                    

      Данная процедура выводит  предупреждение  о  необходимости

сохранениявновь введенных данных.

               

      Эти процедуры выводят сообщения об ошибках.

                      

      Данная процедура выводит сообщение об успешном  выполнении

операции.

                     

domains

       Str=string

       Int=integer

       ФИО=фио(Str,Str,Str)

       ОЦЕН=оцен(Int,Int,Int)

database- студент

          студент(Int, ФИО,Int,Int),

database- абитурьент

          абитурьент(Int, ФИО,Str,Int, ОЦЕН)

predicates

       begin

       main_menu

       autoload

       accept(Int)

       acp(Int,Int)

       working(Int)

       correct(Int)

       view(Int)

       skip(Str,Str,Str)

       skip1(Str,Int,Int)

       ask

       mesage

       error

       io_error

       ok

       save_bd(Int)

       load_bd(Int)

       repeat

goal

       begin.

clauses

/*Основная процедура, стр.8 */

     begin:-

          makewindow(1,26,94,«СПИСОК АБИТУРЬЕНТОВ»,0,0,25,80),

           clearwindow,

           autoload,

           main_menu.

/*Главное меню, стр.8 */

     main_menu:-

           repeat,

           cursor(7,0),

           write("                    0 — О системе...  "),nl,

           write("                    1 — Корректировка данных"),nl,

           write("                    2 — Уничтожение записей"),nl,

           write("                    3 — Просмотр базы"),nl,

           write("                    4 — Загрузка базы"),nl,

           write("                    5 — Сохранение базы"),nl,

           write("                    6 — Создание новой базы"),nl,

           write("                    7 — Выход из программы"),nl,

           write("                    =>"),

           readint(C),

           clearwindow,

           working(C),

           clearwindow,

           C = 7,

           retractall(_),

           removewindow.

/*Процедура автоматической загрузки базы данных, стр.9 */

     autoload:-

           retractall(_, абитурьент),

           existfile(«bit.dat»),

           consult(«bit.dat», абитурьент),

           cursor(21,30),

           write("*База загружена*").

     autoload:-

           makewindow(2,74,79,«ОШИБКА»,6,18,8,40),

           cursor(2,10),

           write(«Нет базы на диске»),

           sound(70,294),

           removewindow,

           !.

/*Вывод данных о создателе программы, стр.9 */

     working(0):-

           makewindow(3,27,30,«О системе...»,0,0,25,80),

           nl,nl,

write("                    Инфоpмационно-спpавочная система"),

           nl,nl,

write("                           Список абитурьентов     "),

           nl,nl,nl,nl,

write("                       Программа составлена в среде      "),

           nl,

write("                            TURBO-PROLOG v.2.0."),

           nl,nl,nl,

write("                           автоp: Данченков А.В."),

           nl,nl,

write("                      МГИРЭА, гp.ИИ-1-95  (с) 1996 г. "),

           nl,

           sound(5,220),

           cursor(22,26),

           write(«Нажмите на любую клавишу»),

           readchar(_),

           removewindow,!.

/*Процедура вывода меню корректировки данных, стр.9 */

     working(1):-

           makewindow(4,26,48,«Коppектировка данных»,0,0,25,80),

           sound(5,220),

           repeat,

           nl,

           nl,

           cursor(9,0),

           write("        1 — Изменение данных"),nl,

           write("        2 — Добавление данных"),nl,

           write("        3 — Выход в главное меню" ),nl,

           write("        =>"),

           readint(X),

           clearwindow,

           X>0,X<=3,

           correct(X),

           clearwindow,

           X=3,!,

           removewindow.

/*Процедура уничтожения данных, стр.9 */

     working(2):-

           makewindow(5,48,107,«Уничтожение записей»,0,0,25,80),

           sound(5,220),

           nl,

           accept(N),

           X=N,

           абитурьент(X, фио(Fm,Nm,Ot),Pl,Ls, оцен(E1,E2,E3)),

           retract(абитурьент(X, фио(Fm,Nm,Ot),Pl,Ls, оцен(E1,E2,E3))),

           ok,

           !,

           removewindow.

     working(2):-

           error,

           removewindow,!.

/*Процедура вывода меню просмотра  базы данных, стр.9 */

     working(3):-

           makewindow(6,30,26,«Просмотp базы»,0,0,25,80),

           sound(5,220),

           repeat,

           nl,

           nl,

           cursor(10,0),

           write("            1 — Просмотр основной базы"),nl,

           write("            2 — Просмотр базы BSTUD"),nl,

           write("            3 — Выход в главное меню" ),nl,

           write("            =>"),

           readint(X),

           clearwindow,

           X>0,X<=3,

           view(X),

           clearwindow,

           X=3,!,

           removewindow.

/*Процедура загрузки  базы данных, стр.10 */

     working(4):-

           makewindow(7,62,120,«Загрузка»,5,10,15,60),

           sound(5,220),

           repeat,

           nl,nl,

           write(«1 — Загрузить основную базу из выбранного файла»),nl,

           write(«2 — Загрузить основную базу из файла bit.dat»),nl,

           write(«3 — Загрузить базу BSTUD из выбранного файла»),nl,

           write(«4 — Загрузить базу BSTUD из файла bstud.dat»),nl,

           write(«5 — Выход в основное меню»),nl,

           write("=>"),

           readint(C),

           clearwindow,

           C>0,C<=5,

           load_bd(C),

           clearwindow,

           C = 5,!,

           removewindow.

/*Процедура сохранения базы данных, стр.10 */

     working(5):-

           makewindow(8,62,120,«Сохранение»,5,10,15,60),

           sound(5,220),

           repeat,

           nl,nl,

           write(«1 — Сохранить основную базу в указанном файле»),nl,

           write(«2 — Сохранить основную базу в файле bit.dat»),nl,

           write(«3 — Сохранить базу BSTUD в указанном файле»),nl,

           write(«4 — Сохранить базу BSTUD в файле bstud.dat»),nl,

           write(«5 — Выход в основное меню»),nl,

           write("=>"),

           readint(I),

           clearwindow,

           I>0,I<=5,

           save_bd(I),

           clearwindow,!,

           removewindow.

/*Процедура создания новой базы данных, стр.10 */

  working(6):-

        makewindow(10,43,120,«Создание базы данных BSTUD»,6,18,8,40),

        sound(5,220),

        nl,

        retractall(_, студент),

        абитурьент(N, фио(Fam,Nam,Otch),Pol,List, оцен(E1,E2,E3)),

        N=N1, Fam1=Fam, Nam1=Nam,

        Otch1=Otch, List1=List, Sum=E1+E2+E3,

        assertz(студент(N1, фио(Fam1,Nam1,Otch1),List,Sum)),

        fail.

  working(6):-

        write("          База BSTUD создана."),

        nl,

        write("       Не забудьте сохранить ее!"),

        nl,nl,

         write("       Нажмите на любую клавишу"),

        readchar(_),

        removewindow,!.

/*Процедура выхода, стр.10 */

  working(7):-!.

/*Обработка ошибки пользователя, стр.10 */

  working(_):-

        makewindow(16,74,79,«ОШИБКА ВВОДА»,6,18,8,40),

        nl,

        write("        Введите число от 0 до 7,"),nl,

        write("  соответствующее выбранному пункту"),nl,nl,nl,

        write("        Нажмите на любую клавишу"),

        sound(20,494),

        sound(30,392),

        readchar(_),

        removewindow.

/*Процедура коррекции данных в базе, стр.10 */

  correct(1):-

        makewindow(4,26,48,«Изменение данных»,0,0,25,80),

        nl,

        accept(N),

        X=N,

        абитурьент(X, фио(Fam,Nam,Otch),Pol,List, оцен(E1,E2,E3)),

        clearwindow,nl,

        write(«Порядковый номер абитурьента: „),write(N),nl,

        write(“Фамилия                     : „),write(Fam),nl,

        write(“Имя                         : „),write(Nam),nl,

        write(“Отчество                    : „),write(Otch),nl,

        write(“Пол                         : „),write(Pol),nl,

        write(“Номер экзаменационного листа: „),write(List),nl,nl,

        write(“Оценки за экзамены  -          „),nl,nl,

        write(“За первый:  „),write(E1),write(“   „),

        write(“За второй:  „),write(E2),write(“   „),

        write(“За третий:  „),write(E3),

        nl,nl,nl,

        write(“Введите фамилию                  : „),readln(Fam1),

        write(“Введите имя                       : „),readln(Nam1),

        write(“Введите отчество                 : „),readln(Otch1),

        write(“Введите пол                      : „),readln(Pol1),

        write(“Введите номер экзаменационного листа: „),readln(List1),

        write(“Введите оценки за экзамены  -       „),nl,

        write(“За первый                        : „),readln(Ekz1),

        write(“За второй                        : „),readln(Ekz2),

        write(“За третий                        : „),readln(Ekz3),nl,

        X1=X,

        retract(абитурьент(X, фио(Fam,Nam,Otch),Pol,List, оцен(E1,E2,E3))),

        skip(Fam1,Fam,Fam2),

        skip(Nam1,Nam,Nam2),

        skip(Otch1,Otch,Otch2),

        skip(Pol1,Pol,Pol2),

        skip1(List1,List,List2),

        skip1(Ekz1,E1,E11),

        skip1(Ekz2,E2,E22),

        skip1(Ekz3,E3,E33),

assertz(абитурьент(X1, фио(Fam2,Nam2,Otch2),Pol2,List2, оцен(E11,E22,E33))),

        !,

        mesage,

        removewindow.

/*Процедура добавления новых записей, стр.11 */

  correct(2):-

        makewindow(9,26,48,“Ввод новых данных»,0,0,25,80),

        repeat,

        nl,

        write(«Введите порядковый номер абитурьента: „),readint(K),nl,

        write(“Введите фамилию                    : „),readln(F),nl,

        write(“Введите имя                        : „),readln(N),nl,

        write(“Введите отчество                   : „),readln(O),nl,

        write(“Введите пол                        : „),readln(P),nl,

        write(“Введите номер экзаменационного листа: „), readint(L),nl,

        write(“Введите оценки за экзамены  -»),nl,nl,

        write("          За первый                : "),readint(E1),nl,

        write("          За второй                : "),readint(E2),nl,

        write("          За третий                : "),readint(E3),nl,

        N1=K,

        Fam=F,Nam=N,Otch=O,

        Pol=P,List=L,

        Ekz1=E1,Ekz2=E2,Ekz3=E3,

assertz(абитурьент(N1, фио(Fam,Nam,Otch),Pol,List, оцен(Ekz1,Ekz2,Ekz3))),

        ask,!,

        mesage,

        removewindow.

  correct(_).

/*Процедура просмотра базы, стр.11 */

  view(1):-

        makewindow(16,31,26,«Просмотp основной базы»,0,0,25,80),

        nl,nl,

write("╔═══════════════════════════════════════════════════════╗"),nl,

write("║              СПИСОК АБИТУРЬЕНТОВ                     ║"),nl,

write("╠════╦═════════════════════╦═══╦═════╦══════════════════╣"),nl,

write("║   ║       ФИО           ║   ║  No ║оценки за экзамены║"),nl,

write("║No ╠═══════╦════╦════════╣Пол║экз.╠═════╦══════╦═════╣"),nl,

write("║   ║Фамилия║Имя ║Отчество║   ║листа║1 экз║2 экз║3 экз║"),nl,

write("╠════╬═══════╬════╬════════╬═══╬═════╬═════╬══════╬═════╣"),nl,

        абитурьент(N, фио(Fam,Nam,Otch),Pol,List, оцен(E1,E2,E3)),

        cursor(Z,_),

        cursor(Z,2),write(N),

        cursor(Z,5),write("║",Fam),

        cursor(Z,18),write("║",Nam),

        cursor(Z,30),write("║",Otch),

        cursor(Z,43),write("║  ",Pol),

        cursor(Z,49),write("║  ",List),

        cursor(Z,55),write("║   ",E1),

        cursor(Z,62),write("║   ",E2),

        cursor(Z,69),write("║   ",E3),

        cursor(Z,0),write("║"),

        cursor(Z,76),write("║"),

        nl,

        fail.

  view(1):-

write("╚════╩═══════╩════╩════════╩═══╩═════╩═════╩══════╩═════╝"),

        nl,

        cursor(22,26),

        write(«Нажмите на любую клавишу»),

        readchar(_),

        removewindow.

  view(2):-

        nl,

        makewindow(13,31,26,«Просмотр новой базы данных»,0,0,25,80),

write("╔═══════════════════════════════════════════════════════╗"),nl,

write("║                   СПИСОК СТУДЕНТОВ                   ║"),nl,

write("╠════╦════════════════════════════════════╦═════╦═══════╣"),nl,

write("║   ║                 ФИО                ║  No ║ сумма ║"),nl,

write("║No ╠════════════╦═══════════╦═══════════╣экз.║ балов ║"),nl,

write("║   ║   Фамилия  ║    Имя    ║  Отчество ║листа║      ║"),nl,

write("╠════╬════════════╬═══════════╬═══════════╬═════╬═══════╣"),nl,

        студент(N, фио(Fam,Nam,Otch),List,Sum),

        cursor(Z,_),

        cursor(Z,11),write(N),

        cursor(Z,14),write("║",Fam),

        cursor(Z,27),write("║",Nam),

        cursor(Z,39),write("║",Otch),

        cursor(Z,52),write("║  ",List),

        cursor(Z,58),write("║   ",Sum),

        cursor(Z,9),write("║"),

        cursor(Z,66),write("║"),

        nl,

        fail.

  view(2):-

write("╚════╩════════════╩═══════════╩═══════════╩═════╩═══════╝"),

        nl,

        cursor(22,26),

        write(«Нажмите на любую клавишу»),

        readchar(_),

        removewindow.

  view(_).

/*Вспомагательная процедура к процедуре */

/*  correct(1)  и working(2), стр.11    */

  accept(N):-

        nl,

        cursor(10,0),

        write("     1 — известен номер абитурьента"),nl,

        write("     2 — известна  фамилия"),nl,

        write("     =>"),

        readint(X),

        acp(X,N).

  acp(1,N):-

        nl,

        write("     Введите номер абитурьента: "),nl,

        write("     >"),

        readint(N),

        абитурьент(P,_,_,_,_),

        P=N.

     acp(1,N):-

           N=0.

     acp(2,N):-

           nl,

           write("  Введите фамилию абитурьента: "),nl,

           write("  >"),

           readln(L),

           абитурьент(Y, фио(L,_,_),_,_,_),

           N=Y.

     acp(2,N):-

           N=0.

/*Вспомагательная процедура к correct(1), стр.11 */

     skip("",Fam,Fam2):-

           Fam2=Fam,

           !.

     skip(Fam1,_,Fam2):-

           Fam2=Fam1,

           !.

      skip1("",Fam,Fam2):-

           Fam2=Fam,

           !.

     skip1(Fam1,_,Fam2):-

           str_int(Fam1,Fam3),

           Fam2=Fam3,

           !.

/*Процедура чтения с диска, стр.12 */

     load_bd(1):-

           retractall(_, абитурьент),nl,nl,

           write("  Введите имя файла :"),

           readln(N),

           existfile(N),

           consult(N, абитурьент),

           ok,

           !.

     load_bd(1):-

           io_error,

           !.

     load_bd(2):-

           retractall(_, абитурьент),

           existfile(«bit.dat»),

           consult(«bit.dat», абитурьент),

           ok,

           !.

     load_bd(2):-

           io_error,

           !.

     load_bd(3):-

           retractall(_, студент),nl,nl,

           write("  Введите имя файла :"),

           readln(N),

           existfile(N),

           consult(N, студент),

           ok,

           !.

     load_bd(3):-

           io_error,

           !.

     load_bd(4):-

           retractall(_, студент),

           existfile(«bstud.dat»),

           consult(«bstud.dat», студент),

           ok,

           !.

     load_bd(4):-

           io_error,

           !.

     load_bd(_).

/*Процедура записи на диск, стр.12 */

     save_bd(1):-

           nl,nl,

           write("  Введите имя файла: "),

           readln(N),

           save(N, абитурьент),nl,

           ok,

           !.

     save_bd(1):-

           error.

     save_bd(2):-

           save(«bit.dat», абитурьент),

           ok,

           !.

     save_bd(2):-

           error.

     save_bd(3):-

           nl,nl,

           write("  Введите имя файла: "),

           readln(N),

           save(N, студент),nl,

           ok,

           !.

     save_bd(3):-

           error.

     save_bd(4):-

           save(«bstud.dat», студент),

           ok,

           !.

     save_bd(4):-

           error.

     save_bd(_).

/*Процедура запроса на окончание ввода в correct(2), стр.12 */

      ask:-

           makewindow(10,43,120,«Вопрос»,6,18,8,40),nl,nl,

           write("  Продолжить процесс ввода данных? "),nl,nl,

           write("             [Д]а/[Н]ет"),

           readchar(Ch),

           removewindow,

           clearwindow,

           Ch='Н',!.

/*Вывод предупреждения о необходимости сохранения данных, стр.12 */

    mesage:-

           makewindow(17,74,79,«Предупреждение»,6,18,8,40),nl,

           write("        Не забудьте сохранить "),nl,

           write("        вновь введенные данные!"),nl,nl,

           write("       Нажмите на любую клавишу"),

           readchar(Ch),

           removewindow.

/*Процедуры вывода сообщения об ошибке, стр.12 */

     error:-

           makewindow(15,74,79,«ОШИБКА»,6,18,8,40),

           cursor(2,16),

           write(«ОШИБКА»),nl,nl,

           write("        Нажмите на любую клавишу"),

           sound(70,294),

           readchar(_),

           removewindow,

           !.

     io_error:-

           makewindow(16,74,79,«ОШИБКА»,6,18,8,40),

           cursor(2,7),

           write(«Данного файла нет на диске»),nl,nl,

           write("        Нажмите на любую клавишу"),

           sound(70,294),

           readchar(_),

           removewindow.

/*Процедура вывода сообщения об успешном завершении */

/*              данной операции, стр.12             */

     ok:-

           makewindow(17,27,90,«ОК»,6,18,8,40),

           cursor(2,7),

           write("   ОПЕРАЦИЯ ВЫПОЛНЕНА"),nl,nl,

           write("        Нажмите на любую клавишу"),

           readchar(_),

           removewindow.

/*Процедура repeat */

     repeat.

     repeat:- repeat.

                     

       При отладке программы ошибки устранялись в три этапа.  На

первомэтапе интерпритатор языка Пролог сам указывал на синтакси-

ческиеошибки. Такие ошибки возникали при неправильном  написании

именвстроенных предикатов, когда я забывал описать новые  преди-

катыв разделе predicates и т.д. Если компиляция прошла  успешно,

нопрограмма работала некорректно, приходилось переходить ко вто-

ромуэтапу — просмотру текста программы и логическому  осмыслению

ошибки.На этом этапе были устранены такие ошибки, как вывод все-

гоодной записи базы данных в режиме просмотра БД. Причиной  это-

му былоотсутствие в конце процедуры предиката fail. Ошибка  была

устранена.Если не помогал второй этап, приходилось переходить  к

третьему- трассировке. Так была  установлена  следующая  ошибка:

привыходе из процедуры Working(4) главное меню выводилось  не  в

окне«Список абитурьентов», а в окне «Загрузка» (т.е.  не удаля-

лосьэто окно «Загрузка»). После трассировки было выяснено, что в

процедурене в том месте стоит предикат Repeat ( он стоял в нача-

ле процедуры,  а  его  следовало  поставить   после    предиката

makewindow),из-за чего происходило  многократное  создание  окна

«Загрузка»и только однократное его удаление. Ошибка была исправ-

лена.В процессе конечной отладки и решения контрольных  примеров

ошибокв программе обнаружено не было.

   

       Программа «Список абитурьентов» представляет собой инфор-

мационно-справочнуюсистему. В данной программе  имеется  возмож-

ностьсоздания новой базы данных, являющейся списком  зачисленных

студентов.В основной БД присутствуют данные о фамилии,  имени  и

отчествеабитурьента, его поле, номере экзаменационного  листа  и

оценкахза три экзамена. В дочерней БД имеются те  же  данные  за

исключениемпола и того, что оценки за экзамены заменены их  сум-

мой.

       При запуске программы на экран выводится главное меню:

                   0 — О системе...

                   1 — Корректировка данных

                   2 — Уничтожение данных

                   3 — Просмотр базы

                   4 — Загрузка базы

                   5 — Сохранение базы

                   6 — Создание новой базы

                   7 — Выход из программы

       Для выбора какого-либо  пункта  следует  нажать  соответ-

ствующуюцифровую клавишу. Вход в каждый пункт сопровождается ко-

роткимзвуковым сигналом. При нажатии неверной клавиши  на  экран

выводитсяокно с сообщением об ошибке и подсказкой, в  каком  ин-

тервалеследует вводить число. Ниже приводится  описание  каждого

изпунктов.

                       

       При выборе данного пункта на  экран  выводятся  данные  о

системеи ее авторе. После нажатия на  любую  клавишу  происходит

выходв главное меню.

                   

       При входе в этот пункт на экран выводится подменю:

                     1 — Изменение данных

                     2 — Добавление данных

                     3 — Выход в главное меню

       Пункт 1 предназначен для изменения данных в записях.  При

входев него так же появляется подменю:

                     1 — Известен номер абитурьента

                     2 — Известна фамилия

       Если известен номер абитурьента, то следует ввести  цифру

1,если известна фамилия — цифру 2. После этого система  запросит

соответственнономер или фамилию. Фамилию следует вводить  в  том

жевиде (сочетание заглавных и строчных букв) в каком она  имеет-

сяв базе данных. После определения корректируемой записи  систе-

мавыводит на экран все данные об этом абитурьенте и позволяет их

отредактировать,последовательно распечатывая поля  записи.  Если

данныев текущем поле исправлять  не  требуется,  следует  нажать

клавишу<Enter>. После корректировки всех полей система предупре-

дито необходимости сохранить вновь введенные данные и после  на-

жатиялюбой клавиши выйдет в меню «Корректировка данных».

       Пункт 2 меню «Корректировка данных» предназначен для  до-

бавленияновых записей. После входа в этот режим система последо-

вательнозапрашивает данные о  новом  абитурьенте.  По  окончании

вводавыводится запрос, хочет ли пользователь продолжить  процесс

вводановых записей. При утвердительном ответе (нажатии клавиши Д

вверхнем регистре) программа  предоставляет  возможность  ввести

данныееще об одном абитурьенте, после чего  процесс  повторится.

Приотрицательном ответе (нажатии клавиши Н (рус.) на верхнем ре-

гистре)будет выдано  предупреждение  о  необходимости  сохранить

вновьвведенные данные и после нажатия любой клавиши выйдет в ме-

ню«Корректировка данных».

       Пункт 3 служит для выхода в основное меню.

                   

       Данный режим служит для удаления записей из базы  данных.

Каки в подпункте «Изменение данных» режима  «Корректировка  дан-

ных»пользователю предоставляется возможность ввести либо  номер,

либофамилию удаляемого  абитурьента.  После  ввода  этих  данных

произойдетудаление выбранной записи и вывод сообщения,  подтвер-

ждающеговыполнение данной операции. В случае невозможности  уда-

лениязаписи (например запись с данным  номером  не  существует),

выдаетсясоответствующее сообщение об ошибке.

                      

       Данный режим предназначен для просмотра содержимого имею-

щихсябаз данных. При входе в этот режим выводится следующее под-

меню:

                   1 — Просмотр основной базы

                   2 — Просмотр базы BSTUD

                   3 — Выход в главное меню

       Пункт 1 предназначен для просмотра основной базы  данных,

содержимоекоторой подгружается  автоматически  (при  наличии  на

дискефайла bit.dat) при запуске информационно-справочной  систе-

мы.После выбора этого пункта, на экран выводятся  записи  основ-

нойБД в виде таблицы. Для возвращения в меню следует нажать  лю-

буюклавишу.

       Пункт 2 предназначен для просмотра дочерней  базы  данных

BSTUD.В отличии от основной БД сразу после загрузки она пуста, и

чтобыее просмотреть следует создать эту БД с  помощью  пункта  6

илизагрузить ее с диска с помощью пункта 4 основного меню.  Дан-

ныедочерней базы представляются также в виде таблицы.

      Пункт  3 служит для выхода в главное меню.

                      

       Данныйрежим предназначен для загрузки баз данных из  фай-

лов.При входе в этот пункт выводится меню:

         1 — Загрузить основную базу из выбранного файла

         2 — Загрузить основную базу из файла bit.dat

         3 — Загрузить базу BSTUD из выбранного файла

         4 — Загрузить базу BSTUD из файла bstud.dat

         5 — Выход в основное меню

      При выборе пунктов 2 и 4 произойдет загрузка соответствен-

ноосновной и дочерней  БД  из  стандартных  файлов  bit.dat  или

bstud.dat,в случае удачной загрузки будет  выдано  соответствую-

щеесообщение. После нажатия на любую клавишу произойдет выход  в

главноеменю.

      При выборе пунктов 1 и 3 система запросит имя файла, в ко-

торомсодержится соответствующая БД. При успешной  загрузке  поя-

витсясоответствующее сообщение, при сбое появится  сообщение  об

ошибке.

      Пункт 5 предназначен для  выхода в главное меню.

                     

      Данный режим предназначен для сохранения баз  данных.  При

входев данный режим выводится следующее меню:

         1 — Сохранить основную базу в указанном файле

         2 — Сохранить основную базу в файле bit.dat

         3 — Сохранить базу BSTUD в указанном файле

         4 — Сохранить базу BSTUD в файле bstud.dat

         5 — Выход в основное меню

      Работа с его пунктами полностью аналогична работе с подме-

нюрежима «Загрузка базы».

                   

       Данный режим предназначен для создания дочерней базы дан-

ных.При запуске этого режима дочерняя БД создается  автоматичес-

ки,о чем выводится соответствующее сообщение и предупреждение  о

необходимостисохранения дочерней БД. После нажатия любой  клави-

шипроисходит выход в главное меню.

                    

       Этот пункт меню предназначен для выхода  из  информацион-

но-справочнойсистемы в ДОС.

               

       В целях конечной отладки программы и  устранения  скрытых

ошибокбыло решено несколько контрольных  примеров  по  работе  с

системойво всех режимах. Была создана и  отредактирована  основ-

наябаза данных. с ее помощью были  опробованы  режимы  удаления,

корректировки,создания новой БД, загрузки и сохранения  БД.  При

решенииконтрольных примеров ошибок в программе не обнаружено.

                          

        В данной курсовой работе  были  исследованы  возможности

языкапрограммирования Пролог для создания информационно-справоч-

ныхсистем. Можно сделать вывод, что Пролог представляет  богатые

возможностидля реализации таких систем и написания дружественно-

гоинтерфейса для общения  пользователя с программой.

                       

        И.Братко   «Программирование на языке Пролог для

                    искусственного интеллекта»

        Дж.Доорс   «Пролог — язык программирования будущего»

        Ю.Тихонов  «МПролог — язык логического

                    программирования. Версия 2.3»

___

еще рефераты
Еще работы по информатике, программированию