Автор: Пользователь скрыл имя, 24 Октября 2012 в 14:41, курсовая работа
Данная курсовая работа разработана в соответствии с требованиями курсового проектирования.
В данной курсовой работе проведено исследование предметной области, определены цели создания системы и ее назначение, описана программа и разработано руководство оператору.
Введение………………………………………………………………………….......4
Исследование предметной области ...............................................................5
1.1. Характеристика железнодорожного транспорта…………………………5
1.2. История железных дорог России.....................................................................6
1.3.Информационно–справочная система по пассажирским железнодорожным перевозкам...................................................................9
1.4. Понятие об информационно-справочных системах и их программная
реализация................................................................................................11
1.5. Базы данных и способы их представления..................................................12
2. Логическое программирование.......................................................................14
2.1. Пролог………………………………………………………………………14
2.2. Базовые понятия и термины Пролога.....................................................15
2.3. Структура программы на ТП...................................................................19
2.4. Пролог-программа ................................................................................23
3. Техническое задание .......................................................................................25
3.1. Общие сведения……………………………………………………………..25
3.2. Назначение и цели создания системы…………………………………….25
3.3. Требование к системе………………………………………………………25
4. Описание программы………… …………….....................................................26
4.1. Общие сведения……………………………………………………………..26
4.2. Функциональное назначение………………………………………………26
4.4. Входные данные…………………………………………………………….26
4.5. Выходные данные…………………………………………………………..26
5. Руководство оператора......................................................................................27
5.1. Назначение программы……………………………………………………27
5.2. Выполнение программы…………………………………………………...27
5.3. Сообщения оператору……………………………………………………..27
5.4. Порядок выполнения вызова программы......................................................30
5.5. Обращение к программе.................................................................................30
5.6. Пример работы программы……………………………………………….30
Заключение...……………………………………………………...........................31
Список литературы……………………………………………….........................32
Приложения
Приложение 1. Листинг программы ………...…………………...........................33
Единственным исключением из правила определения области действия переменных является анонимная переменная, например, “_” в цели любит(Х,_). Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения. Таким образом, каждая анонимная переменная четко отличается от всех других анонимных переменных в утверждении.
В некоторых реализациях Пролога строки рассматриваются как определенный тип объектов подобно атомам или спискам. Для их обработки вводятся специальные встроенные предикаты. В других реализациях строки обрабатываются в точности так же, как списки, при этом используются встроенные предикаты для обработки списков. Поскольку все строки могут быть определены как атомы или как списки целых чисел, и понятие строки является чисто синтаксическим, мы не будем более к нему возвращаться.
Утверждения состоят из целей и хранятся в базе данных Пролога. Таким образом, база данных Пролога может рассматриваться как программа на Прологе. В конце утверждения ставится точка “.”. Иногда утверждение называется предложением.
Основная операция Пролога - доказательство целей, входящих в утверждение. Существуют два типа утверждений:
Правило обычно имеет несколько хвостовых целей в форме конъюнкции целей. Конъюнкцию можно рассматривать как логическую функцию И. Таким образом, правило согласовано, если согласованы все его хвостовые цели.
Примеры фактов:
собака(рекс). родитель(голди.рекс).
Примеры правил:
собака (X) :- родитель (X.Y),собака (Y). человек(Х) :-мужчина(Х).
Структуру иногда изображают в виде дерева, число ветвей которого равно арности структуры.
Запрос выглядит так же, как и целевое утверждение, образуется и обрабатывается по тем же правилам, но он не входит в базу данных (программу). В Прологе вычислительная часть программы и данные имеют одинаковый синтаксис. Программа обладает как декларативной, так и процедурной семантикой. Запрос обозначается в Прологе утверждением ?-, имеющим арность 1. Обычно запрос записывается в операторной форме: за знаком ?- следует ряд хвостовых целевых утверждений (чаще всего в виде конъюнкции).
Примеры запросов:
?-собака(X). ?- родитель(Х.У),собака (Y).
или, иначе,
'?-'(собака(Х)) С?-') ','(родитель(Х„У”,собака (Y)).
2.3. Структура программы на Турбо Прологе (ТП)
Обычно программа на ТП включает три или четыре основных программных раздела:
Раздел clauses - это ядро программы
на ТП, в нем размещаются факты и правила,
которыми оперирует ТП, пытаясь достичь
цели программы.
В разделе predicates объявляются предикаты
пользователя (встроенные предикаты ТП
не объявляются).
В разделе domains описываются любые используемые
домены (типы аргументов пользователя),
которые не являются стандартными доменами
ТП. Стандартные домены не описываются.
В разделе goal помещается встроенная (внутренняя)
цель, когда программисту требуется, чтобы
программа могла выполняться вне среды
ТП и независимо от нее.
В разделе выражений clauses программист
размещает все включаемые в программу
факты и правила. Если читатель представляет
себе, что такое факты и правила и как они
записываются на Прологе, то можно считать,
что он знает о содержании раздела clauses.
Выражения, относящиеся к определенному
предикату, должны размещаться в разделе
clauses вместе. Последовательность определяющих
предикат выражений называется процедурой.
При попытке удовлетворения цели ТП работает
с самого начала раздела clauses, просматривая
в процессе поиска последовательно каждый
факт или правило. По мере прохождения
раздела clauses ТП устанавливает внутренние
указатели после каждого выражения, которое
удовлетворяет текущей подцели. Если такое
выражение не является частью ведущего
к решению логического пути, то ТП возвращается
к установленному указателю и ищет другое
соответствие. Такой процесс называется
поиском с возвратом (backtracking).
2.3.2.Раздел..predicates
Если программист определяет в разделе
clauses свой собственный предикат, то он
должен объявить его в разделе predicates. В
противном случае ТП не будет знать, о
чем идет речь. Когда объявляется предикат,
Турбо-Прологу сообщается о том, каким
доменам принадлежат аргументы этого
предиката. Предикаты определяются фактами
и правилами. В разделе predicates программы
просто перечисляется каждый предикат
cо своими аргументами. Имя предиката должно
начинаться с буквы; после этой буквы могут
следовать буквы, цифры и символы подчеркивания.
Величина букв значения не имеет, но все-таки
не рекомендуется использовать в качестве
первой буквы заглавную.
2.3.3.Раздел..domains
Домены в Прологе подобны типам в Паскале.
Они дают возможность присваивать различным
видам информации, которая в противном
случае выглядела бы одинаково, отличные
имена. В программе на ТП объекты в отношении
(аргументы предиката) принадлежат доменам;
это могут быть домены стандартные или
специальные, определяемые программистами.
Раздел domains служит двум очень важным целям.
Во-первых, можно определить для доменов
осмысленные имена, причем даже в том случае,
если внутренне они совпадают с именами
уже существующих доменов. Во-вторых, объявления
специальных доменов используются для
объявления структур данных, которые стандартными
доменами не определяются. Иногда целесообразно
объявить домен тогда, когда возникает
потребность более четкого выделения
каких-либо частей раздела predicates. Объявление
программистом своих собственных доменов
помогает документировать предикаты,
которые определяются путем задания в
качестве типа аргумента удобного и понятного
имени. Раздел domains напоминает
объявление данных в традиционных (императивных)
языках, например таких, как Паскаль и
Си. Существуют следующие типы доменов:
char (символьный),
integer (целый),
real (вещественный),
string (строковый),
symbol (для цепочки из букв, цифр и символов подчеркивания с первой строчной буквой либо цепочки знаков в двойных кавычках),
file (файловый).
2.3.4.Раздел..goal
Если цели вводятся в интерактивном
режиме в окне Dialog в ответ на подсказку
Goal:, то это – внешние цели, поскольку они
указываются уже при выполнении программы.
Внешние цели удобны в том случае, если
программы всегда запускаются в среде
разработки программ Пролога. В ТП предусмотрен
раздел goal, который должен включаться
в компилируемую программу. Задаваемые
в этом разделе цели на-
зываются внутренним целям, поскольку
они являются частью исходного текста
программы и компилируются наряду со всеми
другими ее частями. Важно отметить то,что
содержание раздела goal аналогично правилу.
Это попросту список подцелей. Но между
разделом goal и правилом есть два отличия:
ТП как бы вызывает цель (обращается к
разделу goal), а программа выполняется,
пытаясь удовлетворить тело целевого
правила. Если достигаются все подцели
раздела goal, то программа успешно завершается.
Если же в процессе выполнения программы
какая-либо подцель не достигается, то
и программа заканчивает работу неудачно.
Хотя, если смотреть на программу извне,
разница между этими двумя случаями не
обязательно должна быть видна; программа
просто завершается.
2.3.5.Раздел..database
Программа на ТП представляет собой совокупность
фактов и правил. Иногда в процессе выполнения
программы может возникнуть потребность
видоизменения (модификации, удаления
или добавления) некоторых фактов, с которыми
работает программа. В таком случае факты
образуют динамическую или внутреннюю
базу данных, она может изменяться в процессе
выполнения программы. В ТП для объявления
в программе фактов, которые должны стать
частью динамической (или изменяющейся)
базы данных, предусмотрен специальный
раздел - datаbase. Такой раздел базы данных
объявляется с помощью ключевого слова
database, куда включаются объявления фактов,
предназначенных для организации динамической
базы данных (БД). В ТП имеется несколько
встроеннных предикатов, существенно
облегчающих использование динамической
БД (consult,save,assert,retract).
2.3.6.Раздел..constants
В программе на ТП можно объявить и использовать
символьные константы. Раздел объявления
констант начинается ключевым словом
constants, после которого следуют сами объявления
с соблюдением следующего синтаксиса:
<Идентификатор> = <Макроопределение>
<Идентификатор> - это имя константы,
а <Макроопределение> - это то, что этому
имени соответствует. Каждое <Макроопределение>
заканчивается символом <конец строки>,
так что в одной строке может размещаться
только одна константа. На объявленные
таким образом константы можно затем ссылаться
в программе.
Перед компиляцией программы ТП заменит
каждую константу действительной строкой,
которую она представляет. На использование
констант накладываются следующие ограничения:
- определение константы не может ссылаться
само на себя;
- в программе может быть несколько разделов
constants, но константы должны объявляться
до их использования;
- идентификаторы констант являются глобальными
и могут объявляться только один раз. Несколько
объявлений одного и того же идентификатора
приведут к выдаче сообщения Constant identifier
can only be declared once (Идентификатор константы
может быть объявлен только один раз).
2.3.7. Разделы global
ТП позволяет объявить в программе некоторые домены, предикаты и выражения глобальными (в отличие от локальных). Это можно сделать, сформировав в самом начале программы отдельные разделы global domains, global predicates и global database.
2.4. Пролог-программа
Пролог-программу следует рассматривать как доказательство теоремы, сформулированной в разделе GOAL. Доказательство использует аксиомы, сформулированные как факты Пролога, а также вспомогательные теоремы, сформулированные в виде предложений.
Часто используемый термин цель - это и есть теорема или целевое утверждение. Предложения и отдельные его утверждения рассматриваются как подцели.
Вопрос - это та же теорема или цель. Использование этого термина связано со взглядом на пролог-программу как систему управления базой знаний, сами знания в которой представлены фактами.
Для формулирования целей и подцелей используются переменные.
Переменная - символическое имя, которому может быть сопоставлен определенный домен (определенный в разделе domains или стандартный). Если сравнивать с русским языком, то переменная – это местоимение, которое должно получить конкретное значение. Переменная должна начинаться с буквы в верхнем регистре (или символа подчеркивания) и может содержать только буквы, цифры и знаки подчеркивания. Переменные могут быть связными (имеющими значение), несвязными (свободными, не имеющими значения) и анонимными.
Переменная анонимная - переменная "_", используемая вместо обычной переменной в том случае, когда не важно значение соответствующей ей обычной переменной.
Из переменных, отношений, конкретных экземпляров объектов, используя очень простой синтаксис, конструируются утверждения и предложения Пролога.
Утверждение - одно или несколько отношений, связанных конъюнктивно (отношения, перечисляемые через запятую).
Предложение - утверждение, заканчивающееся точкой, которое может быть фактом и правилом.
Правило - утверждение, истинность которого зависит от выполнения ряда условий.
Любое математическое выражение можно назвать отношением, поскольку его можно представить в префиксной записи, и тогда у нас получится обращение к предикату (вызов процедуры).
Правила состоят из двух частей - головы правила и тела правила - соединенных логической связкой «если»: (if). И синтаксически и семантически левая часть правила – это отношение, что то же самое, что и утверждение. Т.е. правило в целом читается как «отношение имеет место быть, если верны утверждения в правой части» или «утверждение в левой части верно, если верны утверждения в правой части правила».
3. Техническое задание
3.1. Общие сведения
Разработать информационно – справочную систему «Справочная система железнодорожной компании »
3.2. Назначение и цели создания системы
Цель: предоставление справочной информации железнодорожных компаний.
Назначение: программа предназначена для выдачи справочной информации, а также для формирования СПРАВКИ по определенным критериям:
Информация о работе Экспертная система железнодорожных рассписаний