图形计算器之人工智能

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图形计算器之人工智能

在接触CASIO公司的图形计算器Classpad 330的三个月里,我们通过研究发现Classpad的编程功能真的很强大,简直就是一个可以随身携带的Visual Basic语言编程器,同时,也是因为一次偶然的机会,在了解到iphone4s的siri语音控制功能给人们所带来的便利之后,我便有了编一个人工智能对话程序的想法。

【探究目的】

利用图形计算器的编程功能,在机器上实现一个便利的人工智能对话程序,从而对计算机算法以及相关知识有一个深入的认识。

【探究过程】

说起人机智能对话,我最先想到的是这样一个简单的程序:

Lbl r‘设置循环点r

Inputstr x,"Hello!"‘输入语句,保存至x变量

If x=m

Then

Print n ‘输出变量n

Ifend

Inputstr x,"next talk? ","next talk"

Goto r‘前往循环点r

(其中m为预设问题,n为预设回答)

通过判断输入问题是否与预设问题等价,来进行回答。有了这个基础,我便有了信心,开始扩大这个数据库的容量,而dt()这个子程序就是那个时期的产物。可是很快,我就遇到

了困难,如果要实现日常的对话,这个数据库将会变得无比巨大,因为一旦有一个字符不同,系统便会无法判别,就连大小写甚至句末的空格、句号、问号等都要加以区分,实在是很麻烦,所以我便开发了如下的筛选化归程序段:

Strlwr x,x ‘将字符串x全部改成小写字母Strlen x,xl ‘测量字长保存至xl变量

Chrtonum x,ui,xl ‘ui取得末位字符对应的机内码If ui=32 or ui=44 or ui=46 or ui=33 or ui=63 ‘32代表“空格”的机内码,44

代表“句号”的机内码,以此

类推…

Then

Strleft x,xl-1,x ‘x取得左起至xl-1的字符串Ifend

于是乎,当你输入“how are you ”或“how are you?”或“How are you?”时,对于机内变量x,都是同一个问题“how are you”,这样就有效地节约了数据库的空间。然而随后,在使用的过程中,我又发现,数据库再大,也还是有无法识别的问题,所以,我便想让它具有学习的功能,程序段如下:

z=0 ‘z变量起标志作用

If x=m

Then

z=z+1

Print n

Ifend

If x=m2

……

If x=m3

……

…………‘以此类推就可以扩大数据库容量

If z=0

Then

lp() ‘运行学习子程序(learning part) Ifend

子程序段如下:

q=0 ‘q变量起标志作用

If q=1

Then

m1=x

Inputstr n1

q=q+1

Return ‘返回主程序

Ifend

If q=2

Then

m2=x

Inputstr n2

q=q+1

Return

Ifend

If q=3

……

………‘以此类推就可以扩大数据库容量

这样,它就具有了学习的功能。此时的程序已经趋于完善,可当我通过看说明书知道了Strleft这个函数的作用之后,顿时有了新的想法——给对话程序加上“调用其他程序“的功能,程序段如下:

计算:

Strleft x,4,xt ‘xt取得左起第4个字符之前的字符串

If at=“calc”

Then

Strmid x,6,xy ‘xy取得左起第6个字符之后的字符串

te=StrtoExp(xy) ‘将xy转换为表达式并计算

ExptoStr te,ter ‘将te转换为字符串

Print ter

Ifend

绘图:

If xt=“draw”

Then

Strmid x,6,xy

DelVar f ‘删除变量f

Define f(x)=StrtoExp(xy) ‘定义变量f为函数f(x) Clrgraph

Drawgraph f(x) ‘画出f(x)的函数图象

Pause

Ifend

调用其他自制程序:

Strleft x,5,xtt

If xtt=“solve”

Then

Fc() ‘解一元二次方程程序

ifend

控制程序自身:

If x=“bye”or “goodbye”……

Then

Stop ‘程序结束

Ifend

If x=“pause”

……

If x=“clear text”

……

至此,程序的主体已经完成,再加上心情和体力这两项富有人性化的模块,和富有人性化的提示语,整个程序就算是完成了, 程序段大致如下:

心情模块:

a=Rand(1,100)

Lbl r

a=a-1

If 75

Then

显示好的回答

Elseif 25

Then

显示一般的回答

Elseif a<=25

显示差的回答

Ifend

Goto r

体力模块:

c=rand(1,50)

Lbl r

b=rand (0, 1)

c=c-1

If c<0

相关文档
最新文档