![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Domains
name, sport =string … Во время исполнения программы при включенной трассировке в специальном окне трассировки будет отображаться следующая информация: - после слова " CALL" будет указано имя выполняемого предиката (текущая подцель) и его параметры, например: CALL: likes(”Олег”, _); - после слова " FAIL" будет выводиться имя текущей подцели, которая не была достигнута; - после слова " RETURN" будет выводиться результат вычисления текущей подцели, в случае успеха. При этом если у подцели есть еще альтернативы, к которым возможен возврат, то перед именем предиката высвечивается звездочка (" *"); - слово " REDO" перед именем предиката указывает на то, что произошел возврат и происходит вычисление альтернативного решения. Переход от подцели к подцели вызывается нажатием функциональной клавиши F10. При этом в окне редактирования выполняющуюся подцель указывает курсор, она также отображается в окне трассировки с параметрами и дополнительной информацией. Директива nowarnings используется для подавления предупреждения системы о том, что какая-то переменная встречается в предложении только один раз. Эту директиву стоит использовать только в хорошо отлаженных программах. Как правило, для подавления предупреждения: " WARNING: The variable is only used once" достаточно заменить переменную, которая встретилась только один раз, на анонимную переменную. С помощью директивы include при компиляции в исходный текст можно вставить содержимое некоторого файла. Многие директивы компилятора могут быть не только расположены в тексте программы, но и установлены в меню среды разработки Турбо Пролога (Options-> Compiler-> Directives). Значение директивы компилятора, указанное в тексте программы, имеет более высокий приоритет, чем значение, установленное в меню.
Описание задачи на Турбо-Прологе Основные понятия Турбо-Пролога Пролог – это язык программирования, предназначенный для представления и использования знаний о некоторой предметной области. Под предметной областью понимается множество рассматриваемых объектов и совокупность знаний о них. Любая взаимосвязь между объектами и (или) их свойствами называется отношением. Объекты могут быть объединены в классы, обладающие определенными свойствами. Элементы этих классов являются конкретными объектами предметной области. Для представления конкретного объекта в программе на Прологе используется константа. Константа – это число или символическое имя объекта. Примеры констант: mary, 54, 8.09, ”Иванов”. Символическое имя (атом) – это неразрывная цепочка латинских букв, цифр и символа подчеркивания, начинающаяся со строчной латинской буквы. Для именования объектов и их свойств могут использоваться строки – последовательности любых символов, заключенных в двойные кавычки. Для описания в программе некоторого объекта, принадлежащего определенному классу, используется переменная. Переменная в программе представляется своим именем. Имя переменной в Прологе – это цепочка латинских букв или цифр, начинающихся с прописной латинской буквы. Примеры имен переменных: F, Dog, St7. Чтобы описать отношение, необходимо указать его имя и перечислить либо классы объектов, либо конкретные объекты, связываемые с этим отношением. < имя отношения> (< имя объекта 1>, …, < имя объекта n>) Отношение характеризуется именем и числом аргументов (число классов объектов, связанных этим отношением). Для описания отношений в программе на Прологе используются предикаты. Предикат – это логическая функция от n аргументов, имеющая только два значения ”истина” и ”ложь”. Синтаксис предиката: < имя предиката> (< аргумент 1>, …, < аргумент n>) При описании имя предиката совпадает с именем отношения, а аргументы предиката – это связываемые отношением объекты. Если описываемое предикатом отношение имеет место в предметной области, то предикат принимает значение ”истина”, иначе значение предиката ”ложь”. В качестве имени предиката используется цепочка латинских букв и цифр, начинающихся со строчной латинской буквы. Допустимо использовать знак подчеркивания. Примеры предикатов: likes(mary, sport), bank_book(“Таня”, 1000). Знания о предметной области выражаются на языке Пролог в виде предложений, называемых утверждениями (CLAUSES). Каждое утверждение заканчивается точкой и описывает какое-либо отношение, свойство, объект или закономерность. Структура утверждения имеет одну из форм: < заголовок>. /*факт*/ или < заголовок>: - < тело>. /*правило*/ где заголовок является предикатом и полностью характеризует описываемое отношение. Тело утверждения состоит либо из одного предиката, либо из списка предикатов, разделенных знаками ”, ”, ”; ”, ” not ”, соответствующими логическим операциям ”и”, ”или”, ”не”. Таким образом, тело утверждения является логическим выражением. Каждый входящий в это выражение предикат описывает какое-либо отношение. Знак ”: - ” соответствует слову ”если”. Утверждение читается так: «Отношение, стоящее в заголовке, будет истинным, если истинно логическое выражение, находящееся в теле утверждения».
Факты Все утверждения программы на Прологе делятся на факты, правила и запросы. Факты отражают текущее состояние предметной области, содержат конкретную информацию и являются истинными предикатами. Факты соответствуют простым безусловным высказываниям.
Синтаксически правильно записанный факт имеет следующую структуру предиката: < имя отношения> (< список аргументов>). В списке аргументов перечисляются имена объектов (не более 255), связанных данным отношением. Аргументы в списке отделяются друг от друга запятыми, в некоторых случаях могут отсутствовать. Если аргумент представляет собой имя конкретного объекта (свойства) или число, то он является константой Пролога. Определяя с помощью фактов отношения между объектами, необходимо учитывать порядок, в котором перечисляются их имена внутри круглых скобок. Следует учитывать, что одно и то же утверждение, записанное в виде фактов, может по-разному интерпретироваться. Только автор программы определяет истинную интерпретацию имен объектов и порядок следования аргументов, и им он должен следовать в процессе написания всей программы, отражая в комментариях смысл записанных им высказываний. Комментарий – это текст, заключенный между символами “/* … */” или строка, начинающаяся со знака “%”.
|