由于Prolog是门声明式编程语言,所以前面一直在介绍它那些方面的特性,不像其它编程语言先从“HelloWorld!”入门。这篇经验将介绍它的输出和输入,以及文件的一些操作。
工具/原料
SWI-Prolog
电脑
输出
1、Prolog提供了在屏幕上输出信息的写谓词write。目标write(X)使Prolog把X的值写到屏幕上,X可以是一个对象、整型数、变量或是字符串。字符串得用引号括起来,引号可以是单引号也可以是双引号,也可以在里面加入转义符号,从而可以打印出特殊字符,比如“\n”表示换行,“\a”表示响铃。Prolog的write用法几乎与Python等主流编程语言中print的用法相同。
2、nl表示换行。writeln表示在输出后进行一次换行。
3、不过,write语句似乎不支持多种元素输出。像Python的print语句可以这样:print("结果为:"+result+"。")其中result为变量,被引号包括的为字符串。而write语句要达到上面这样在一句代码中同时输出字符串和变量结果,就得另辟蹊径了。下图是一个例子,利用了列表的递归性质。这个程序在后面将会用到。
输入
1、read这个谓词是用来从键盘读取信息的跷孳岔养。目标read(X)让Prolog从键盘读进一系列字符(如一个名刮苕匚衰词),这个名词必须用句号结尾,接着按回车。Prolog会用下面提示符来输入信息:|:需要注意的是,输入时,如果含有大写字母等特殊字符,需要用引号括起来。比如大写字母开头的单词在Prolog中会被视为变量。可以理解为输入的内容也被当作Prolog的程序的一部分,这一点和其他编程语言很不一样。下图是一段输出欢迎消息的程序和结合上面程序的输出。
2、如果变量X是非例示的,那么read(X)将把所输入的内容赋给X,但如果X已经是例示变量,那么目标read(X)将X与输入的内容进行比较,若相同,则目标成功,否则失败。
读和写单个字符
1、Prolog还提供了输入输出单个字符的谓词,分别为get和put。壹执慵驾get用来从键盘上输入一个字符,目标get(X像粜杵泳)可给一个非例示变量X赋一个整型数,这个整型数就是在键盘上输入某个字符的ASCII代码。要注意,get(X)只能用于那些可打印字符,不过另一个谓词get0(X)可用来输入任何ASCII字符。如果X是例示的,那么执行get(X)就用输入字符的ASCII码去同X的值进行比较,若相同,则目标成功,否则失败。
2、谓词put可用来在屏幕上显示单个字符,变元X的值应该是ASCII代码表中的一个,目标put(X)将输出对应字符。
文件的使用
1、tell:目标tell(X)通知Prolo壹执慵驾g从此后往后程序中所有通过谓词write、get等产生的输出都被送到文围泠惶底件X中,对于所使用的计算机系统,X必须得是一个有效的文件名或文件路径名。如果X已经存在,文件将被重写。told:在往屏幕输出文件中写完信息后要用到told,它的用途是将文件关闭,其后的输出都将送往屏幕。telling:这个谓词可用来显示当前正处在写状态的文件名字,当X的值是当前输出文件的名字时,目标telling(X)则成功。see:读取X文件。相对应的,seen用于关闭输入文件,seeing用于显示当前输入文件的名字。append:追加内容。它与tell类似,但却是在已有文件后添加内容。
2、下面的程序是在当前目录下生成一个文件,这个文件中含有从1到100的整数,每个整数都占一行。
了解更多
1、如果要了解更多关于输入和输出内容,可以去SWI-Prolog网站的Termreadingandwriting页面了解更多。
2、如果要了解更多关于文件内容,可以去SWI-Prolog网站的Inputandoutput页面了解更多内容。