- •2.2.2.1 Вызов Турбо-Пролога и главное меню системы
- •2.2.3 Редактор Турбо-Пролога
- •2.2.3.1 Создание и редактирование программного файла
- •3 Лекция №2. Элементы и конструкции языка Турбо-Пролог
- •3.1 Основные вопросы
- •3.2 Текст лекции
- •3.2.1.1 Имена (идентификаторы)
- •3.2.2.1 Предикаты
- •3.2.2.2 Факты
- •3.2.2.3 Правила
- •3.2.2.4 Цели
- •4 Лекция №3. Объекты данных. Константы, переменные, структуры, списки.
- •4.1 Основные вопросы
- •4.2 Текст лекции
- •Стандартные типы доменов Турбо-Пролога
- •4.2.2.1 Константы
- •4.2.2.2 Переменные
- •4.2.2.3 Структуры
- •4.2.2.3 Списки
- •5 Лекция №4. Структура программы на Турбо-Прологе
- •5.1 Основные вопросы
- •5.2 Текст лекции
- •5.2.2 Структура программы на Турбо-Прологе – до 10 мин.
- •5.2.3.1 Раздел опций компилятора
- •5.2.3.2 Раздел констант
- •5.2.3.3 Раздел доменов
- •5.2.3.4 Раздел предикатов
- •5.2.3.5 Раздел утверждений
- •5.2.3.6 Раздел дбд
- •5.2.3.7 Раздел целей
- •6 Лекция №5. Унификация и поиск с возвратом: программа с фактами
- •6.1 Основные вопросы
- •6.2 Текст лекции
- •7 Лекция №6. Унификация и поиск с возвратом: программа с фактами и правилом
- •7.1 Ключевые (основные) вопросы (моменты)
- •7.2 Текст лекции
- •8 Лекция №7. Унификация и поиск с возвратом: программа с фактами и несколькими правилами
- •8.1 Основные вопросы
- •8.2 Текст лекции
- •9 Лекция №8. Вопросно-ответные системы
- •9.1 Основные вопросы
- •9.2 Текст лекции
- •10 Лекция №9. Средства отладки в Турбо-Прологе
- •10.1 Основные вопросы
- •10.2 Текст лекции
- •/*Программа 5 */
- •11 Лекция №10. Простейший ввод-вывод. Окна.
- •11.1 Основные вопросы
- •11.2 Текст лекции
- •11.2.1 Простейший ввод-вывод
- •11.2.2 Окна
- •12 Лекция №11. Управление поиском решений: предикаты отсечения и возврата
- •12.1 Основные вопросы
- •12.2 Текст лекции
- •/* Программа 5 */
- •Vse_reshenia:-roditel(X,y), write(X, "родитель", y), nl, fail.
- •Vita - родитель sasha
- •/* Программа 6 */
- •/* Программа 7 */
- •13 Лекция №12. Арифметика в Турбо-Прологе. Рекурсия.
- •13.1 Основные вопросы
- •13.2 Текст лекции
- •/* Программа 8 */
- •/* Программа 9 */
- •14 Лекция №13. Динамические базы данных
- •14.1 Основные вопросы
- •14.2 Текст лекции
- •/* Программа работы с дбд*/
- •15 Лекция №14. Работа со списками
- •15.1 Основные вопросы
- •15.2 Текст лекции
- •/* Программа 10*/
- •/* Программа 11 */
- •/* Программа 12 */
- •16 Лекция №15. Экспертные системы
- •16.1 Основные вопросы
- •16.2 Текст лекции
- •/* Программа эс*/
3.2.2.2 Факты
Факты – это простейший вид утверждений, которые используются для констатации того, что объекты из некоторой предметной области обладают какими-либо свойствами, или взаимосвязаны между собой. Факты являются истинными утверждениями. Синтаксически, описание факта в Турбо-Прологе имеет вид:
P(A1[, A2,…,An]).
Здесь P – имя предиката; A1, A2,…,An – имена объектов; [,] – метасимволы, указывающие на необязательное наличие элементов.
Другими словами факт состоит из имени предиката, выражающего некоторое отношение, и заключенных в круглые скобки имен объектов, связанных этим отношением, и отделяемых друг от друга запятыми. В конце факта, после закрывающей круглой скобки, должна обязательно стоять точка.
Примерами описания фактов в Турбо-Прологе могут служить следующие унарные и бинарные факты:
Student (sasha). |
roditel (ana, vera). |
Student ("Саша"). |
roditel ("Аня", "Вера"). |
Student ("Sasha"). |
roditel ("Ana", "Vera"). |
Эти факты констатируют истинность того, что, соответственно, Саша – студент и Аня является родителем Веры.
Замечание: в программах на Турбо-Прологе имена отношений и объектов необходимо писать строчными (малыми) буквами латинского алфавита. Имена объектов допускается начинать с заглавной (большой) латинской буквы, однако в этом случае имена должны быть заключены в кавычки.
3.2.2.3 Правила
Правила – это условные утверждения, которые используются для логического вывода новых фактов из некоторой непустой совокупности существующих истинных фактов, связанных между собой отношениями “И”, “ИЛИ”, “НЕ”. При этом новый факт связывается с совокупностью существующих фактов условием if (ЕСЛИ) для констатации того, что новый факт будет истинным только при условии истинности логической совокупности существующих фактов. Синтаксически описание правила в Турбо-Прологе имеет вид:
NF if OF1 s OF2 s … s OFn.
Здесь NF – новый факт, называемый заголовком правила;
OF1, OF2, … ,OFn – совокупность существующих фактов, называемая телом правила;
if – знак условной связи между заголовком и телом правила;
s – знак логической связки между существующими фактами: либо and (И), либо or (ИЛИ), либо not (НЕ) (связка not ставится перед фактом).
В Турбо-Прологе имеется возможность использовать специальные символы для обозначения логических связок:
“,” (запятая) – вместо and;
“;” (точка с запятой) – вместо or;
“:-” (двоеточие с последующим тире) – вместо if.
Другими словами правило состоит из заголовка (нового факта), который специальным знаком “:-“ отделяется от тела правила, содержащего логическое условие (логическую совокупность существующих фактов), из истинности которого следует истинность нового факта. В конце правила должен обязательно стоять символ точки.
Примером описания правила в Турбо-Прологе может служить следующее правило:
sin (sasha, ana) :- roditel (ana, sasha), malchik (sasha).
Данное правило читается следующим образом: “Саша (sasha) является сыном (sin) Анны (ana), если Анна (ana) является родителем (roditel) Саши (sasha) и (,) Саша (sasha) – это мальчик (malchik)”.