【问题标题】:TI-84 programming parameterTI-84 编程参数
【发布时间】:2015-04-06 19:10:15
【问题描述】:

是否可以在另一个需要参数的程序中执行一个程序? (不内联)

例如

________________
 - PROGRAM:ADD
 - :Prompt A,B
 - :A+B>C
________________
 - PROGRAM:TEST
 - :For(I,0,20)
 - :Disp (prgmADD (I,I+1))
 - :End_________

显然,这并不能像现在这样工作,但我希望我能清楚地说明我的意思。

【问题讨论】:

    标签: ti-basic


    【解决方案1】:

    传递参数的传统方式是通过Ans 在列表中,如下所示:

    ________________
     - PROGRAM:ADD
     - :Ans(1)+Ans(2
    ________________
     - PROGRAM:TEST
     - :For(I,0,20
     - :{I,I+1
     - :prgmADD
     - :Disp Ans
     - :End
    ________________
    

    【讨论】:

      【解决方案2】:

      正如 Katie 所说,TI-Basic 程序之间没有用于传递参数的内置方法。但是,有一种原始方法可以将单个参数传递给函数。

      未计算的表达式可以保存在Y-VARS 变量之一中。在您的程序中使用此变量将导致其中包含的表达式被评估并返回结果。有趣的是,Y-VARS 变量可以传递一个参数,该参数将替换表达式主体中的单个变量。它所替代的变量取决于您使用的Y-VARS 变量。 Function 变量使用XParametric 使用TPolar 使用θ


      这个示例程序演示了我所描述的内容。

      :"XLog(X→Y1
      :Disp Y1(10
      :Disp Y1(5
      

      Y1 作为参数传递10 时,Y1 中的所有X 实例都将替换为10Y1 现在等同于 10log(10,或者只是 10。将 5 传递给 Y1 时会看到相同的效果。


      这种解决方法的明显缺点是只能传递一个参数。其他缺点包括您只能将标准计算器函数放入 Y-VARS 之一中,并且访问 Y-VARS 会带来很大的开销。

      【讨论】:

        【解决方案3】:

        我认为没有办法做到这一点 - 你基本上是在要求伪造用户输入,这是不受支持的。

        我解决它的方法是通过将 A 和 B 设置为 I, I+1 来预加载变量。然后有另一个你在任何程序中都不会触及的变量,它是一个标志,让子程序知道它可以跳过输入。

        当子程序运行时,它使用 if 语句检查标志变量。如果它设置为您选择的特定值,它知道这意味着它不必运行 Prompt 命令,因为 A 和 B 已经设置。检查值后,它应该重置标志,以便稍后手动运行它时不会跳过提示。

        我使用的特定约定是保留系统中的最后一个列表供我的程序使用。每个程序都知道查看参数列表。这样我就不必担心程序之间的可变字母匹配了。所以在这种情况下,列表的第一个元素可能是 1,表示有要读取的参数。如果为 0,则使用提示符。否则,它会在第二个和第三个元素中查找 A 和 B 的值。它会在完成后清除列表,因此剩余数据不会干扰以后的运行。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-22
          • 2015-01-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多