请教:goto命令可以在t-basic中编程中少用或不用么?
编程语言中会用到goto语句,但我看很多编程高手在帖子中经常强调要少用或不用goto,因为编程提倡三种结构——顺序结构,循环结构和选择结构。这三种结构具有很强的逻辑性,goto不属于其中任何一种结构,用它可以在程序里随意指定程序的运行位置,看似方便但容易造成程序混乱,程序执行效率低,可读性不强。在现代很多编程语言中据说已经取消了goto语句。我用t-basic编写了一个随机产生两个20以内数字然后进行加法或减法,并且判断输入答案是否正确。我在其中用了很多goto语句,然后也想不出怎么不用这些语句来表达。所以敬请各位高手不吝赐教一,二!谢谢!Define aa()=
Prgm
Lbl st
a:=int(rand()*2)+1 --随机输出1或2
If a=1 then
Goto jia
Else
Goto jian
EndIf
Lbl jia --加法标签
b:=int(rand()*20)+1 --以下两行随机输出20以内两个数字
c:=int(rand()*20)+1
Lab ag1
Disp b,"+",c
Request "jiafa",d --输入答案
If d=b+c Then --判断输入的答案是否正确
Goto st
Else
Goto ag1
EndIf
Lbl jian --减法标签
b:=int(rand()*20)+1
c:=int(rand()*20)+1
If b>c Then --判断语句确保被减数大于减数
Goto ag2
Else
Goto jian
EndIf
Lab ag2
Disp b,"-",c
Request "jianfa",d
If d=b-c Then
Goto st
Else
Goto ag2
EndIf
真的要少用!
勉强看懂了程序,我觉得完全可以用if嵌套完成。
goto跳来跳去的头很大的 真的少用+1,虽然会比较方便就是了...
现在看以前的程序完全看不懂/w\ 以前用Casio经常用。但最好少用。因为以后要再看懂这个程序会比较难。不便于后期维护更新以及给别人借鉴 以前用Casio经常用。但最好少用。因为以后要再看懂这个程序会比较难。不便于后期维护更新以及给别人借鉴 理论上建议少用goto ,但实际上goto 语句的使用可以很大的增加灵活性。用的好还可以简化思路,增强程序的易读性。
偶以前用51单片机汇编搞开发时,goto的用法是必须的。 谢谢各位高手!我还想请教各位高手,如果不用goto语句或尽量少用的话,上面这个程序该如何修改?用什么样的语句可以代替?请指点!谢谢! 只需要很简单的if就可以控制了,Goto只会把你的思维搞乱
Define test()=
Prgm
Local a,b,type,operator,expression,res
a:=randInt(0,20)
b:=randInt(0,20)
type:=randInt(0,1)
If type=1 Then
operator:="+"
Else
operator:="-"
EndIf
expression:=string(a)&operator&string(b)
Request expression&"=?",res
If res=expr(expression) Then
Text "Right!"
Else
Text "Wrong!"
EndIf
EndPrgm 我这里有本92年的NOIP的参考书,其中的代码用当时的BASIC和PASCAL各写了一遍
当时的BASIC还是不支持写成函数格式的,因此我就看见书里面说如何用BASIC手写函数调用栈。。。
不过那不是重点,一个DFS搜索或回溯法搜索BASIC写了好几页,无数的GOTO真的影响阅读 wtof1996 发表于 2014-7-18 13:12
只需要很简单的if就可以控制了,Goto只会把你的思维搞乱
万分感谢!很专业的代码,清晰、简洁,我要好好研究研究!
页:
[1]