What are the difference between a BASIC GOTO and GOSUB statement
在基本编程语言中,goto和gosub语句有什么区别?
GOTO只是跳到另一行,GOSUB跟踪它从哪里来(大概是在堆栈上),所以当解释器遇到RETURN时,它会回到调用GOSUB的最后一个位置。
- 仍在使用BASIC。vb.net仍然是基本的。
- 什么?vb.net是一种完全不同的语言。当然,这叫基础,但不是BASIC。
- @科林-你错过了重点。vb.net仍然是基本的。是的,它有许多OO扩展,但本质上仍然是基本的。当然,它没有被解释,但这是一种执行策略,而不是语言问题。
- BASIC正在推动物流、银行和许多其他行业的许多高性能业务系统。例如,所有多值数据库驱动的业务系统都是用BASIC编写的。
- @Glennsallis是一种产品吗?这些词对谷歌来说似乎过于笼统。
- @科林是真的,非常普通。""多值数据库"实际上是产品。市场上有一些值得一提的东西,例如来自火箭软件的Universe和Unidata,来自Tiger Logic的D3,以及来自Northgate信息解决方案的Reality。它们都是DBMS和"业务"引擎,打包在一起,其中基本语言是业务逻辑的内置语言。
- 很肯定你在系列赛中被逐字引用了"停下来,着火"
提供的其他答案对如何使用goto和gosub给出了很好的解释,但是在处理它们的方式上有一个重要的区别。当执行goto时,它从堆栈的顶部开始,并在所有代码行中翻转,直到找到它应该转到的行。然后,如果使用另一个goto语句返回,它将再次转到堆栈的顶部,并翻转所有内容,直到到达下一个位置。
GoSub做的和Goto差不多,但它记得它在哪里。当您使用RETURN语句时,它只会跳回来,而不会先跳到堆栈的顶部,然后再翻遍所有内容,所以速度要快得多。如果您希望代码运行得更快,那么应该将最被调用的子例程放在堆栈的顶部,并使用gosub/return而不是goto。
当您调用goto时,程序将跳转到相关行并继续执行。
如果您使用gosub,它也会做同样的事情,但是在某些时候,您可以编写一个返回语句,代码将返回到gosub之后的行。
所以goto是去x的,gosub是去x的,但是记住你现在在哪里,所以你可以稍后返回。
- 谢谢;但是,我认为我们可以合并另一个命令传输,其中预期的可执行指令结束回goto语句后面的下一行,然后第一个控制传输行上方的控制语句的另一个传输来完成相同的操作,尽管代码比普通的gosub多,然后是单返回。例如10到30。15码。20码。25 GTO 45。30码。35码。40 GTO 15。45.结束这项工作,它将永远不会进入一个无休止的循环。
- 我看不到你的评论。请编辑您的问题。
- 你的回答是正确的!我只是想用另一种涉及更多代码的方法。谢谢你回答的问题。我已经投了你的票了