Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1.1.Глава1_бакалавры.docx
Скачиваний:
51
Добавлен:
22.02.2015
Размер:
560.23 Кб
Скачать

1.6. Размещение компонента «Аккордеон»

на web-сервере Apache

Описание: взять материалы про UniServer, например,из моей книги.

Неформальное введение в Пролог

Название Пролог происходит из словосочетания «программирование при помощи логики» (PROgramming in LOGic). Пролог был разработан и впервые реализован в 1973 г. Алэном Колмероэ и другими членами «группы искусственного интеллекта» Марсельского университета (Франция). Задачей группы было создание программы для перевода с естественного языка. С тех пор было сделано несколько расширений и усовершенствований языка. Здесь нужно отметить работу группы из Эдинбургского университета (Шотландия). Эдинбургский вариант сейчас считается неофициальным стандартом Пролога (официального стандарта Пролога не существует).

Сила Пролога в том, что он имеет встроенную быстродействующую систему логического вывода, опирающуюся на мощные унификационные процедуры, которые сами ищут решение задачи методом сопоставления, просматривая все возможные варианты. Работу этих процедур мы разберем далее в этой главе.

Сейчас существует несколько сред и систем программирования на Прологе. В данной работе мы будем придерживаться Эдинбургского варианта Пролога и популярной среды разработки SWI-Prolog, предназначеной специально для университетов и исследовательских целей. Перейдем к знакомству с Прологом, как инструментом логического программирования, [].

1.2. Основные понятия Пролога

Структура языка Пролог основана на понятиях (1) атома, (2) переменной, (3) функтора, (4) предиката, (5) терма, (6) литерала и (7) дизъюнкта, [13].

(1) Атом – строка буквенно-цифровых символов конечной длины, начинающаяся со строчной английской буквы: book, woman, x12. К атомам относят также строки, заключенные в кавычки или апострофы: “Иванов Иван Иванович”, ‘Петров Петр Петрович’. Как видим, здесь не накладывается никаких ограничений на символы строк. К атомам относятся и числа: 125, 32.5. Т. е. атом – это прологовская константа.

(2) Переменная – строка буквенно-цифровых символов конечной длины, начинающаяся с прописной английской буквы: Book, Woman, X12. Анонимная переменная ( _ ).

(3) Функтор характеризуется своим именем и числом аргументов (арностью), а по функциональному назначению функтор – это оператор (например, +) или предикат: +(X1, 8, Y3), member(X, Ls).

(4) Предикат как частный случай функтора отображает домен D, на котором он задан, в множество значений {true, false}: likes(Georg, Mary).

(5) Атомы и переменные называются термами. Из одних термов можно рекурсивно строить другие, поэтому предикат – тоже терм. Итак, терм это или атом, или переменная, или предикат, или – выше.

(6) Литерал – это сложный терм (не ниже предиката), или его отрицание: likes(Georg, Mary), not( likes(Georg, Mary) ).

(7) Дизъюнкт – совокупность литералов, связанных операторами И, ИЛИ и т. п. Таким образом дизъюнкты представляют собой предложения, заканчивающиеся точкой. Область действия переменной ограничена одним таким предложением: т. е. переменная с тем же самым именем, но в соседнем предложении – это уже другая переменная, со своими другими значениями! Отсюда следует, что в Прологе передавать значения из одного предложения в другое по имени переменной нельзя! В этом часто «камень преткновения» начинающих программистов на Прологе.

Существуют три типа дизъюнктов: (а) факты, (б) правила и (в) цели (вопросы). Пролог-программа представляет собой их совокупность.