Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PROLOG_Labs / Лабораторная работа 4(состав_объекты).doc
Скачиваний:
95
Добавлен:
20.03.2015
Размер:
87.55 Кб
Скачать

Лабораторная работа №4

Тема: Простые и составные объекты.

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

Теоретическая часть

1. Простые объекты данных

Простой объект данных – это переменная или константа. Нельзя путать это значение слова «константа» с символьными константами, которые определяются в разделе constants программы. То, что здесь называется константой, это нечто, идентифицирующее объект, который нельзя изменять: символ (char), число (integer или real) или атом (symbol или string).

1.1. Переменные как объекты данных

Названия переменных (как уже известно) должны начинаться с заглавной буквы (A – Z) или с символа подчеркивания (_). Символ подчеркивания представляет анонимную переменную, которая используется в ситуации «неважно что». В Прологе переменная может связываться с любым допустимым аргументом Пролога или объектом данных.

Переменные Пролога локальны, а не глобальны. Так, если два предложения содержат переменную, названную X, то это две различные переменные. Они могут быть связаны друг с другом, если совпадут во время унификации, но обычно они не оказывают влияния друг на друга.

1.2. Константы как объекты данных

Константы включают символы, числа и атомы. Значение константы – это ее имя.

Символы имеют тип char. Печатные символы (ASCII 32 - 127) – это цифры (0 - 9), прописные буквы A – Z, строчные буквы a – z, символы пунктуации и специальные символы. Литеры вне данного диапазона могут быть непереносимыми с одной платформы на другую; в особенности, литеры, меньше ASCII 32 (пробел) и управляющие символы, традиционно используемые терминалами и связующим оборудованием.

Символ-константа записывается в простых кавычках:

‘a’ ‘*’ ‘W’ ‘3’ ‘{’ ‘A’ и т.д.

Если же необходимо записать обратную косую черту или простую кавычку, как литературную константу, то нужно поставить перед ней символ обратный слэш \:

‘\\’ % обратный слэш

‘\’’ % одиночная кавычка.

Символьные константы могут также быть записаны своим десятичным ASCII-кодом после управляющего символа, например: ‘\225’ % б.

Числа могут быть целыми (integer) или вещественными (real).

Атомы имеют тип идентификатор (symbol) или строка (string). Отличие между ними – главным образом вопрос машинного представления и реализации, и, в основном, оно синтаксически не заметно. Когда атом передается в качестве аргумента при вызове предиката, то к какому домену принадлежит атом – symbol или string – определяется по тому, как описан этот аргумент в декларации предиката.

Visual Prolog автоматически преобразует типы между доменами string и symbol, поэтому можно использовать атомы symbol в доменах string и наоборот. Однако принято считать, что объект в двойных кавычках принадлежит домену string, а объект, не нуждающийся в кавычках, домену symbol.

Атомы типа symbol – это имена, начинающиеся со строчной буквы и содержащие только буквы, цифры и знак подчеркивания.

Атомы типа string выделяются двойными кавычками и могут содержать любую комбинацию литер, кроме ASCII – нуля (0, бинарный нуль), который обозначает конец строки атома. Примеры строк и идентификаторов приведены в табл.1.

Таблица 1. Строки и идентификаторы.

Атомы-идентификаторы

Атомы-строки

Food

"Jesse James"

rick_Jones_2nd

"123 Pike street"

fred_Flintstone_1000_Bc_Rd_Bedrock

"jon"

A

"a"

new_york

"New York"

pdcProlog

"ЛАБОРАТОРНАЯ РАБОТА №3, by Prolog Development Center"

Так как string/symbol взаимозаменяемы, их отличие не существенно. Однако имена предикатов и функторы для составных объектов должны соответствовать синтаксическим соглашениям домена symbol.