是否可以在另一个需要参数的程序中执行程序?(没有内联它)
例如
________________
- PROGRAM:ADD
- :Prompt A,B
- :A+B>C
________________
- PROGRAM:TEST
- :For(I,0,20)
- :Disp (prgmADD (I,I+1))
- :End_________
显然,这并不像现在这样工作,但我希望我能说清楚我的意思。
是否可以在另一个需要参数的程序中执行程序?(没有内联它)
例如
________________
- PROGRAM:ADD
- :Prompt A,B
- :A+B>C
________________
- PROGRAM:TEST
- :For(I,0,20)
- :Disp (prgmADD (I,I+1))
- :End_________
显然,这并不像现在这样工作,但我希望我能说清楚我的意思。
传递参数的传统方式是在一个列表中,Ans
如下所示:
________________
- PROGRAM:ADD
- :Ans(1)+Ans(2
________________
- PROGRAM:TEST
- :For(I,0,20
- :{I,I+1
- :prgmADD
- :Disp Ans
- :End
________________
我认为没有办法做到这一点-您基本上是在要求伪造用户输入,这是不受支持的。
我解决它的方法是通过将 A 和 B 设置为 I、I+1 来预加载变量。然后有另一个你在任何程序中都不会触及的变量,它是一个标志,让子程序知道它可以跳过输入。
当子程序运行时,它使用 if 语句来检查标志变量。如果它设置为您选择的特定值,它知道这意味着它不必运行 Prompt 命令,因为 A 和 B 已经设置。检查值后,它应该重置标志,以便稍后手动运行它时不会跳过提示。
我使用的特定约定是保留系统中的最后一个列表供我的程序使用。每个程序都知道查看参数列表。这样我就不必担心程序之间的可变字母匹配了。所以在这种情况下,列表的第一个元素可能是 1,表示有要读取的参数。如果为 0,则使用提示符。否则,它将查看 A 和 B 的值的第二个和第三个元素。它在完成后清除列表,因此剩余数据不会干扰以后的运行。
正如 Katie 所说,在 TI-Basic 程序之间传递参数没有内置方法。但是,有一种原始方法可以将单个参数传递给函数。
未计算的表达式可以保存在其中一个Y-VARS
变量中。在您的程序中使用此变量将导致其中包含的表达式被评估并返回结果。有趣的是,Y-VARS
变量可以传递一个参数,该参数将替换表达式主体中的单个变量。它被替换的变量取决于Y-VARS
您使用的变量。Function
变量使用X
、Parametric
使用T
和Polar
使用θ
。
这个示例程序演示了我所描述的内容。
:"XLog(X→Y1
:Disp Y1(10
:Disp Y1(5
当作为参数Y1
传递时, in的所有实例都替换为. 现在等价于,或者只是 10。传递给时会看到相同的效果。10
X
Y1
10
Y1
10log(10
5
Y1
这种变通方法的明显缺点是只能传递一个参数。其他缺点包括您只能将标准计算器功能放入其中之一,Y-VARS
并且访问Y-VARS
会带来很大的开销。