如何在Prolog中编写IF ELSE条件

时间:2015-01-08 15:52:00

标签: if-statement prolog

我是C#家伙,对prolog很新。我需要为以下场景编写一个prolog程序。任何人都可以帮助实现它。

两个人共用一个抽屉柜。胸部有4个抽屉,抽屉1和2属于Person1,抽屉3和4属于Person2。

他们将手机,钱包和书籍放在抽屉里。 Person2在抽屉里丢了手机。他检查了属于他但不能找到他的电话的抽屉3和4。然后他检查抽屉1和2,并在抽屉2中找到它。我需要为这个场景编写prolog代码。

person(person1).
person(person2).

drawers(drawer1).
drawers(drawer2).
drawers(drawer3).
drawers(drawer4).

belongs_to(drawer1, person1).
belongs_to(drawer2, person1).
belongs_to(drawer3, person2).
belongs_to(drawer4, person2).

item(phone2).

phone_in(drawer).
phone_in(drawer2).

要运行的命令及其结果

?- phone_in(drawer4).
false.

?- phone_in(drawer3).
false.

?- phone_in(drawer1).
false.

?- phone_in(drawer2).
true.

我正在尝试编写如下条件。

?- phone_in(drawer2).
true.

想要根据上述查询的结果运行条件(true / false)。

if(false)
    write("phone not found!");
else if(true)
    write("please found in your search area");

请建议我改进我的代码。

1 个答案:

答案 0 :(得分:1)

语法就像这样

( condition -> then_clause ; else_clause )

它可能以这种方式写成

( phone_in(drawer2) =:= true ->  
  write('phone found in your search area'),
  fail
  ; phone_in(drawer2) =\= false -> 
  ; write('phone not found!'),nl
)