Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования на языке Turbo Prolog.doc
Скачиваний:
56
Добавлен:
09.11.2019
Размер:
563.2 Кб
Скачать

Глава 3. Типы данных и арифметика Turbo Prolog

1. Стандартные типы данных

Турбо-Пролог требует указания типов для всех аргументов (объектов) каждого предиката программы. В разделе predicates НУЖНО ОПИСАТЬ ТИП ОБЪЕКТОВ ДЛЯ КАЖДОГО ПРЕДИКАТА.

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

Турбо-Пролог имеет 6 встроенных типов доменов: СИМВОЛЫ, ЦЕЛЫЕ ЧИСЛА, ДЕЙСТВИТЕЛЬНЫЕ ЧИСЛА, СТРОКИ, СИМВОЛИЧЕСКИЕ ИМЕНА И ФАЙЛЫ. Тип каждого из доменов должен быть объявлен в разделе программы domains.

В таблице 3.1 приведены все 6 стандартных типов доменов Турбо-Пролога.

Таблица 3.1.

Тип данных

Ключевое слово

Диапазон значений

Примеры использования

Символы

сhar

Все возможные символы

'b', '#', '%', 'B', '\13'

Целые числа

integer

От —32768 до 32767

-84,2349

Действи-тельные числа

real

от +1Е-307 до +1Е308

-42769, 093, 1.25Е23, 5.15Е-9

Строки

string

Последовательность символов (не более 250)

«PROLOG»,

«123», «Мзри»

Символи-ческие имена

symbol

1. Последовательность букв, цифр и подчерков; первый символ — строчная буква

2. Последовательность любых символов, заключенная в кавычки

mary, answer_2;

«Агата Кристи»,

«3.1412»

Файлы

file

Допустимое в DOS имя файла

BIRDS.DBA,

mail.txt

Операторы ввода:

readchar(X) readint(X) readreal(X) readln(X), где X — переменная соответствующего типа; в операторе readln(X) X может быть string или symbol.

Кроме того, оператор readterm(my_domain,X) позволяет ввести переменную уже описанного в разделе domains типа my_domain.

2. Структуры, простые и составные

Объекты утверждений представляют собой данные, тип же простых объектов ограничен 6 базисными типами. Рассмотрим такой пример утверждения:

collection(smith,"Использование Турбо-Пролога", "Ц.Ин, Д.Соломон", "Мир", "1993").

Его объекты принадлежат к базисным типам доменов:

predicates

collection(symbol,symbol,symbol,symbol,integer)

Первый объект smith имеет простую структуру: он представляет сам себя. То же можно сказать и про остальные объекты.

Любой объект, представляющий сам себя, называется простым объектом.

Аналогично, СТРУКТУРА, СОСТОЯЩАЯ ИЗ ПРОСТЫХ ОБЪЕКТОВ, НАЗЫВАЕТСЯ ПРОСТОЙ СТРУКТУРОЙ.

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

domains

name,title,author,publisher = symbol

year = integer

predicates

collection(name,title,author,publisher,year)

В этом описании 4 последних объекта обозначают атрибуты книги. Правило, которое оперирует с персональными библиотеками, рассматривает эти 4 последних объекта как независимые сущности. Чтобы сделать код программы более простым, а запись предиката collection более компактной, соберем эти объекты в структуру с названием book:

collection(smith, book("Alice in Wonderland", "Lewis Carroll", "The New American library", 1960)).

В данном примере book является составным объектом. Терм book в этом утверждении называется функтором. Функтор составного объекта есть на самом деле предикат, хотя он и вставлен внутрь другого предиката. главным функтором здесь является предикат collection.

Объект, представляющий другой объект или совокупность объектов, называется составным объектом.

Записанные же таким образом предикаты collection называются составными структурами, поскольку они скомпонованы из составных объектов.

Турбо-Пролог позволяет объявлять составные объекты (доменные структуры) в разделе domains. Функтор структуры personal_library имеет имя book. Описание таково:

domains

personal_library = book(title, author,

publisher, year)

name,title,author,publisher = symbol

year = integer

Предикат, использующий эту структуру, определяется так:

predicates

collection(name, personal_library)

Описание содержит два имени объектов. Первое имя относится к обычному объекту, второе — к структуре из нескольких объектов.

Структура обеспечивает средство сортировки объектов по категориям. ССЫЛКИ НА ДОМЕННУЮ СТРУКТУРУ ОСУЩЕСТВЛЯЮТСЯ ПО ИМЕНИ ФУНКТОРА (в нашем примере — по имени book).