Пополним базу знаний новым классом отношений, введя значение калорийности для каждого блюда.
'калории'('артишоки в белом соусе' ,150).
'калории'('трюфели в шампанском' ,212).
'калории'('салат с яйцом' ,202).
'калории'('говяжье жаркое' ,532).
'калории'('цыпленок в липовом цвете' ,400).
'калории'('окунь во фритюре' ,270).
'калории'('фаршированный судак' ,254).
'калории'('грушевое мороженое' ,223).
'калории'('земляника со взбитыми сливками',289).
'калории'('дыня-сюрприз' ,122).
Утверждение 'калориии'('салат с яйцом',202) означает, что одна порция салата содержит 202 калории.
Тогда, чтобы узнать калорийность всех закусок, зададим вопрос:
?-'закуска'(X),'калории'(X,Y).
Для тех, кто беспокоится о своем здоровье или о стройности своей фигуры, важно определить такой объект, как 'сбалансированный обед', т.е. обед, калорийность которого не превышает, например, 800 калорий:
/* Определение отношения "калорийность обеда" */
'значение'(X,Y,Z,V):-'калории'(X,E),
'калории'(Y,P),
'калории'(Z,D),
V is E+P+D.
/*Определение отношения 'сбалансированный обед' */
'сбалансированный обед'(X,Y,Z):-'обед'(X,Y,Z),
'значение'(X,Y,Z,V),
V<800.
Здесь is - встроенный предикат, при выполнении которого вычисляется значение арифметического выражения, стоящего справа от is, и его значение присваивается переменной, стоящей слева; "+"- операция сложения; "<"- операция сравнения.
Войдите в интерпретатор, пополните БЗ и посмотрите, какие ответы будут получены в ответ на запрос:
?-'сбалансированный обед'(X,Y,Z).
|