Разработка справочной системы железнодорожной компании

Автор работы: Пользователь скрыл имя, 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

Вложенные файлы: 1 файл

Экспертные.doc

— 234.50 Кб (Скачать файл)

Завершает список синтаксических единиц сложный терм, или структура. Все, что не может быть отнесено к переменной или константе, называется сложным термом. Следовательно, сложный терм состоит из констант и переменных. Теперь перейдем к более детальному описанию термов.

  1. Константы в Прологе константа может быть атомом или числом.
  2. Числа - большинство реализации Пролога поддерживают целые и действительные числа. Для того чтобы выяснить, каковы диапазоны и точность, чисел следует обратиться к руководству по конкретной реализации.
  3. Переменная - понятие переменной в Прологе отличается от принятого во многих языках программирования. Переменная не рассматривается как выделенный участок памяти. Она служит для обозначения объекта, на который нельзя сослаться по имени. Переменную можно считать локальным именем для некоторого объекта.

    Синтаксис переменной довольно прост. Она должна начинаться с прописной буквы или символа подчеркивания и содержать только символы букв, цифр и подчеркивания.

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

    Областью действия переменной является утверждение. В пределах утверждения одно и то же имя принадлежит одной и той же переменной. Два утверждения могут использовать одно имя переменной совершенно различным образом. Правило определения области действия переменной справедливо также в случае рекурсии и в том случае, когда несколько утверждений имеют одну и ту же головную цель. Этот вопрос будет рассмотрен в далее.

    Единственным исключением из правила определения области действия переменных является анонимная переменная, например, “_” в цели любит(Х,_). Каждая анонимная переменная есть отдельная сущность. Она применяется тогда, когда конкретное значение переменной несущественно для данного утверждения. Таким образом, каждая анонимная переменная четко отличается от всех других анонимных переменных в утверждении.

  1. Синтаксис операторов - структуры арности 1 и 2 могут быть записаны в операторной форме, если атом, используемый как главный функтор в структуре, объявить оператором.
  2. Синтаксис списков - список есть не что иное, как некоторая структура арности 2. Данная структура становится интересной и чрезвычайно полезной в случае, когда вторая компонента тоже является списком. Вследствие важности таких структур в Прологе имеются специальные средства для записи списков.
  3. Синтаксис строк - строка определяется как список кодов символов. Коды символов имеют особое значение в языках программирования. Они выступают как средство связи компьютера с внешним миром. В большинстве реализации Пролога существует специальный синтаксис для записи строк. Он подобен синтаксису атомов. Строкой является любая последовательность символов, которые могут быть напечатаны (кроме двойных кавычек), заключенная в двойные кавычки. Двойные кавычки в пределах строки записываются дважды “”.

    В некоторых реализациях Пролога строки рассматриваются как определенный тип объектов подобно атомам или спискам. Для их обработки вводятся специальные встроенные предикаты. В других реализациях строки обрабатываются в точности так же, как списки, при этом используются встроенные предикаты для обработки списков. Поскольку все строки могут быть определены как атомы или как списки целых чисел, и понятие строки является чисто синтаксическим, мы не будем более к нему возвращаться.

  1. Утверждения - программа на Прологе есть совокупность утверждений.

Утверждения состоят из целей и хранятся в базе данных Пролога. Таким образом, база данных Пролога может рассматриваться как программа на Прологе. В конце утверждения ставится точка “.”. Иногда утверждение называется предложением.

Основная операция Пролога - доказательство целей, входящих в утверждение. Существуют два типа утверждений:

  • факт: это одиночная цель, которая, безусловно, истинна;
  • правило: состоит из одной головной цели и одной или более хвостовых целей, которые истинны при некоторых условиях.

Правило обычно имеет несколько хвостовых целей в форме конъюнкции целей. Конъюнкцию можно рассматривать как логическую функцию И. Таким образом, правило согласовано, если согласованы все его хвостовые цели.

Примеры фактов:

собака(рекс). родитель(голди.рекс).

Примеры правил:

собака (X) :- родитель (X.Y),собака (Y). человек(Х) :-мужчина(Х).

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

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

Запрос выглядит так же, как и целевое утверждение, образуется и обрабатывается по тем же правилам, но он не входит в базу данных (программу). В Прологе вычислительная часть программы и данные имеют одинаковый синтаксис. Программа обладает как декларативной, так и процедурной семантикой. Запрос обозначается в Прологе утверждением ?-, имеющим арность 1. Обычно запрос записывается в операторной форме: за знаком ?- следует ряд хвостовых целевых утверждений (чаще всего в виде конъюнкции).

Примеры запросов:

?-собака(X). ?- родитель(Х.У),собака (Y).

или, иначе,

'?-'(собака(Х)) С?-') ','(родитель(Х„У”,собака (Y)).  

2.3. Структура программы на Турбо Прологе (ТП)

    Обычно программа на ТП включает три или четыре основных программных раздела:

  • раздел выражений clauses,
  • раздел предикатов predicates,
  • раздел доменов domains
  • раздел цели goal.

Раздел 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. Доказательство использует аксиомы, сформулированные как факты Пролога, а также вспомогательные теоремы, сформулированные в виде предложений.

Информация о работе Разработка справочной системы железнодорожной компании