Then
显示一般的回答
Elseifa<=25
显示差的回答
Ifend
Gotor
体力模块:
c=rand(1,50)
Lblr
b=rand(0,1)
c=c-1
Ifc<0
Then
Print"Iamtired..."
Pause
Inputv,"Wanttotalkmore?
(Input1/0)"
ifv≠b‘体力耗尽后,每次都有50%的几率结束程序
Then
Print"Sorry,Iamreallytired."
Print“TALKEND”
Stop
Ifend
Ifend
Gotor
【探究步骤】
1.开机后,按Menu键进入主菜单,如图:
2.找到Program模块,通过触摸笔单击的方式进入该模块,如图:
3.单击左上角的下拉菜单,选择VariableManager项,如图;
4.单击左上角的Edit菜单,选择CreateFolder项,如图:
5.输入文件夹名称,单击OK,如图:
6.关闭VariableManager,Folder下拉菜单中选择新建的文件夹进入,如图:
7.单击上方左起第二个图标,输入主程序名称,单击OK,如图:
8.单击上方左起第一个图标,输入主程序代码如下:
DispText‘显示文本框
SetDecimal‘设置为十进制
rand(1,100)⇒a
rand(1,50)⇒c
InputStrx,"Hello!
"
print"Hello!
"
Lblr
rand(0,1)⇒b
StrJoin"-",x,y
printy
ifc≤0
then
print"Iamtired..."
pause
inputv,"Wanttotalkmore?
(input1/0)"
ifv≠b
then
print"Sorry,Iamreallytired."
print"TALKEND"
stop
ifend
ifend
StrLwrx,x
StrLenx,xl
ifxl=0
then
Print"Whatdoyouwanttosay?
"
gotort
ifend
ChrToNumx,ui,xl
ifui=32orui=44orui=46orui=33orui=63
then
strleftx,xl-1,x
IfEnd
StrLeftx,4,xt
ifxt="calc"
then
StrMidx,6,xy
strToExp(xy)⇒te
ExpToStrte,ter
strjoin"Theansweris",ter,strr
printstrr
gotort
ifend
StrLeftx,6,xt
ifxt="draw2d"
then
StrMidx,8,xy
DelVarf
definef(x)=strToExp(xy)
Print"Iamdrawingit..."
DrawGraphf(x)
print"Done!
"
pause
gotort
ifend
StrLeftx,5,xtt
ifxtt="solve"
then
print"Iamsolving..."
fc()
print"Done!
"
ExpToStrua,ua
ExpToStrub,ub
StrJoin"x₁=",ua,strr1
StrJoin"x₂=",ub,strr2
Printstrr1
Printstrr2
gotort
ifend
StrLeftx,6,xt
ifxt="draw3d"
then
StrMidx,8,xy
DelVarz14
definez14(x,y)=strToExp(xy)‘3D绘图
Print"Iamdrawingit..."
SelOn3D14
draw3d
print"Done!
"
pause
gotort
ifend
lp()
dt()
lp2()
lblrt
a-1⇒a
c-1⇒c
inputstrx,"nexttalk?
","nexttalk"
Gotor
注意1:
fc(),lp(),dt(),lp2()都为子程序,分别起学习数据库(输入),原始数据库,学习数据库(输出)的功能,代码中所涉及的所有语句都可以通过手动输入的方式“依样画葫芦”得到,也可以在上方的“Misc”、“I/O”、“Ctrl”菜单中找到。
注意2:
计算器中赋值语句为“⇒”而不是“=”。
9.同理,新建子程序fc,dt,lp,lp2及辅助程序pp,输入代码如下:
dt:
ifx="idonotwanttosayanything"orx="886"orx="goodbye"orx="byebye"orx="bye"
Then
print"So,goodbye!
"
print"TALKEND"
Message"Goodbye!
"
Stop
IfEnd
ifa≥75andx="howareyou"orx="how'reyou"
then
print"I'mfine,thankyou."
1⇒k
ElseIf25≤a<75andx="howareyou"orx="how'reyou"‘心情模块的体现
Then
print"I'mjustsoso."
1⇒k
ElseIfa<25andx="howareyou"orx="how'reyou"
then
print"Idon'tfeelverynice..."
1⇒k
IfEnd
ifx="showyourdata"
then
print"Here'smymood:
"
printa
print"Here'smypower:
"
printc
1⇒k
ifend
ifx=""
then
print"?
?
"
1⇒k
ifend
Ifx="hello"orx="hi"
then
print"Hi!
"
1⇒k
ifend
ifx="whatisyourname"
then
print"MynameisCasio."
1⇒k
ifend
ifx="pause"
then
print"Ok,Ihavebeenpaused."
pause
1⇒k
ifend
ifx="goodjob"orx="howkindofyou"
then
print"Thankyou."
print"Itismypleasure."
a+2⇒a
1⇒k
ifend
ifx="cleartext"
then
print"Ok,Iwillclearit..."
wait1
ClrText
1⇒k
ifend
ifx="cleargraph"
then
print"Ok,Iwillclearit..."
wait1
ClrGraph
print"Done!
"
1⇒k
ifend
Return
fc:
Inputua,"ax²+bx+c=0,a?
"
Inputub,"b?
"
Inputuc,"c?
"
ub^2-4×ua×uc⇒ud
ifud>0
Then
(-b+√(ud))/(2ua)⇒ux
(-b-√(ud))/(2ua)⇒uy
message"liangjie"
PrintNaturalux,"x1="
PrintNaturaluy,"x2="
IfEnd
Ifud=0
Then
(-ub)/(2ua)⇒uz
message"chonggen"
PrintNaturaluz,"x1=x2="
IfEnd
Ifud<0
then
(-ub+√(ud))/(2ua)⇒ua
(-ub-√(ud))/(2ua)⇒ub
message"xvgen"
PrintNaturalua,"x1="
PrintNaturalub,"x2="
ifend
return
lp:
0⇒k
ifx=m1
then
printn1
1⇒k
ifend
ifx=m2
then
printn2
1⇒k
ifend
ifx=m3
then
printn3
1⇒k
ifend
ifx=m4
then
printn4
1⇒k
ifend
ifx=m5
then
printn5
1⇒k
ifend
ifx=m6
then
printn6
1⇒k
ifend
……‘以此类推,程序便获得了100句的记忆力
ifx=m100
then
printn100
1⇒k
ifend
Return
Lp2:
ifk=0
then
print"Icannotunderstand..."
print"Pleaseteachme..."
Ifq=1
then
x⇒m1
inputstrn1,"Pleaseteachme.Theanswer?
"
q+1⇒q
Return
ifend
Ifq=2
then
x⇒m2
inputstrn2,"Pleaseteachme.Theanswer?
"
q+1⇒q
Return
ifend
Ifq=3
then
x⇒m3
inputstrn3,"Pleaseteachme.Theanswer?
"
q+1⇒q
Return
ifend
Ifq=4
then
x⇒m4
inputstrn4,"Pleaseteachme.Theanswer?
"
q+1⇒q
Return
ifend
Ifq=5
then
x⇒m5
inputstrn5,"Pleaseteachme.Theanswer?
"
q+1⇒q
Return
Ifend
……‘以此类推,程序便获得了100句的记忆力
Ifq=100
then
x⇒m100
inputstrn100,"Pleaseteachme.Theanswer?
"
1⇒q
Return
ifend
IfEnd
return
pp:
"0"⇒m1
"0"⇒m2
"0"⇒m3
"0"⇒m4
"0"⇒m5
……‘以此类推
"0"⇒m96
"0"⇒m97
"0"⇒m98
"0"⇒m99
"0"⇒m100
"0"⇒n1
"0"⇒n2
"0"⇒n3
"0"⇒n4
"0"⇒n5
……‘以此类推
"0"⇒n97
"0"⇒n98
"0"⇒n99
"0"⇒n100
1⇒q
0⇒a
0⇒b
0⇒c
10.运行辅助程序pp,如图:
11.运行主程序,就可以实现智能对话以及各种各样的调用功能了,如图:
【探究反思&总结】
1.classpad330没有数组变量功能,这是最大的遗憾。
因为如果有了数组变量,就可以利用Forto语句,以空格为标志,分割各个单词,过滤掉“please”之类无意义的词汇,抓关键词回答问题,甚至还可以具有统计词频的功能,从而实现更加高级的人工智能,达到目前市面上成熟的人机对话程序的水平。
然而,终究没有数组变量,所以只能成为泡影。
2.classpad330不支持中文,这也是一种缺憾,所以对使用者的英语水平有一定要求(当然要求也不高)。
不过,中文复杂的语言结构也是很难被计算器所驾驭的。
3.对于第一次接触计算器编程的我来说,能编出这样的程序,确实让我自己感到很惊讶。
回想起以前那些为了寻找程序中的bug(漏洞)而绞尽脑汁的日子,现在也觉得挺有成就感的。
感谢老师给予我们的帮助,也感谢那些一起研究计算器编程的同学,正是通过我们之间相互的交流学习,才有了今天的思想火花。