Реферат: Разработка информационно-справочной системы
Задание № 11 на курсовое проектирование по дисциплине “Логическое программирование” студенту Пакостиной Александре Викторовне.
Группа ИР-1-95.
1. Тема исследования: “Разработка информационно — справочной системы”.
2. Исходные данные: База данных BD, включающая записи вида:
|Характеристика детали | | | | | | | | |
|№ |Место |Назван|Цена |Дата поступления | | | | |
| |хранения |ие | | | | | | |
|артику|№ цеха|№склад|детали|руб |коп |год |месяц |число |
|ла | |а | | | | | | |
| | | | | | | | | |
Язык программирования: Пролог.
3. Перечень вопросов, подлежащих разработке:
4. Разработать меню, обеспечивающее взаимодействие пользователя с системой, в соответствии с заданием, предусмотрев режимы:
5. Разработать процедуры:
. уничтожения записей по признакам;
. загрузки;
. сохранения;
. просмотра;
. уничтожения;
3.3. Предусмотреть создание из базы BD новых баз данных B1, B2, характеризуемых признаками, задаваемыми пользователем.
4. Перечень графических материалов:
4.1. Структурная схема меню:
[pic]
5. Структурная схема программы:
[pic]
5. Календарный план работы над курсовой работой:
6. Получение задания: 4.10.96.
7. Анализ задания, постановка задачи, подбор и изучение литературы:
18.10.96.
8. Разработка меню и структуры программы: 25.10.96.
9. Разработка процедур информационно-справочной системы: 15.11.96.
10. Отладка программы: 29.11.96.
11. Оформление пояснительной записки и сдача работы на правку: 13.12.96.
12. Защита курсовой работы: 20.12.96.
Руководитель: Холкин И.И. ____________
Студент: Пакостина А.В. ____________
Описание
1. Понятие об информационно-справочных системах и их программная реализация.
Информационно-справочные системы предназначены для управления различными информационными и справочными массивами, в число которых входят и базы данных. Эти системы организовывают определенный интерфейс пользователя с функциями обработки информации самой системы. Набор возможностей таких систем обычно включает в себя коррекцию структуры используемого объекта
(инкапсулирующего информацию), работа с его составляющими — дополнение, редактирование, удаление (в случае, когда роль такого объекта выполняет база данных, это — записи), простой просмотр, поиск элементов. Также необходимо обеспечить для такой системы и функции постоянного надежного хранения — в простейшем случае, это — запись базы из памяти в файл на диске и считывание оного с диска в память.
Программная реализация мало отличается от подобной концепции, но конкретизирует абстрактные операции в конкретные процедуры и функции (или же объекты) и зависит полностью от возможностей языка, поставленной задачи и искусства программиста.
2. Базы данных и способы их представления.
Общая концепция теории простых баз данных подразумевает наличие некоторого множества таблиц и являющихся, собственно, базой данных, имеющей определенный идентификатор (имя). Каждая таблица состоит из n-го количества записей (величина n зависит от возможностей конкретной системы), каждая из которых имеет одну и ту же структуру (в рамках одной таблицы) и может объединять в себе несколько разнородных объектов (их количество также зависит целиком и полностью от возможностей системы).
Работа с базой данных предполагает в себе возможность работать с записями
(либо изменять структуру таблиц).
В языке программирования Пролог база данных описывается в отдельном разделе, именуемом database. Таких разделов может быть несколько в одной программе и каждый из них, если они действительно представляют собой разные БД, должны иметь разные имена. В случае отсутствия имени у базы данных, ей дается имя по умолчанию — dbasedom.
Работу с загружаемыми базами данных в Прологе реализуют следующие стандартные предикаты: assert — добавить запись в БД, retract — удалить указанную запись, save — сохранить указанную БД в файле, consult — загрузить БД из файла в память.
В данной работе объявлена главная база данных bd, имеющая предикат characteristick, и две временные базы b1, b2 с предикатами table1, table2.
3. Разработка системного меню.
Системное меню объединяет в себе доступ ко всем процедурам информационно
— справочной системы. Разработка меню отталкивается от имеющихся функций системы (предикатов). Поскольку объявлен предикат do (char), служащий буфером между системным меню и существующими процедурами, он имеет в себе либо подменю с выбором режимов работы имеющихся предикатов, либо их вызов с последующим возвратом в системное меню:
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :- Загрузить ¦
¦ 2 :- Сохранить ¦
¦ 3 :- Просмотреть ¦
¦ 4 :- Скорректировать ¦
¦ 5 :- Удалить запись по признакам ¦
¦ 6 :- Создать по признакам ¦
¦ 7 :- Добавить ¦
¦ 8 :- Выход в ДОС ¦
¦ ¦
¦ ——————| |—————— ¦
+———————————————+
4. Разработка структуры программы.
Системное меню вызывает только предикаты do (), определенные для каждой из необходимых задач (номер режим полностью совпадает с нумерацией в главном меню). Каждая из реализаций этого предиката выводит меню, либо сразу вызывает соответствующие процедуры: open, store, adding, correct, see, del, indication. Процедура Indication выводит дополнительное подменю и вызывает либо IndicationB1, либо IndicationB2 в зависимости от выбора пользователя. Do(‘8’) завершает работу с системой.
5. Разработка процедур:
6. Загрузка базы данных (Open).
В do(‘1’) имеется меню:
+——— Загрузить ———+
¦ Куда загрузить ? ¦
¦ ¦
¦ 1 :- В bd ¦
¦ 2 :- В b1 ¦
¦ 3 :- В b2 ¦
¦ 4 :- Меню ¦
¦ ¦
¦ ——| |—— ¦
+—————————-+
процедура Open имеет четыре реализации, для каждого из вариантов работы. Для любого случая перед загрузкой базы данных проверяется существование файла с введенным именем (предикат exists). Для загрузки базы данных используется стандартный предикат consult. При вызове
Open(‘1’) загрузка производится в базу bd, при вызове Open(‘2’) в базу b1, при вызове Open(‘3’) — в b2.
7. Сохранение (Store).
В do(‘2’) меню:
+——— Сохранить ———+
¦ Что сохранить ? ¦
¦ ¦
¦ 1 :- bd ¦
¦ 2 :- b1 ¦
¦ 3 :- b2 ¦
¦ 4 :- Меню ¦
¦ ¦
¦ ——| |—— ¦
+—————————-+
Существуют предикаты для записи главной базы и двух временных.
Используется стандартный предикат save, записывающий в текстовый файл факты, связанные с данной БД.
8. Просмотр (See).
В do(‘3’) меню:
+——— Просмотреть ——-+
¦ Что просмотреть ? ¦
¦ ¦
¦ 1 :- bd ¦
¦ 2 :- b1 ¦
¦ 3 :- b2 ¦
¦ 4 :- Меню ¦
¦ ¦
¦ ——| |—— ¦
+—————————-+
Предложения See(‘1’) и See(‘2’) создают новые окна и выводят в них найденные записи. После каждой выведенной записи запрашивается нажатие клавиши, затем повторяется поиск с помошью стандартного предиката Fail или происходит выход из предиката в системное меню.
9. Добавление (Adding).
Данный предикат был добавлен в программу по причине облегчения работы с ней, хоть и в задании его не было.
В этой процедуре используется определенная в этой же программе процедура Get, запрашивающая с клавиатуры значения для новой записи в главной базе данных и стандартная процедура assert, добавляющая новый факт в базу данных.
10. Корректировка (Correct).
В данной программе существует два варианта корректировки — редактирование записи, найденной по номеру артикула и найденной по названию детали. В каждой из версий предиката вначале запрашивается номер артикула (или название) изменяемой записи, поиск и вывод на экран, затем происходит ввод новых значений полей, подтверждаются сделанные изменения, удаляется старый факт (retract) и добавляется вновь сформированный (assert).
11. Создания базы по признакам (Indication).
Indication(‘1’) создает базу b1, а Indication(‘2’) — базу b2. Для каждой базы существует отдельный предикат — IndicationB1 и
IndicationB2. Существуют возможности создания таких баз по следующим признакам: по месту хранения, по цене, по дате поступления. В каждом из вариантов производится запрос на несколько параметров сразу и поиск фактов, отвечающих этим требованиям. При успешном поиске, найденный факт добавляется в базу b1 или b2.
12. Удаление записи по признакам (Del).
Признаками для удаляемой записи могут служить номер артикула, название, а также возможно уничтожить из памяти всю базу данных. Во всех вариантах используется процедура удаления записи retract.
6. Листинг.
%
%
% Пакостина Александра.
%
% ИР-1-95.
%
% Задание 11.
%
%
%
domains
artikul = integer cex, sklad = integer name = string rubley, kopeek = integer year, month, day = integer placedom = place(cex, sklad) pricedom = price(rubley, kopeek) datedom = date(year, month, day)
database — bd
characteristick(artikul, placedom, name, pricedom, datedom)
database — b1
table1(artikul, placedom, name, pricedom, datedom)
database — b2
table2(artikul, placedom, name, pricedom, datedom)
predicates
windows go do(char) open(char) store(char) adding correct(char) indication(char) indicationB1(char) indicationB2(char) see(char) del(char) exists(string) show(artikul, placedom, name, pricedom, datedom) get(artikul, placedom, name, pricedom, datedom)
goal
windows, go.
clauses
characteristick(1,place(5,6),»Gayka»,price(0,45),date(1996,1,4)). characteristick(2,place(6,7),»Vint»,price(0,65),date(1996,2,45)).
windows :- makewindow(1,52,0,»»,24,0,1,80), write(» Пакостина Александра.»), makewindow(2,52,0,»»,0,0,1,80), write(» Система управления базой данных «Характеристика детали»»), makewindow(3,112,1,» Системное меню «,2,17,14,46), nl, write(» Выберите вариант работы с базами данных:»), nl, nl, write(» 1 :- Загрузить»), nl, write(» 2 :- Сохранить»), nl, write(» 3 :- Просмотреть»), nl, write(» 4 :- Скорректировать»), nl, write(» 5 :- Удалить запись по признакам»), nl, write(» 6 :- Создать по признакам»), nl, write(» 7 :- Добавить»), nl, write(» 8 :- Выход в ДОС»), nl, nl, write(» ——————| |——————«), framewindow(126).
go :- gotowindow(3), cursor(11,21), readchar(X), do(X).
%%%
correct(‘1’) :- makewindow(5,95,1,» Корректировка записи, найденной по артикулу
«,7,10,13,60), framewindow(94), write(«Номер артикула: «), readint(X),
characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)), nl, write(«Старая запись:»), nl, nl, show(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)), nl, nl, write(«Введите новый вариант:»), nl, nl,
get(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD)), nl, clearwindow,
retract(characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day
))),
assert(characteristick(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD
,MonD,DayD))), removewindow, removewindow, do(‘4’), !.
correct(‘1’) :- removewindow, removewindow, do(‘4’), !.
correct(‘2’) :- makewindow(5,95,1,» Корректировка записи, найденной по названию
«,7,10,13,60), framewindow(94), write(«Название: «), readln(X),
characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)), nl, write(«Старая запись:»), nl, nl, show(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)), nl, nl, write(«Введите новый вариант:»), nl, nl,
get(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD,MonD,DayD)), nl, clearwindow,
retract(characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)
)),
assert(characteristick(ArtD,place(NCD,NSD),NameD,price(RubD,KopD),date(YearD
,MonD,DayD))), removewindow, removewindow, do(‘4’), !.
correct(‘2’) :- removewindow, removewindow, do(‘4’), !.
correct(‘3’) :-
!.
correct(_) :- makewindow(5,76,1,»Ошибка»,8,29,5,22), framewindow(75), nl, write(» Выберите из меню»), readchar(_), removewindow, removewindow, do(‘4’).
%%%
del(‘1’) :- makewindow(5,95,1,» Удаление по артикулу «,7,20,10,40), framewindow(94), write(» Номер артикула: «), readint(X),
retract(characteristick(X,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day
))), nl, write(» Готово.»), readchar(_), removewindow,removewindow, do(‘5’), !.
del(‘1’) :- makewindow(6,76,1,»Ошибка»,8,29,5,22), framewindow(75), nl, write(» Запись не найдена.»), readchar(_), removewindow, removewindow, removewindow, do(‘5’).
del(‘2’) :- makewindow(5,95,1,» Удаление по названию «,7,20,10,40), framewindow(94), write(» Название: «), readln(X),
retract(characteristick(Art,place(NC,NS),X,price(Rub,Kop),date(Year,Mon,Day)
)), nl, write(» Готово.»), readchar(_), removewindow,removewindow, do(‘5’), !.
del(‘2’) :- makewindow(6,76,1,»Ошибка»,8,29,5,22), framewindow(75), nl, write(» Запись не найдена.»), readchar(_), removewindow, removewindow, removewindow, do(‘5’).
del(‘3’) :- makewindow(5,95,1,» Удаление всей базы «,7,20,10,40), framewindow(94), retract(characteristick(_,place(_,_),_,price(_,_),date(_,_,_))), fail.
del(‘3’) :- write(» База удалена.»), readchar(_), removewindow,removewindow, do(‘5’), !.
del(‘4’) :-
!.
del(‘_’) :- makewindow(5,76,1,»Ошибка»,8,29,5,22), framewindow(75), nl, write(» Выберите из меню»), readchar(_), removewindow, removewindow, do(‘5’).
%%%
indication(‘1’) :- makewindow(5,18,1,» Создать базу B1 по признаку «,8,25,10,30), framewindow(19), write(» Введите признак:»), nl, nl, write(» 1 :- По месту хранения»), nl, write(» 2 :- По цене»), nl, write(» 3 :- По дате поступления»), nl, write(» 4 :- Меню»), nl, nl, write(» ——| |——«), cursor(7,13), readchar(X), indicationB1(X), removewindow, removewindow, do(‘6’), !.
indication(‘2’) :- makewindow(5,18,1,» Создать базу B2 по признаку «,8,25,10,30), framewindow(19), write(» Введите признак:»), nl, nl, write(» 1 :- По месту хранения»), nl, write(» 2 :- По цене»), nl, write(» 3 :- По дате поступления»), nl, write(» 4 :- Меню»), nl, nl, write(» ——| |——«), cursor(7,13), readchar(X), indicationB2(X), removewindow, removewindow, do(‘6’), !.
indication(‘3’) :-
!.
indication(_) :- makewindow(5,76,1,»Ошибка»,8,29,5,22), framewindow(75), nl, write(» Выберите из меню»), readchar(_), removewindow, removewindow, do(‘6’).
indicationB1(‘1’) :- makewindow(6,95,1,» Создание базы B1 по месту хранения «,7,20,10,40), framewindow(94), nl, write(» Номер цеха: «), readint(X), write(» Номер склада: «), readint(Y),
characteristick(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day)),
assert(table1(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day))), fail.
indicationB1(‘1’) :- removewindow, removewindow, indication(‘1’).
indicationB1(‘2’) :- makewindow(6,95,1,» Создание базы B1 по цене «,7,20,10,40), framewindow(94), nl, write(» Рублей: «), readint(X), write(» Копеек: «), readint(Y), characteristick(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day)), assert(table1(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day))), fail.
indicationB1(‘2’) :- removewindow, removewindow, indication(‘1’).
indicationB1(‘3’) :- makewindow(6,95,1,» Создание базы B1 по дате поступления
«,7,20,10,40), framewindow(94), nl, write(» Год: «), readint(X), write(» Месяц: «), readint(Y), write(» День: «), readint(Z), characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z)), assert(table1(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z))), fail.
indicationB1(‘3’) :- removewindow, removewindow, indication(‘1’).
indicationB1(‘4’) :-
!.
indicationB1(_) :- makewindow(6,76,1,»Ошибка»,8,29,5,22), framewindow(75), nl, write(» Выберите из меню»), readchar(_), removewindow, removewindow, indication(‘1’).
indicationB2(‘1’) :- makewindow(6,95,1,» Создание базы B2 по месту хранения «,7,20,10,40), framewindow(94), nl, write(» Номер цеха: «), readint(X), write(» Номер склада: «), readint(Y),
characteristick(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day)),
assert(table2(Art,place(X,Y),Name,price(Rub,Kop),date(Year,Mon,Day))), fail.
indicationB2(‘1’) :- removewindow, removewindow, indication(‘2’).
indicationB2(‘2’) :- makewindow(6,95,1,» Создание базы B2 по цене «,7,20,10,40), framewindow(94), nl, write(» Рублей: «), readint(X), write(» Копеек: «), readint(Y), characteristick(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day)), assert(table2(Art,place(NC,NS),Name,price(X,Y),date(Year,Mon,Day))), fail.
indicationB2(‘2’) :- removewindow, removewindow, indication(‘2’).
indicationB2(‘3’) :- makewindow(6,95,1,» Создание базы B2 по дате поступления
«,7,20,10,40), framewindow(94), nl, write(» Год: «), readint(X), write(» Месяц: «), readint(Y), write(» День: «), readint(Z), characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z)), assert(table2(Art,place(NC,NS),Name,price(Rub,Kop),date(X,Y,Z))), fail.
indicationB2(‘3’) :- removewindow, removewindow, indication(‘2’).
indicationB2(‘4’) :-
!.
indicationB2(_) :- makewindow(6,76,1,»Ошибка»,8,29,5,22), framewindow(75), nl, write(» Выберите из меню»), readchar(_), removewindow, removewindow, indication(‘2’).
%%%
adding :- get(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)), nl, write(» Вы ввели :»), nl, show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)), nl, nl, write(» Добавить ? (Yes/No)»), readchar(A),
A=’y’,
assert(characteristick(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Da y)));
!.
%%%
exists(FN) :- existfile(FN); makewindow(6,76,1,»Ошибка»,10,25,5,30), nl, framewindow(75), write(» Файл «,FN,» не найден!»), readchar(_), removewindow, removewindow, removewindow, do(‘1’).
show(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)) :- write(» Артикул : «,Art), nl, write(» Местоположение (Цех, Склад) : «,NC,», «,NS), nl, write(» Наименование товара : «,Name), nl, write(» Стоимость (Рублей:Копеек) : «,Rub,»:»,Kop), nl, write(» Дата поступления (Год-Месяц-День) : «,Year,»-«,Mon,»-
«,Day).
get(Art,place(NC,NS),Name,price(Rub,Kop),date(Year,Mon,Day)) :- write(» Артикул : «), readint(Art), write(» Местоположение : «), nl, write(» Цех : «), readint(NC), write(» Склад : «), readint(NS), write(» Наименование товара : «), readln(Name), write(» Стоимость : «), nl, write(» Рублей : «), readint(Rub), write(» Копеек : «), readint(Kop), write(» Дата поступления : «), nl, write(» Год : «), readint(Year), write(» Месяц : «), readint(Mon), write(» День : «), readint(Day).
7. Отладка программы.
Открытие БД.
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ 1 :-+——— Загрузить ———+ ¦
¦ 2 :-¦ Куда загрузить ? ¦ ¦
¦ +—————Загрузка bd————-+ ¦
¦ ¦ ¦ ¦
¦ ¦ Имя файла : data ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ Загружено ¦ ¦
+—¦ ¦—+
+—————————————+
Сохранение БД.
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+——— Сохранить ———+ ¦
¦ 2 :-¦ Что сохранить ? ¦ ¦
¦ +————-Сохранение b2————+ ¦
¦ ¦ ¦ ¦
¦ ¦ Имя файла : data2 ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ Сохранено ¦ ¦
+—¦ ¦—+
+—————————————+
Просмотр.
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+——— Просмотреть ——-+ ¦
¦ 2 :-¦ Что просмотреть ? ¦ ¦
+———————— Просмотр bd ———————-+
¦ Артикул : 2 ¦
¦ Местоположение (Цех, Склад) : 6, 7 ¦
¦ Наименование товара : Vint ¦
¦ Стоимость (Рублей:Копеек) : 0:65 ¦
¦ Дата поступления (Год-Месяц-День) : 1996-2-45 ¦
¦ ¦
¦Нажмите ENTER для продолжения… ¦
+———————————————————-+
Корректировка.
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+——- Корректировка ——+ ¦
¦ 2 :-¦ Способ нахождения записи: ¦ ¦
+——- Корректировка записи, найденной по названию ——+
¦Старая запись: ¦
¦ ¦
¦ Артикул : 1 ¦
¦ Местоположение (Цех, Склад) : 5, 6 ¦
¦ Наименование товара : Gayka ¦
¦ Стоимость (Рублей:Копеек) : 0:45 ¦
¦ Дата поступления (Год-Месяц-День) : 1996-1-4 ¦
¦ ¦
¦Введите новый вариант: ¦
¦ ¦
¦ Артикул : ¦
+———————————————————-+
Удаление.
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+ Удаление записи по признаку+ ¦
¦ 2 :-¦ Введите признак: ¦ ¦
¦ +——— Удаление по артикулу ———+ ¦
¦ ¦ Номер артикула: 1 ¦ ¦
¦ ¦ ¦ ¦
¦ ¦ Готово. ¦ ¦
+—¦ ¦—+
+—————————————+
Создание по признакам.
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :-+- Создать базу по признаку -+ ¦
¦ 2 :-¦ Какую базу создать ? ¦ ¦
¦ +—— Создание базы B1 по цене ——+ ¦
¦ ¦ ¦ ¦
¦ ¦ Рублей: 0 ¦ ¦
¦ ¦ Копеек: 45 ¦ ¦
+—¦ ¦—+
+—————————————+
+—————————-+
Добавление.
+————— Системное меню —————+
¦ Выберите вариант работы с базами данных: ¦
¦ ¦
¦ 1 :- Загрузить ¦
¦ 2 :- Сохранить ¦
+————- Добавить запись к главной базе ————-+
¦ Местоположение : ¦
¦ Цех : 5 ¦
¦ Склад : 6 ¦
¦ Наименование товара : Shayba ¦
¦ Стоимость : ¦
¦ Рублей : 1 ¦
¦ Копеек : 2 ¦
¦ Дата поступления : ¦
¦ Год : 1996 ¦
¦ Месяц : 23 ¦
¦ День : 3 ¦
+———————————————————-+
8. Инструкция пользователя и решение контрольных примеров.
Решение контрольных примеров основывается на том, что было сделано в отладке программы и может быть изучено по вышестоящей части (7.).
Для работы с программой необходимо выбирать из предлагаемых меню пункты путем нажатия на соответствующие цифры. При появлении подменю повторить операцию, при запросе на имя файла — ввести строку, определяющую имя файла, при запросе на символ, нажать соответствующую клавишу на клавиатуре (не забывайте, пожалуйста об языковой раскладке клавиатуры и состоянии клавиши CAPSLOCK). Также в нескольких процедурах производится подтверждение (Yes/No — Да/Нет) — необходимо переключиться на английскую раскладку и нажать соответствующую клавишу в нижнем регистре.
9. Заключение.
Язык программирования Пролог безусловно может быть использован для написания подобных информационно-справочных систем, так как он позволяет легко и быстро создавать логические запросы к базам данных, что безусловно выделяет его среди остальных языков программирования.
10. Список литературы.
1. К. Кларк. “Введение в логическое программирование на Micro Prologe”.
2. К. Хоггер. “Введение в логическое программирование”.