




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Turbo Prolog 知识初步Turbo Prolog的常量和变量 1.常量 常量是用来命名特定对象和特定关系的一种符号,它描述的对象是已知的或具体的。在Turbo Prolog中合法的变量有以下四个方面:(1)整数和实数,如2004、89.2、0;(2)用小写字母打头的由字母、数字(0-9)串、下划线(_)组成的字符序列,如abcdef、may_be、tabel;(3)复合对象(如student(张三))和表(如1,2,3,4,5);(4)单引号内的单个字符(如#、a)或双引号内的任何字符序列,如中国、PDC Prolog。2.变量 变量是用来代表某些尚不能命名的对象,通常有八种取值,即:整数、实数、字符、串、符号、复合对象和表。变量名是以大写字母或下划线打头的字母、数字(0-9)串序列,中间可插有下划线,如What、_Work_NAME3。在Prolog中,有一个特殊的变量,不需要知道它是什么,也用不着它的名字,称匿名变量。用单一的下划线来表示匿名变量。例如,若要知道是否有人想跳舞,但不需要知道这个人的名字,就可以用匿名变量来表示。 Turbo Prolog常用的数据类型Turbo Prolog常用的数据类型(也称为标准领域)包括整数、实数、字符、字符串和符号等几种类型,具体说明如下表所示。类型名标识符取值范围例子整数类型integer-3276832767-321,0,88实数类型real1E-3081E+308-57.5,33,77.32字符类型char单引号括起来的单个字符a,X,#,5字符串类型string用双引号括起来的任意字符序列boy,Turbo Prolog 符号类型symbol以小写字面开头的字母、数字和下划线组成的序列;用双引号括起来的任意字符序列red_apple,egg1,abc,I am a girl.Turbo Prolog常用的数学函数Turbo Prolog中常用的数学函数如下表所示。数学函数Prolog函数|x|abs(X)cos xcos(X)sin xsin(X) tg xtan(X)arctg xarctan(X) exp(X)ln xln(X)log xlog(X) sqrt(X) Prolog中的表表是Prolog中一种非常有用的数据结构。表的表述能力很强,数字中的序列、集合,通常语言中的数组、记录等均可用表来表示。表的最大特点是其长度不固定,在程序的运行过程中可动态地变化。具体来讲,就是在程序运行时,可对表施行一些操作,如给表中添加一个元素,或从中删除一个元素,或者将两个表合并为一个表等。用表还可以方便地构造堆栈、队列、链表、树等动态数据结构。一、表的形式表的一般形式是x1,x2,.,xn其中xi(i=1,2,.,n)为Prolog的项,一般要求同一个表的元素必须属于同一领域。不包含任何元素的表称为空表,记为。例如下面就是一些合法的表。1,2,3apple,orange,banana,grape,caneProlog,MAENS,Programming,in logica,b,c,d,e二、表的特点表的最大特点是其元素的个数可以在程序的运行期间动态变化。表的结构也可以是结构或表,且这时其元素可以属于不同领域。例如:name(LiMing),age(20),sex(male),address(xian) 1,2,3,4,5,6,7都是合法的表。后一个例子说明表也可以嵌套。表还有一个重要特点,就是它可分为头和尾两部分。表头是表中第一个元素,而表尾是表中除第一个元素外的其余元素按原来顺序组成的表。例如下面的例子:表表头表尾1,2,3,4,5 12,3,4,5 apple,orange,bananaappleorange,bananaa,b,c,d,ea,bc,d,ePROLOGPROLOG 无定义无定义在程序中是用竖线“|”来区分表头和表尾的,而且还可以使用变量。例如一般地用H|T来表示一个表,其中H、T都是变量,H为表头,T为表尾。注意,此处H是一个元素(表中第一个元素),而T则是一个表(除第一个元素外的表中其余元素按原来顺序组成的表)。表的这种表示法很有用,它为表的操作提供了极大的方便。 三、表的说明表的说明方法是在其组成元素的说明符后面加一个星号*。如:domainslists=string*predicatespl(lists)就说明谓词pl中的项lists是一个由串string组成的表。对于由结构组成的表,至少得分三步说明。例如对于下面谓词p中的表p(name(LiMing),age(20)则需要这样说明:domainsrec=seg*seg=name(string);age(integer)predicatesp(rec)用Prolog实现分支结构 Prolog没有专门的分支(选择)语句,但Prolog也可以实现分支结构。通常Prolog用两条相同结论(规则头)的并列规则实现分支结构。例如以下Prolog语句:rule(X,Y):-X0,Y=1.rule(X,Y):-X0则Y=1,否则Y=-1。完整的程序如下:predicates rule(integer,integer)clausesrule(X,Y):-X0,Y=1.rule(X,Y):-X=0,Y=-1.goalwrite(X=),readint(X),rule(X,Y),write(Y=,Y),nl. 用Prolog实现循环结构虽然Prolog没有专门的循环语句,但它也可以实现循环结构。Prolog可以实现计数循环,也可以实现不计数循环。例如下面的程序实现输出三个学生的编号、姓名和分数。 predicates stu(integer,string,real)outputclausesstu(1,ZhangHua,88.5).stu(2,LiMing,90).stu(3,WeiFang,93.5).output:-stu(Number,Name,Score),write(Number, ,Name, ,Score),nl,Number=3.goaloutput.程序第一次执行时,stu谓词与第一个事实匹配,write语句便输出了ZhangHua的数据。当程序执行到output语句时,由于Number不等于3,则该语句失败,引起回溯。而write语句和nl语句均只能执行一次,所以继续向上回溯到stu语句。此时,stu谓词因失败而重新匹配。这一次与第二个事实匹配,结果输出了LiMing的数据。同理,当执行到output语句时又引起了回溯。write语句第三次执行后,由于Number已等于3,因此output语句成功,程序运行结束。上面这个例子可以看作是计数循环。下面的程序实现不计数循环。 predicates stu(integer,string,real)outputclausesstu(1,ZhangHua,88.5).stu(2,LiMing,90).stu(3,WeiFang,93.5).output:-stu(Number,Name,Score),write(Number, ,Name, ,Score),nl,fail.goaloutput.这段程序中的fail是一个内部谓词,它表示恒失败(即永远失败)。这段程序与上面一个例子的区别在于原来的计数循环控制语句Number=3变成了恒失败谓词fail,从而使output语句永远失败,引起回溯,程序依次输出三个学生的数据。另外,用Prolog的递归机制也可以实现循环。Turbo Prolog的动态数据库 动态数据库就是在内存中实现的动态数据结构。它由事实组成,程序可以对它操作,所以在程序运行期间它可以动态变化。Turbo Prolog提供了三个动态数据库操作谓词: asserta(). assertz(). retract(). 其中fact表示事实。这三个谓词的功能是:asserta().把fact插入当前动态数据库中的同名谓词的事实之前; assertz().把fact插入当前动态数据库中的同名谓词的事实之后; retract().把fact从当前动态数据库中删除。 例如语句 asserta(student(20,李明,90.5). 将在内存的谓词名为student的事实前插入一个新事实:student(20,李明,90.5) 如果内存中还没有这样的事实,则它就是第一个。又如语句 retract(student(20,_,_). 将从内存的动态数据库中删除事实st
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年护理安全警示教育知识练习考试练习题(附答案)
- 2025年医保政策知识测评试卷:医保政策宣传与试题
- 2025年大学劳动教育专业题库- 大学生劳动教育与全面素质教育
- 2025年安全生产有限空间作业安全知识真题模拟库
- 2025年室内设计师职业资格考试真题模拟卷:室内设计作品集评审与评价标准试题
- 2025年北京市某中学小升初入学分班考试语文考试真题含答案
- 新能源企业2025年危机公关案例分析及策略优化集锦报告
- 2025年资产评估师职业资格考试真题模拟卷:资产评估师法律法规试题
- 2025年大学人文教育专业题库- 文学传统:文学作品中传统与创新之间的关系
- 2025年大学国内安全保卫专业题库- 安全保卫专业专业认证评估标准研究
- 软件产品授权与支持合同
- 2023年国家教育行政学院招聘笔试真题
- 快递设备安全培训
- 典当行财产抵押借款合同2024
- 行为矫正技术学习通超星期末考试答案章节答案2024年
- 家具安装调试及施工进度保障措施
- 2024制冷系统管路结构设计指导书
- 健康照护师测试题及答案【300题】附有答案
- 城市配送行业未来发展展望
- 大学生校园网络安全文明主题
- (正式版)SHT 3115-2024 石油化工管式炉轻质浇注料衬里工程技术规范
评论
0/150
提交评论