- •Программирование на языке Турбо-Пролог 2.0 Учебное пособие
- •Введение
- •1. Программирование на прологе
- •1.1. Основные понятия
- •1.2. Типы данных или предопределенные объекты
- •1.3. Списки
- •1.4. Унификация
- •1.5. Отсечение
- •1.6. Рекурсия
- •1.7. Бектрекинг
- •1.8. Структура программы на языке Турбо-Пролог
- •2. Описание стандартных предикатов
- •2.1. Арифметические предикаты и функции Турбо-Пролога
- •2.2. Предикаты ввода/вывода
- •2.3. Работа с файлами ( filesystem )
- •2.4. Управление экраном ( screen handling )
- •2.5. Управление окнами ( window system )
- •2.6. Работа со строками ( string handling )
- •2.7. Преобразования ( conversions )
- •2.8. Базы данных
- •2.9. Графический интерфейс - bgi-графика. (bgi graphic)
- •2.10. Старая графика (old graphics)
- •2.11. Черепашья графика (turtle graphics) (работает только вместе со старой графикой)
- •2.12. Редактор ( editor )
- •2.13. Использование функций dos ( dos related )
- •2.14. Предикаты низкоуровневой поддержки
- •2.15. Обработка ошибок и управление возвратами
- •2.16. Разное ( miscellaneous )
- •2.17. Предикаты управления (control predicates)
- •2.18. Предельные параметры в системе Турбо-Пролог
1.2. Типы данных или предопределенные объекты
(PREDEFINED DOMAINS) В Турбо-Прологе имеется 5 стандартных типов доменов и служебные типы доменов. 1.2.1 Стандартные типы данных char - символ (размер 1 байт) integer - целое число (размер 2 байта) real - действительное число (размер 8 байт) string - последовательность символов типа char, которая заключена в кавычки symbol - последовательность букв латинского алфавита, цифр и знаков подчеркивания, которая начинается со строчной буквы или заключена в кавычки. CHAR - это 8-битовый код знаков ASCII, заключенный в апостофы, например 'А' или '*'. Можно использовать цифровое значение кода ASCII в виде '\13' или условные обозначения '\n' (символ новой строки), '\t' (символ табуляции). INTEGER - определяет домен целых чисел в диапазоне [-32768,+32767]. REAL - определяет домен вещественных чисел: (+/-) [1Е-30,1Е+30]. В общепринятом для языков программирования формате, например: 0.9Е2, -56.89, и т.п. Целые числа при необходимости автоматически преобразуются в вещественную форму. STRING - это последовательность символов, заключенная в кавычки, например "resultat" или "получили w= ". В строках можно использовать цифровые и условные обозначения кодов ASCII: " \n \t Имя автора - ". SYMBOL - определяет домен символьного типа, сюда относятся все имена, начинающиеся с малой буквы, а также строки. Данные типа symbol в отличие от данных типа string запоминаются в таблице символов. Таблица символов размещается в оперативной памяти, поэтому ее использование обеспечивает наиболее быстрый поиск. Однако для построения таблицы символов требуется дополнительное время. 1.2.2 Дополнительные типы данных ref - ссылочный номер базы данных dbasedom - определяет объект в терме для глобальных баз данных bt_selector - возвращаемый указатель бинарного дерева db_selector - определенный пользователем указатель внешней базы данных place - переменная области размещения, принимает значения: in_memory - в памяти; in_ems - в расширенной памяти; in_file - в файле file - файловая переменная, принимает значения: keyboard - клавиатура; screen - экран; printer - принтер; com1; stdin; stdout - стандартные порты ввода/вывода . - другие значения, присвоенные пользователем reg - переменная для обращения к регистрам ОЗУ, принимает значение: reg(AX,BX,CX,DX,SI,DI,DS,ES) bgi_ilist - список целых для предикатов BGI-графики.
1.3. Списки
СПИСКИ - это структура данных Турбо-Пролога для формирования составных объектов. Список состоит из элементов (термов), заключенных в квадратные скобки и разделенных запятыми. Список целых чисел представляется как [1,2,3,9,-3,-2]. Он принадлежит к определяемому домену ilist, объявляемому как: domains ilist = integer * Если элементы в списке смешанного типа, например, список, содержащий как символы, так и целые числа, он должен быть выражен символами в соответствующем описании: domains element = c(char); i(integer) list = element * представляет, например, такой список [i(12), i(34), i(-567), c('x'), c('y'), c('z'), i(987)].