Автор работы: Пользователь скрыл имя, 10 Января 2011 в 19:10, курсовая работа
В данной курсовой работе проведено исследование предметной области, определены цели создания системы и ее назначение, описана программа и разработано руководство оператору.
Данная курсовая работа разработана средствами языка Пролог в среде Turbo Prolog v 2.0. В структуре языка заложены возможности простой и чрезвычайно эффективной работы с базами данных, что позволяет на его основе создавать различного рода информационно - справочные системы.
Введение…………………………………………………………………………...4
1. Исследование предметной области ...............................................................5
1.1. Характеристика железнодорожного транспорта
1.2. История железных дорог России...............................................................8
1.3. Информационно–справочная система по пассажирским железнодорожным перевозкам ..................................................................10
1.4. Понятие об информационно-справочных системах и их программная
реализация........................................................................................................12
1.5. Базы данных и способы их представления.............................................12
2. Логическое программирование........................................................................14
2.1. Пролог
2.2. Базовые понятия и термины Пролога....................................................14
2.3. Структура программы на ТП..................................................................17
2.4. Пролог-программа ...............................................................................20
3. Техническое задание .......................................................................................22
3.1. Общие сведения
3.2. Назначение и цели создания системы
3.3. Характеристика объекта автоматизации
3.4. Требования к системе
4. Описание программы ……………....................................................23
4.1. Общие сведения
4.2. Функциональное назначение
4.3. Характеристика технических средств
4.4. Входные данные
4.5. Выходные данные
5. Руководство оператора.....................................................................................24
5.1. Назначение программы
5.2. Выполнение программы
5.3. Сообщения оператору
5.4. Порядок выполнения вызова программы................................................26
5.5. Обращение к программе.........................................................................27
5.6. Пример работы программы
Заключение...…………………………………………………….......................28
Список литературы……………………………………………….....................29
Приложения
Приложение 1. Листинг программы ………...…………………...................30
Завершает список синтаксических единиц сложный терм, или структура. Все, что не может быть отнесено к переменной или константе, называется сложным термом. Следовательно, сложный терм состоит из констант и переменных. Теперь перейдем к более детальному описанию термов.
Синтаксис переменной довольно прост. Она должна начинаться с прописной буквы или символа подчеркивания и содержать только символы букв, цифр и подчеркивания.
Переменная, состоящая только из символа подчеркивания, называется анонимной и используется в том случае, если имя переменной несущественно.
Областью действия переменной является утверждение. В пределах утверждения одно и то же имя принадлежит одной и той же переменной. Два утверждения могут использовать одно имя переменной совершенно различным образом. Правило определения области действия переменной справедливо также в случае рекурсии и в том случае, когда несколько утверждений имеют одну и ту же головную цель. Этот вопрос будет рассмотрен в далее.
Единственным исключением из правила определения области действия переменных является анонимная переменная, например, “_” в цели любит(Х,_). Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения. Таким образом, каждая анонимная переменная четко отличается от всех других анонимных переменных в утверждении.
В некоторых реализациях Пролога строки рассматриваются как определенный тип объектов подобно атомам или спискам. Для их обработки вводятся специальные встроенные предикаты. В других реализациях строки обрабатываются в точности так же, как списки, при этом используются встроенные предикаты для обработки списков. Поскольку все строки могут быть определены как атомы или как списки целых чисел, и понятие строки является чисто синтаксическим, мы не будем более к нему возвращаться.
Утверждения состоят из целей и хранятся в базе данных Пролога. Таким образом, база данных Пролога может рассматриваться как программа на Прологе. В конце утверждения ставится точка “.”. Иногда утверждение называется предложением.
Основная операция Пролога - доказательство целей, входящих в утверждение. Существуют два типа утверждений:
Правило обычно имеет несколько хвостовых целей в форме конъюнкции целей. Конъюнкцию можно рассматривать как логическую функцию И. Таким образом, правило согласовано, если согласованы все его хвостовые цели.
Примеры фактов:
собака(рекс). родитель(голди.рекс).
Примеры правил:
собака (X) :- родитель (X.Y),собака (Y). человек(Х) :-мужчина(Х).
Структуру иногда изображают в виде дерева, число ветвей которого равно арности структуры.
Запрос выглядит так же, как и целевое утверждение, образуется и обрабатывается по тем же правилам, но он не входит в базу данных (программу). В Прологе вычислительная часть программы и данные имеют одинаковый синтаксис. Программа обладает как декларативной, так и процедурной семантикой. Запрос обозначается в Прологе утверждением ?-, имеющим арность 1. Обычно запрос записывается в операторной форме: за знаком ?- следует ряд хвостовых целевых утверждений (чаще всего в виде конъюнкции).
Примеры запросов:
?-собака(X). ?- родитель(Х.У),собака (Y).
или, иначе,
'?-'(собака(Х))
С?-') ','(родитель(Х„У”,собака (Y)).
2.3. Структура программы на Турбо Прологе (ТП)
Обычно программа на ТП включает три или четыре основных программных раздела:
Раздел
clauses - это ядро программы на ТП, в нем размещаются
факты и правила, которыми оперирует ТП,
пытаясь достичь цели программы.
В разделе predicates объявляются предикаты
пользователя (встроенные предикаты ТП
не объявляются).
В разделе domains описываются любые используемые
домены (типы аргументов пользователя),
которые не являются стандартными доменами
ТП. Стандартные домены не описываются.
В разделе
goal помещается встроенная (внутренняя)
цель, когда программисту требуется, чтобы
программа могла выполняться вне среды
ТП и независимо от нее.
2.3.1.Раздел..clauses
В разделе выражений 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. Доказательство использует аксиомы, сформулированные как факты Пролога, а также вспомогательные теоремы, сформулированные в виде предложений.
Информация о работе Разработка справочной системы железнодорожной компании