Prolog - 数据对象


在本章中,我们将学习 Prolog 中的数据对象。它们可以分为几个不同的类别,如下所示 -

数据对象

以下是不同类型数据对象的一些示例 -

  • Atomics - tom、pat、x100、x_45

  • 数字 - 100、1235、2000.45

  • 变量 - X、Y、Xval、_X

  • 结构 - 天(9, jun, 2017), 点(10, 25)

Atomics和变量

在本节中,我们将讨论 Prolog 的Atomics、数字和变量。

Atomics

Atomics是常数的一种变体。它们可以是任何名称或对象。当我们尝试使用 Atom 时,应该遵循一些规则,如下所示 -

由字母、数字和下划线字符“_”组成的字符串,以小写字母开头。例如 -

  • 阿扎哈尔

  • b59

  • b_59

  • b_59AB

  • b_x25

  • 安塔拉_萨卡

特殊字符的字符串

我们必须记住,在使用这种形式的Atomics时,需要小心,因为某些特殊字符字符串已经具有预定义的含义;例如 ':-'。

  • <--->

  • =======>

  • ...

  • .:.

  • ::=

用单引号括起来的字符串。

如果我们想要一个以大写字母开头的Atomics,这很有用。通过将其括在引号中,我们可以将其与变量区分开来 -

  • '鲁拜'

  • “阿林达姆_查特吉”

  • “苏米特·米特拉”

数字

常数的另一个变体是数字。所以整数可以表示为100、4、-81、1202。在Prolog中,整数的正常范围是从-16383到16383。

Prolog 也支持实数,但通常 Prolog 程序中浮点数的用例很少,因为 Prolog 用于符号、非数字计算。实数的处理取决于Prolog的实现。实数示例有 3.14159、-0.00062、450.18 等。

这些变量位于“简单对象”部分下。正如我们之前所看到的,在我们的 Prolog 程序中,变量可以在许多这样的情况下使用。所以Prolog中定义变量有一些规则。

我们可以定义Prolog变量,变量是由字母、数字和下划线字符组成的字符串。它们以大写字母或下划线字符开头。变量的一些例子是 -

  • X

  • 会员名称

  • 学生名单

  • 购物清单

  • _a50

  • _15

Prolog 中的匿名变量

匿名变量没有名称。prolog 中的匿名变量由单个下划线字符“_”编写。一件重要的事情是每个单独的匿名变量都被视为不同的。它们不一样。

现在的问题是,我们应该在哪里使用这些匿名变量呢?

假设我们的知识库中有一些事实——“吉姆讨厌汤姆”,“帕特讨厌鲍勃”。因此,如果汤姆想找出谁讨厌他,那么他可以使用变量。但是,如果他想检查是否有人讨厌他,我们可以使用匿名变量。所以当我们想要使用变量,但又不想泄露变量的值时,那么我们可以使用匿名变量。

那么让我们看看它的实际实现 -

知识库 (var_anonymous.pl)

hates(jim,tom).
hates(pat,bob).
hates(dog,fox).
hates(peter,tom).

输出

| ?- [var_anonymous].
compiling D:/TP Prolog/Sample_Codes/var_anonymous.pl for byte code...
D:/TP Prolog/Sample_Codes/var_anonymous.pl compiled, 3 lines read - 536 bytes written, 16 ms

yes
| ?- hates(X,tom).

X = jim ? ;

X = peter

yes
| ?- hates(_,tom).

true ? ;

(16 ms) yes
| ?- hates(_,pat).

no
| ?- hates(_,fox).

true ? ;

no
| ?-