ВУЗ:
Составители:
Рубрика:
6.1. ОПИСАНИЕ ЯЗЫКА
Пролог-программы состоят из термов. Терм – это либо константа, либо переменная, либо структура.
Каждый из этих термов записывается как последовательность символов алфавита:
1)
прописных букв латинского алфавита A – Z;
2)
строчных букв латинского алфавита a – z;
3)
прописных букв русского алфавита А – Я;
4)
строчных букв русского алфавита а – я;
5)
цифр 0 – 9;
6)
специальных знаков: +, –, *, /, \, ^, <, >, ~, :, ., ?, ,, @, #, &, $.
Рассмотрим каждый из термов.
Константы – это поименованные конкретные объекты или конкретные отношения. Существует два вида констант:
−
атомы;
−
числа.
Атомы бывают двух видов:
1)
составленные из букв и цифр;
2)
составленные из специальных знаков.
Атомы, составленные из букв и цифр, должны начинаться со строчной буквы: sreda, conc, ask, a1, b2 и т.д.
Иногда возникает необходимость иметь атом, начинающийся с прописной буквы или цифры. Если атом заключается в
кавычки, то он может содержать любые литеры, например: “Prolog” “1причина”,”_ask” и т.д.
Атомы, составленные из спецзнаков, как правило, состоят только из специальных знаков, например: :–, ., ,.
Другой вид констант – числа – используется для представления числовых данных, что позволяет выполнять
арифметические операции над ними, например: 0, 999, 54,23 и т.д.
Переменные могут менять своё значение в ходе работы программы. Имена переменных начинаются с прописной буквы
или знака подчёркивания: X, Y, Z, Ask, _1_a.
Иногда возникает необходимость в использовании переменной, имя которой не будет нигде употребляться. В этом
случае можно использовать анонимную переменную – одиночный знак подчеркивания (_). Анонимная переменная позволяет
избавить программиста от необходимости придумывать разные имена переменным в тех случаях, когда эти имена в
утверждении нигде больше не употребляются.
Структура – это единый объект, состоящий из совокупности других объектов, называемых компонентами.
Компоненты группируются в структуру для удобства использования. Структура записывается на Прологе с помощью
указания её функтора и компонент. Компоненты заключаются в круглые скобки и разделяются запятыми. Функтор
записывается перед открывающейся круглой скобкой. Компоненты структуры – это константы, переменные или структуры.
Если структура не содержит переменных ни на каком уровне вложенных подструктур, она называется константной, иначе –
переменной, например:
book(X, avtor(“Александр Пушкин”))
Следует отметить, что факт в языке Пролог описывается как структура, функтором которой является некоторый
предикат. Например, имеется факт: ″азотная кислота является кислотой″. На языке Пролог его можно записать: is(″азотная
кислота″, ″кислота″).
6.2. ТИПЫ ДАННЫХ В ЯЗЫКЕ ПРОЛОГ
В языке Пролог используются следующие типы данных:
•
symbol – последовательность букв, цифр и знаков подчеркивания, которая начинается со строчной буквы или
заключена в кавычки, например person, a1, b2, “Prolog”.
•
string – любая последовательность символов, которая заключена в кавычки, например “кислота”, “123/456”.
•
char – отдельный символ, заключенный в апострофы, например ‘A’, ‘3’.
•
integer – целое число.
•
real – вещественное число.
•
file – имя файла.
Данные типа symbol в отличие от данных типа string запоминаются в таблице символов, которая размещается в
оперативной памяти, поэтому её использование обеспечивает наиболее быстрый поиск. Однако для построения таблицы
символов требуется дополнительное время.
6.3. РАВЕНСТВО И УСТАНОВЛЕНИЕ СООТВЕТСТВИЯ
В прологе существует особый предикат равенство, обозначаемый литерой “ = ”, например X = Y.
При согласовании с данными цели X = Y, где X, Y – любые термы, действуют следующие правила:
1.
Если X – неконкретизированная переменная, а переменная Y – конкретизирована, то выражение X = Y является
оператором присваивания.
2.
Если X, Y – конкретизированные термы, то выражение X = Y – операция сравнения.
3.
Две структуры равны, если они имеют один и тот же функтор и одинаковое число аргументов, причём все
соответствующие аргументы равны, например, при согласовании такого утверждения: is (“сернистая кислота”, “кислота”) =
is (Х, “кислота”), переменной Х будет присвоено конкретное значение “сернистая кислота”.
Структуры могут быть вложены одна в другую на любую глубину. Если такие вложенные структуры проверяются на
равенство, проверка займёт больше времени, поскольку необходимо проверить все структуры, например, попытка
согласовать следующую цель:
Страницы
- « первая
- ‹ предыдущая
- …
- 34
- 35
- 36
- 37
- 38
- …
- следующая ›
- последняя »