2

关于这个线程,这也是我想要做的,但我在这方面有更多的余地。

我的问题是我目前正在开发一个定义程序(用于我的 ti-89 钛)来写出变量的定义。但是,考虑到我要添加的变量数量不定,我认为一遍又一遍地使用定义函数会浪费内存和处理能力。所以我的想法是将变量保存到另一个变量中,以便在程序的后面部分中定义。

prompt x
lbl x_d_r
x_d_r->q:Goto def
lbl def
define expr(q)[1]=x

其中 x_d_r 没有赋值。所以该程序应该使用定义的字符串作为列表值是 x。然而,明显的错误出现了。

所以我在主屏幕和程序屏幕上玩了一会儿,遇到了 entry(1) 和 ans(1)。回头看看 ti-83(或 84)我基本上可以去(如果我没记错的话)

disp q*1
x->ans(1)

然而,关于 ti-89 钛的 ans(1) 是基于提交给主屏幕的最后一个答案。即使这样,程序中的 ans(1) 或 entry(1) 也会被替换掉。幸运的是,我找到了避免这种情况的方法。

Prgm
expr(char(120)&char(22)&char(97)&char(110)&char(115)&char(40)&char(49)&char(41))
EndPrgm

对于那些不知道的人,这只是简单地表达 x->ans(1) ,这是代码在程序中传输 ans(1) 的一种方式,而无需删除代码。

但它仍然不起作用,因为需要将值发送到主屏幕才能正确记录。这是 ti-84 或 ti-83 我希望它在钛金属上仍然具有的优势之一。所以我花了一些时间寻找如何在程序中将 q 的值显示到主屏幕的方法。 到目前为止,我了解到直接从主屏幕使用的函数会将 q 的值返回到同一个位置。但是我无法在实际程序中实现这一点,因为该函数不希望将值传输到主屏幕,并且它在程序中相当无用。

其次,我发现这个网站详细介绍了将值返回到主屏幕的方法。虽然方法 1 似乎有希望,但我似乎没有任何方法可以访问该文件夹/程序。很可能是因为它是他制作的,并且没有在 pdf 上分享它的位置。我确实喜欢 expr("q"&":stop"),但是 q 没有被评估出来,所以也许我不得不以某种方式重新设计它。

在发生这种情况时,我认为其他一些想法可能是在程序中使用粘贴键,但我不知道如何实现从 getkey 中找到的东西,更不用说第二个和抓取按钮是如何影响的了。

或者我可以以某种方式让 ans(1) 查看主屏幕以外的其他地方。最好是 i/0 屏幕,但也可能是其他一些列表或数据矩阵。

有人对如何通过函数、粘贴或其他方式将值传递到主屏幕有任何想法,并且我之前定义的程序是否将其定义为值?

UPDATE+1 好吧,我开始怀疑我是否让它变得比它需要的更复杂......

毕竟,我只选择 just x->x_d_r[1],这已经在别处定义了。它也打败了x->q:Goto def Lbl def Define expr(q)=x

(或者类似调用历史记录程序来定义值的东西?)在处理速度和内存计数方面?

4

1 回答 1

3

知道了。请参阅此处了解我真正想做的事情。

因此,作为对主要问题的解释,我希望能够发布一个 q 的字符串值,以由另一个 x 值定义。

expr(功能在ti-89上是一个非常强大的工具,就像其他论坛的人一样,低估了它。看看这个人想要做什么

InputStr "Function:",f(x)
expr(f)→f(x)  

后来通过将其修改为

InputStr "function", n
expr(n & "->f(x)")

表达工具只是简单地表达括号中的内容。所以今天在学校的休息时间,我在脑海里重新思考“如果我试着把括号改写成这样Expr("x->"&String(q))会怎么样?

瞧瞧它的工作原理。使用更完整版本的定义对其进行测试以获得

td()
Prgm
Prompt X
x_d_r->q
expr("x->"&string(q)&"[1]")
Disp x_d_r[1]
Delvar x_d_r
EndPrgm

尝试,测试和真实。一路有效。看看我认为正在发生的事情是,任何不在引号内的内容都会立即在表达式中进行评估,而引用的对象则被简单地表达并稍后添加以响应“&”键。此外,如果我用英语更多地描述它是有道理的;"表示 x 要存储到 q 的相应表的字符串中"

虽然出于变量的原因,我必须研究使 x_d_r 仅对程序本地的方法,而不补偿 x_d_r 部分在执行时不被视为存储值这一事实x_d_r->q。但是知道我现在知道的我可能会做

expr("q"+"x_d_r"&->a)
expr("x->"&string(a)-"q"&"[1]")

为了绕过这个问题。

于 2015-03-18T19:11:54.510 回答