未知的GW-BASIC函数/语法:Q(var) = var。

13

我正在将一个非常老的GW-BASIC程序翻译成JavaScript,但是我遇到了一段语法使我困惑。请注意(再次强调):这不是我的代码,并且变量名都很疯狂,这也是我首先要移植它的原因。

1380 Z = 1
1390 RATIO = FCO2 /(1-FCO2-10^REFFO2)
1400 AA =(1 - 2*RATIO*(100 / MIXRATIO - 1))/(1 + 2*(100 / MIXRATIO - 1))
1410 PART = LOG(1 - AA)- LOG(100 / MIXRATIO - 1)
1420 FOR I = 1 TO - 1 STEP -2
1430 H = I
1440 W = T + H 
1450 GG = 62.110326# - .02144446#*W + 4.720326E-07*(W^ 2)+(- 4.5574288#)*(10^(- 12))*(W^ 3)- 7.343018200000001#*(10^(- 15))*(W^ 4) 
1460 KK = EXP(- GG /(R*(W + 273.18)))
1470 Q(Z)= KK 
1480 Z = Z + 1
1490 NEXT I
1500 NEWFO21 = LOG(10)*.5*(LOG(Q(1))+ PART):NEWFO22 = LOG(10)*.5*(LOG(Q(2))+ PART)
1510 DELEMFDELT =(FN EMF (TREF + 1,NEWFO21) - FN EMF (TREF - 1, NEWFO22))/2
1520 RETURN

问号出现在第1470行,代码为Q(Z) = KKQ在程序早期被定义为是/否输入变量,因此将浮点数放入其中是没有意义的。程序中早期没有定义过Q()函数,而且我在GW-BASIC中也找不到对Q()函数的引用。
需要帮忙吗?

4
感谢提醒我 GW-BASIC,已经好多年没用过了。+1 - Ali
2
我必须说,这个特定的项目很容易移植。 - b. e. hollenbeck
2个回答

14

Q和Q$是不同的变量。任何带$符号的都是字符串变量。Q(Z)是一个数字数组。

1和2个字符的变量名很常见,因为在早期版本的Basic中,变量名最多只能使用2个字符。


据我所知,在这个特定的循环中,Q在使用之前从未被定义。这在BASIC中可能吗?感谢您为BASIC提供的数组语法提示。 - b. e. hollenbeck
我认为数组需要在DIM中声明,但标量变量不需要。已经有一段时间了,我不确定记忆是否准确。 - xpda
这并不是非常重要 - 更多的是因为我没有意识到我正在处理一个数组。谢谢,我会在另外6分钟内给你答案。 :) - b. e. hollenbeck
1
嘿,“过于老旧”有其含义! :-) - xpda
我认为在使用之前它不必在语法上进行定义,只需要在评估时进行。可能会在后面进一步定义,但是在运行时执行的代码会在此之前执行(例如调用回调或在子程序内部)。这有意义吗? - juancn
未指定维度的数组会默认被定义为上限索引为10。因此,除非程序使用了OPTION BASE 1,否则会有11个元素。@b.e.hollenbeck - BlackJack

4
正如XPDA所提到的,任何以$结尾的变量名都是字符串。几年前我写了一些GW-BASIC程序,幸运的是,我仍然拥有许多与编译器捆绑在一起的旧文档。我上传了一个我存档的CHM副本,你可能会在里面找到一些有用的信息。 http://www.mediafire.com/?3h9z133ok8wx1l9

为什么你几年前要编写GWBASIC,谁会想要用GWBASIC编写程序呢?我只是好奇 :) - Owais Qureshi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接