
- •27. Управление программой. Внутренние подпрограммы унификации Пролога.
- •28. Структура программ на Прологе. Предикаты и утверждения.
- •29. Арифметика в Прологе.
- •30. Программирование повторяющихся операций. Повторение и откат.
- •31. Методы повторения. Методы организации рекурсии.
- •32. Списки в Прологе. Применение списков в программе.
- •34. Использование метода с разделением списка на голову и хвост. Компоновка данных в список.
- •34. Присваивание переменным строковых значений. Конкатенация строк. Преобразование данных.
- •35 Создание символьных префиксов. Преобразование строк в список символов.
- •38. Преобразование строк в списки атомов с функторами.
- •39.Предикаты Пролога для работы с файлами. Использование предикатов для работы с файлами.
- •40. Программы для обработки файлов.
- •41. Дозапись данных в файл
- •42. Использование файлов прямого доступа
- •43. Использование предикатов для работы с окнами. Использование окон для ввода вывода.
- •44. Использование графики в программе. Использование графики черепашки.
- •45.Использование звук и музыки.
- •46.Базы данных в Прологе. Предикаты динамической базы данных в Прологе.
- •47. Создание базы данных, располагающейся в оперативной памяти.
- •48. Создание базы данных, располагающейся на диске
- •49. Принципы построения экспертных систем
- •50.Методы вывода и система пользовательского интерфейса эс.
- •51.Экспертные системы, базирующиеся на правилах.
- •52.Экспертные системы, базирующиеся на логике.
47. Создание базы данных, располагающейся в оперативной памяти.
Использование баз данных, располагающихся в оперативной
памяти (резидентных), вполне оправданно, если эта БД имеет не
слишком большой объем.
Для начала необходимо задать начальные данные и создать
саму базу. Затем наступает черед системы управления базой
данных (СУБД), ориентированной на диалог с пользователем. Лю-
бая система такого рода должна содержать как минимум такие
возможности:
1) занесение в базу новых данных ;
2) удаление данных из базы ;
3) выборка и вывод содержащихся в базе данных.
Для работы с таблицей данных необходим предикат, кодирующий эту ин-
формацию.
player(p_name, /* полное имя игрока (string) */
t_name, /* название команды (string) */
p_number, /* номер игрока (integer) */
pos, /* позиция игрока (string) */
height, /* рост (string) */
weight, /* вес (string) */
nfl_exp, /* стаж выступлений (integer) */
college) /* университет (string) */
Турбо-Пролог требует, чтобы все утверждения одного и
того же предиката были сгруппированы в одном месте. В соот-
ветствии с этим требованием группа предиката player записы-
вается в виде:
player("Dan Marino","Miami Dolphins",13,"QB",
"6-3",215,4,"Pittsburgh").
Следующей фазой создания БД является задание соответствующих описаний типов.
domains
p_name, t_name, pos, height, college = string
p_number, weight, nfl_exp = integer
Предикаты динамической базы данных описываются в разделе программы database.
database
dplayer(p_name, t_name, p_number, pos,
height, weight, nfl_exp, college)
Когда программа запускается на счет, утверждения дина-
мической БД помещаются в оперативной памяти отдельно от
"обычных" утверждений.
В разделе predicates следует описать все другие преди-
каты, используемые в программе.
predicates
repeat /* повтор */
do_mbase /* цель */
assert_database /* создание БД */
menu /* интерфейс в виде меню */
process(integer) /* различные операции из перечня меню */
clear_database /* очистка БД */
player(p_name, t_name, p_number, pos,
height, weight, nfl_exp, college)
error /* выдача сообщения об ошибке
Как уже ранее говорилось, в начале работы программы не-
обходимо занести в динамическую БД предназначенную для нее
информацию, содержащуюся в статической БД. Эту задачу выпол-
няет предикат assert_database. Предикат clear_database пред-
назначен для решения смежной задачи: очиски БД перед оконча-
нием работы программы. Предикат player предназначен для задания начального содержимого базы данных. Когда программа начинает работу, эта информация засылается в утверждения предиката dplayer.
Предикат do_mbase является главным правилом (модулем)
программы. Он также присутствует в целевом утверждении. Пре-
дикат menu определяет правило, осуществляющее интерфейс с
пользователем при помощи меню. Предикат process(integer) оп-
ределяет различные правила, выполняющие все возможные опера-
ции над БД.
Раздел программы goal содержит правило do_mbase:
goal
do_mbase.
Исходная информация для БД помещается в начале раздела
clauses. Когда программа запускается на счет, подцель assert_
database создает утверждения dplayer, содержащие такие же
данные, что и утверждения статического предиката player, и
заносит эти утверждения в динамическую БД. После этого можно
добавлять, удалять или просматривать данные, выбирая соот-
ветствующие опции меню.