艾上 发表于 2014-7-15 19:04:59

请教: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


lazydog 发表于 2014-7-15 20:20:47

真的要少用!
勉强看懂了程序,我觉得完全可以用if嵌套完成。
goto跳来跳去的头很大的

Cursor 发表于 2014-7-15 20:43:55

真的少用+1,虽然会比较方便就是了...
现在看以前的程序完全看不懂/w\

rourou_Jun 发表于 2014-7-15 22:15:03

以前用Casio经常用。但最好少用。因为以后要再看懂这个程序会比较难。不便于后期维护更新以及给别人借鉴

rourou_Jun 发表于 2014-7-15 22:15:09

以前用Casio经常用。但最好少用。因为以后要再看懂这个程序会比较难。不便于后期维护更新以及给别人借鉴

alunli 发表于 2014-7-16 01:17:53

理论上建议少用goto ,但实际上goto 语句的使用可以很大的增加灵活性。用的好还可以简化思路,增强程序的易读性。
偶以前用51单片机汇编搞开发时,goto的用法是必须的。

艾上 发表于 2014-7-17 06:29:35

谢谢各位高手!我还想请教各位高手,如果不用goto语句或尽量少用的话,上面这个程序该如何修改?用什么样的语句可以代替?请指点!谢谢!

wtof1996 发表于 2014-7-18 13:12:14

只需要很简单的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

_14522 发表于 2014-7-18 18:49:13

我这里有本92年的NOIP的参考书,其中的代码用当时的BASIC和PASCAL各写了一遍
当时的BASIC还是不支持写成函数格式的,因此我就看见书里面说如何用BASIC手写函数调用栈。。。
不过那不是重点,一个DFS搜索或回溯法搜索BASIC写了好几页,无数的GOTO真的影响阅读

艾上 发表于 2014-7-19 06:52:39

wtof1996 发表于 2014-7-18 13:12
只需要很简单的if就可以控制了,Goto只会把你的思维搞乱

万分感谢!很专业的代码,清晰、简洁,我要好好研究研究!
页: [1]
查看完整版本: 请教:goto命令可以在t-basic中编程中少用或不用么?