视频: 【ライブ配信】予選Bシフト後半4G『第42回 JLBCクイーンズオープン プリンスカップ』 2024
PBASIC子程序在使用BASIC Stamp处理器的电子项目中是非常有用的。一个 子程序 是程序的一部分,可以从程序的任何位置调用。当子程序结束时,程序的控制跳回到调用子程序的位置。
子例程是有用的,因为它们可以让程序的主循环中的很长一段程序分开,这简化了主程序循环,使其更容易理解。子程序的另一个好处是可以使你的程序更小。
<! --1 - >假设你正在编写一个需要多次执行复杂计算的程序。如果将复杂的计算放在子程序中,可以从程序中的几个地方调用子程序。这样,你只写一次执行复杂计算的代码。
要创建和使用子程序,您需要使用两个PBASIC命令。第一个是GOSUB,它调用子程序。您通常在程序的主循环中使用GOSUB命令,无论何时调用子例程。第二个命令是RETURN,它总是子例程中的最后一个命令。
<! - 2 - >要创建一个子程序,您可以从一个标签开始,并以一个RETURN命令结束。在他们之间,当你调用子程序时,你可以写任何你想要执行的命令。
下面是一个子程序的例子,它生成一个介于1到999之间的随机数,并保存在一个名为Rnd的变量中:
GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
调用这个子程序,你可以简单地使用这样的GOSUB命令:
GOSUB GetRandom
这个GOSUB命令把控制权交给GetRandom标签。然后,当GetRandom子程序到达其RETURN命令时,控制会立即跳回到GOSUB命令之后的命令。
这是一个完整的程序,它使用一个子程序来获得1到1,000之间的随机数,并使用随机数使引脚0上的LED以随机间隔闪烁。你可以在任何一个基本印章电路上运行这个程序,这个印刷电路在引脚0上有一个LED。
'LED Blinker程序'Doug Lowe'2011年7月10日“这个程序随机闪烁引脚0上的LED'。{$ STAMP BS2} '{$ PBASIC 2.5} Rnd VAR Word Led1 PIN 0 DO GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 LOOP GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN
当使用子程序时,你可以防止你的程序意外“落入”你的子程序,并在你不打算执行时执行它。例如,假设程序清单3-5中的程序使用FOR-NEXT循环而不是DO循环,因为您只想使LED闪烁100次。下面是一个 不是 程序的例子:
FOR Counter = 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 NEXT GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN你知道为什么吗?在FOR-NEXT循环使LED闪烁100次之后,程序将在FOR-NEXT循环(子程序)之后继续执行下一个命令!为防止这种情况发生,可以使用另一个PBASIC命令END,它只是告诉BASIC Stamp你已经到达了程序的末尾,所以应该停止执行命令。你可以在NEXT命令后加上END命令,如下所示:
FOR Counter = 1 TO 100 GOSUB GetRandom HIGH Led1 PAUSE Rnd LOW Led1 PAUSE 100 NEXT END GetRandom:RANDOM Rnd Rnd = Rnd // 999 + 1 RETURN >然后,程序将在FOR-NEXT循环结束后停止。