- 序言教程
- 序言 - 主页
- Prolog - 简介
- Prolog - 环境设置
- Prolog - 你好世界
- Prolog - 基础知识
- Prolog - 关系
- Prolog - 数据对象
- Prolog - 运算符
- 循环与决策
- 连接词和析取词
- Prolog - 列表
- 递归和结构
- Prolog - 回溯
- Prolog - 不同与不同
- Prolog - 输入和输出
- Prolog - 内置谓词
- 树数据结构(案例研究)
- Prolog - 示例
- Prolog - 基本程序
- Prolog - 剪切示例
- 河内塔问题
- Prolog - 链接列表
- 猴子和香蕉问题
- Prolog 有用资源
- Prolog - 快速指南
- Prolog - 有用的资源
- Prolog - 讨论
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 | ?-