Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Глава 18. Примеры программ 347

Построение небольшой экспертной системы. 347

Задача выбора кратчайшего пути 350

Приключения в опасной пещере 351

Моделирование элементов аппаратуры 353

Ханойские башни. 355

Деление слов на слоги 356

Проблема расстановки N ферзей 358

Использование клавиатуры. 361

Чтение и распознавание клавиш 361

Простой редактор полей 362

Применение предиката inkey 363

Глава 19. Сложные приемы программирования 365

Ошибки, исключительные ситуации и прерывания 365

Обработка исключительных ситуаций, связанных с ошибками 365

exit/o и exit/1 365

trap/3 366

errorsg/4 366

Обработка ошибок при чтении термов 367

consulterror/3 367

readtermerror/2 367

Управление режимом break 368

break/1 369

breakpressed/0 369

Углубленный контроль ошибок в .EXE файлах 369

criticalerror/4 370

fileerror/2 370

Анализ потока параметров 371

Контроль потока параметров 372

Ссылочные типы 373

Объявление ссылочных типов 373

Ссылочные типы и массив trail 374

Применение ссылочного типа 374

Пример 375

Динамическое отсечение 376

Примеры 376

Применение ссылочных типов при реализации бинарных деревьев 377

Сортировка с помощью ссылочных типов 378

Стиль программирования 379

Использование предиката fail 382

Детерминизм и отсечение 382

Введение

Турбо Пролог является языком пятого поколения, выводящим

компьютерное программирование в новое измерение. Естественный

логический подход Пролога к програмированию позволяет начинающим

и профессиональным программистам за удивительно короткое время

создавать мощнейшие приложения. Теперь, благодаря Турбо Прологу,

вы сможете разрабатывать такие программные продукты, как базы

знаний, экспертные системы, пользовательские интерфейсы на

естественном языке и системы управления искусственным

интеллектом.

Турбо Пролог является описательным языком. Это означает,

что, получив необходимые факты и правила, Турбо Пролог, используя

дедуктивный метод, сам может разрешать ваши программистские

проблемы. Это противоречит традиционным языкам программирования,

таким как Бейсик и Паскаль, которые являются процедурными

языками. Программист, использующий процедурные языки, должен

разрабатывать подробные инструкции, точно объясняющие компьютеру

способ решения заданной проблемы; другими словами, программист

должен знать метод решения задачи еще до того, как компьютер

сможет ее решить. В противовес этому, программист, использующий

Турбо Пролог, должен только описать проблему и разработать

правила ее решения, опираясь на которые, система Турбо Пролога

сама определит, как найти решение.

О Прологе

Пролог появился на свет в результате многолетней

исследовательской работы. Первая официальная версия Пролога была

разработана (в начале 1970-х годов Элаином Колмерауером из

Марсельского университета) в качестве удобного средства

ПРОграммирования с помощью ЛОГики. Это средство является гораздо

более мощным и эффективным нежели чем другие широко известные

языки программирования, такие как Паскаль и Бейсик. Например, для

заданного приложения программа на Прологе требует только одну

десятую часть программных строк по сравнению с аналогичной

программой на Паскале.

Сегодня Пролог является важнейшим средством для

программирования приложений по искусственному интелекту и для

разработки экспертных систем. Другая же причина растущей

популярности Пролога заключается в гораздо большей

"дружественности" и "интеллигентности" прологовских программ.

Программа на Прологе задает компьютеру, используя для этого

некоторое число правил и фактов, описание проблемы, а затем

просит его найти все возможные решения этой проблемы. В

процедурных языках программист должен точно "рассказать"

компьютеру, как тот должен решать задачи. На Прологе же

программист лишь описывает что нужно вычислить, а Пролог-система

сама заботится о том, как организовать эти вычисления.

Из-за такого декларативного (а не процедурного) подхода всем

известные источники ошибок в Паскале и Бейсике (такие как циклы,

выполняющие на единицу меньше или на единицу больше, чем нужно

операций) исключаются с самого начала. А кроме того, Пролог учит

программистов делать хорошо структуризованное описание задачи и

может, таким образом, со временем, быть использован как средство

задания спецификаций.

Хотя Пролог делает программирование намного проще, он

предъявляет к компьютеру очень жесткие требования. Турбо Пролог -

это первая реализация Пролога для персональных компьютеров IBM PC

и совместимых с ними по мощности и памяти.

Турбо Пролог обеспечивает больше возможностей, чем многие

реализации на больших компьютерах. Например:

# Новая мощнейшая система внешних баз данных, включающая более

30 предикатов для разработки и ведения больших баз данных,

поддерживающих B+-деревья и расширенную память типа EMS.

Система внешних баз данных позволяет выполнять "сцепление"

баз данных, поддерживает (для быстрой сортировки и доступа к

данным) индексные ссылки типа B+дерева и предоставляет средства

для создания и копирования баз данных между ОЗУ, EMS и жестким

диском.

# Исходные тексты для обладающего всеми возможностями

интерпретатора Пролога.

В последнее время программисты хотят знать, как добавляются

и обрабатываются предложения в Турбо Прологе. С помощью Турбо

Пролога 2.0 мы объясняем, как в процессе работы добавляются и

интерпретируются правила; для этого включены файлы PIE.* -

интерпретатор, написанный на Турбо Прологе и обладающий всеми

возможностями Пролога. Этот интерпретатор, подробно

рассказывающий, как он написан и объясняющий, как его расширить

для ваших собственных программ, явялется мощнейшим средством для

изучения того, как работает сам Пролог, и как вы можете добавить

множество возможностей в свои программы. Вы можете изменять этот

интерпретатор с тем, чтобы создать свой собственный логический

язык программирования, механизм вывода, оболочки экспертных

систем или программные интерфейсы.

# Стандарт графического интерфейса фирмы Borland.

Теперь Турбо Пролог поддерживает ту же мощную графическую

систему, что и в текущих версиях Турбо Паскаля и Турбо Си. 60

графических предикатов Турбо Пролога предоставляют мощные, высо-

коуровневые графические средства с профессиональным качеством вы-

вода на экран.

Кроме всех этих новых возможностей Турбо Пролог 2.0 включает

несколько улучшенных возможностей из тех, что были в версиях 1.x,

например:

# Больше средств для управления окнами: в пакет версии 2.0 мы

включили целый набор программ, обеспечивающих управление окнами.

# Устанавливаемый пользователем интерфейс: пользовательский

интерфейс теперь польностью перенастраиваемый, включая "горячие"

клавиши, функции редактора, режимы экрана и т.д.

# Улучшенный компилятор: Компилятор Турбо Пролога оптимизиро-

ван и теперь версия 2.0 создает программы более эффективные и

меньшие по размеру, чем программы версии 1.1.

# Обработка исключительных состояний и контроль ошибок: теперь

Тубро Пролог включает мощный механизм для обработки ошибочных си-

туаций, а также для управления пользовательскими прерываниями

программы. Кроме этого включены различные уровни по контролю за

ошибками и по выдаче соответствующих сообщений.

# Множественные внутренние базы данных: вы можете теперь ис-

пользовать в своих программах несколько внутренних баз

данных;

они могут быть локальными в одном модуле или глобальными по отно-

шению ко всему приложению.

# Вызовы из других языков: Турбо Пролог может создавать

подпрограммы, вызываемые из других языков. Интерфейс вызова

является обобщенным и может работать со всеми

компиляторами,

генерирующими .OBJ модули. (Однако, мы можем лишь полностью

гарантировать, что он будет работать с Турбо Си версий 1.x).

Программисты на Турбо Си могут использовать огромную библиотеку

Турбо Пролога как мощнейший вспомогательный пакет программ;

причем теперь не нужен ни CPINIT, ни другие "приклеиваемые"

модули любых типов. Эти два языка могут свободно вызывать друг

друга. Высококлассные программисты могут извлечь массу

преимуществ, используя лучшие черты этих двух языков.

# Поддержка максимального видеоразрешения: в среде разработки

и в пользовательских программах Турбо Пролог 2.0 поддерживает

режимы в 25, 43 и 50 строк по 80, 90, 120 или 132 колонки

(обеспечивая корректную установку аппаратуры).

# Расширенный предикат редактирования: новый предикат edit,

включающий несколько расширений, позволяет программистам вызывать

из своих программ редактор, обладающий широким спектром

возможностей.

# Описание констант и условная компиляция: эти возможности

добавлены в язык.

Соседние файлы в папке Документация