首页 > 软件开发 > 编程语言 >

Prolog的基本概念和语法规则

来源:互联网 2023-03-17 00:21:38 300

Prolog是逻辑编程语言,它的语法是极其简单而又独特的。在Prolog中,数据以逻辑规则的形式存在。在这篇经验中,我将介绍它的基本概念和语法规则。0K9办公区 - 实用经验教程分享!

2配置SWI-Prolog编程环境0K9办公区 - 实用经验教程分享!

Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

工具/原料

  • SWI-Prolog

方法/步骤

  • 1

    在Prolog中,最简单的形式就是一些事实。现在,让我们来看下面这个事实:0K9办公区 - 实用经验教程分享!

    狗(dog)咬(bites)人(man)0K9办公区 - 实用经验教程分享!

    在Prolog中,这个事实的表述成以下形式:0K9办公区 - 实用经验教程分享!

    bites(dog,man).0K9办公区 - 实用经验教程分享!

    关系名在前,对象名在后,并用括号括上。在Prolog术语中,关系被称为谓词,对象被称为变元,整个事实叫作子句。无论是谓词还是变元,一般要用小写,且子句以英文句号“.”结束。0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 2

    对象名如果非要用大写字母、空格等特殊字符,就必须要加单引号。在SWI-Prolog中,甚至支持汉字作为对象名(当然必须得加引号)。0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 3

    需要注意的是,变元数可以是任意的,这取决于所期望联系在一直的对象数目,例如,要在Prolog中表达“约翰送给波林一块手表”这一事实,会是下方的语句:0K9办公区 - 实用经验教程分享!

    give(john, pauline, watch).0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 4

    在编写程序时,可以用/* */来表示注释,在其中的内容会在运行时被忽略;也可以用%来作为注释符,在那一行中,其后的内容也会被忽略。将事实录入后,再运行后,会有问号提示符“?-”,我们可以进行询问。在Prolog中,变量名的首字母必须大写。下图是一个关于学生信息的程序文件。0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 5

    比如,要提出男生有谁的问题,可以这样询问:0K9办公区 - 实用经验教程分享!

    -? male(X).0K9办公区 - 实用经验教程分享!

    如果想看其他答案,可以键入字符“;”,这样Prolog就可以继续进行搜索。如果想到此为止,就按回车键。0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 5本页面未经授权抓取自百度经验
  • 6

    如果要询问一些更复杂的问题,比如:“在一年级中,有没有20多岁,且学习化学的男生?”语句如下:0K9办公区 - 实用经验教程分享!

    ?- year(X, 1), age(X, Y), Y > 20, studies(X, chemistry).0K9办公区 - 实用经验教程分享!

    表示“与”的逻辑意义时,要用逗号连接子句。0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 7

    如果提出这样的问题:“Hazel在学数学或是化学吗?”语句如下:0K9办公区 - 实用经验教程分享!

    ?- studies(hazel, mathematics); studies(hazel, chemistry).0K9办公区 - 实用经验教程分享!

    表示“或”的逻辑意义时,要用分号连接子句。但不建议在Prolog程序中滥用分号,因为会使程序的逻辑性不清楚,以至于难以跟踪。0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 8

    如果要提问:“不学历史的男生有谁?”语句如下:0K9办公区 - 实用经验教程分享!

    ?- male(X), \ (studies(X, history)).0K9办公区 - 实用经验教程分享!

    在SWI-Prolog中,表示否定用\ ,但在其他Prolog方言中,也有用not的。使用时需要用括号将相应条件括起来。0K9办公区 - 实用经验教程分享!

    但需要注意在这种否定子句中含有变量的情况下,需要将它放在后面。如果将否定条件放到前面,此时,X属于自由变量,也就是说,会先否定掉所有学历史的学生,达不到预期效果。0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 9

    有时,我们对变量的值并不关心,我们可以使用空变量。空变量记作“_”。比如,要提问:“有学哲学的男生吗?”可以这样提问:0K9办公区 - 实用经验教程分享!

    ?- male(_), studies(_, philosophy).0K9办公区 - 实用经验教程分享!

    Prolog的基本概念和语法规则0K9办公区 - 实用经验教程分享!

  • 注意事项

    • 编程时注意大小写和符号问题。
    • 多加练习,熟悉基本语法规则。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!0K9办公区 - 实用经验教程分享!


    标签: 计算机教程编程编程语言

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码