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