Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
Варіант №3Дата добавления: 2015-10-18; просмотров: 493
В разделе clauses описаны правила выполнения операций с выводом результатов вычислений на экран.
/*Пример 2.3.*/ Predicates Operation(symbol,real,real) Clauses operation(«+»,X,Y):- Z=X+Y, write(X, «+»,Y, «=»,Z),nl. operation(«-»,X,Y):- Z=X-Y, write(X, «-»,Y, «=»,Z),nl. operation(«*»,X,Y):- Z=X*Y, write(X, «*»,Y, «=»,Z),nl. operation(«/»,X,Y):- Z=X/Y, write(X, «/»,Y, «=»,Z),nl.
Цели внешние и имеют, например, следующий вид: operation(«/»,5.5,3.4). Результат: 5.5 / 3.4 = 1.6176470588. operation(«+»,3.4,0.006E2) Результат: 3.4 + 0.6 = 4.
Реализация логических операций
Язык Prolog позволяет выполнять бинарные операции отношений между арифметическими выражениями, символами, строками и идентификаторами. Для этого используются следующие операторы сравнения: =, <, <=, >, >=, <>(><).
Пример сравнения: Y + 2 > 8 - X .
Операция «=» устанавливает соответствие между левой и правой частями выражения. При согласовании переменных действуют следующие правила: - если Х неконкретизированная переменная, а Y - конкретизированная, то Х и Y равны, - целые числа и атомы всегда равны самим себе: например, 613 = 613, book = book являются верными утверждениями, а 245 = 45, abc = bcd - неверными. - две структуры равны, если они имеют один и тот же функтор и одинаковое число аргументов, причем все соответствующие аргументы равны.
Когда для сравнения вещественных величин используется предикат равенства, нужно позаботиться о том, чтобы приближенное представление вещественных чисел не привело к непредсказуемым результатам. Так цель 4.9999999999 = 5.0000000000 не будет удовлетворена. Это указывает на то, что при проверке на равенство двух вещественных чисел лучше определять, лежит ли их разность в заранее определенных пределах.
Кроме числовых выражений можно также сравнивать простые символы, строки и символические имена, например: ‘a’ < ‘w’, /*тип char*/ «MISHA» < «MASINA», /*string*/ X1=misha, X2=masha, X1>X2 /*symbol*/
При этом Prolog преобразует ‘a’ < ‘w’ в выражение 97 < 119, т.е. сравнивает значения кодов ASCII, и отношение истинно. Сравнение «MISHA» < «MASINA » ложно, т.к. первые отличающиеся символы в сравниваемых строках I и A, а их коды 73 и 65. Соответственно сравнение «bb» > «b» истинно.
Cимволические строки нельзя сравнивать непосредственно. В примере X1=misha, X2=masha символическое имя misha не может быть сравнено непосредственно с masha . Они должны быть связаны с переменными или записаны как строки (тип string).
В примере 2.4 осуществляется проверка принадлежности целых чисел Z интервалу (Х,Y), где Х - минимальная граница интервала, а Y - максимальная.
/*Пример 2.4.*/ Predicates Include(integer, integer, integer) Clauses include(X,Y,Z):- Z>=X, Z<=Y, nl, write(«Число »,Z, « лежит в интервале от »,X,« до », Y,«.»).
Инструменты: компьютер IBM PC с любой операционной системой, в которой реализован язык PDC Prolog.
Вопросы для защиты лабораторной работы: 1. Какое назначение предиката random(RandomReal)? 2. Как использовать язык Prolog в режиме калькулятора? 3. Перечислире основные правила установления соответствиямежду левой и правой частями выражения при выполненииоперации «=».
Литература:
ЛАБОРАТОРНАЯ РАБОТА № 3
По дисциплине: СИСТЕМЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА Тема занятия:УПРАВЛЕНИЕ ПОИСКОМ РЕШЕНИЯ Цель занятия:Изучение способов реализации рекурсивных зависимостей. Количество часов: 4 Содержание работы: Разработать программу реализующую различные способы реализации рекурсивных зависимостей
Методические указания по выполнению:
В языке Prolog используются две конструкции правил, реализующих многократное выполнение задачи. Это ПОВТОРЕНИЕ и РЕКУРСИЯ.
Структура правила, реализующего повторение, такая: repetitive_rule:- <предикаты и правила>, fail. /*неудача*/.
Структура правила, реализующего рекурсию: recursive_rule:- <предикаты и правила>,
|