- •Лабораторная работа №4
- •Теоретическая часть
- •1. Простые объекты данных
- •1.1. Переменные как объекты данных
- •1.2. Константы как объекты данных
- •2. Составные объекты данных и структуры
- •2.1.Унификация составных объектов
- •2.2. Использование знака равенства для унификации составных объектов
- •2.3. Использование нескольких значений как единого целого
- •2.4. Объявление составных объектов
- •2.5. Многоуровневые составные объекты
- •Практическое задание
- •Контрольные вопросы
Лабораторная работа №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 |
" |
Так как string/symbol взаимозаменяемы, их отличие не существенно. Однако имена предикатов и функторы для составных объектов должны соответствовать синтаксическим соглашениям домена symbol.
