2013-01-24 125 views
12

我正在將一個過時的GW-BASIC程序翻譯成JavaScript,並且遇到了一個讓我難以理解的語法。注意(再次):完全不是我的代碼,並且變量名稱都是瘋狂的,這就是爲什麼我首先將其移植。未知的GW-BASIC函數/語法:Q(var)= var

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$是一個yes/no的輸入變量,所以我沒有任何意義讓它浮動。前面的程序中沒有定義Q()函數,我也無法在GW-BASIC中找到對Q()函數的引用。

任何幫助?

+3

+1爲了讓我想起GW-BASIC,已經有一年了 – Ali

+2

我不得不說,這個特定的項目一直是一個爆炸口岸。 –

回答

12

Q和Q $是單獨的變量。任何與$都是一個字符串變量。 Q(Z)是一個數字數組。

1和2字符名稱很常見,因爲在早期版本的Basic中,變量名稱被限制爲最多2個字符。

+0

就我所知,在這個特定的循環中,Q從來沒有被定義過。 BASIC中可能嗎?並感謝BASIC的數組語法提示。 –

+0

我認爲數組需要在DIM中聲明,但不是標量變量。這是一段時間,我不記得肯定。 – xpda

+0

這並不是那麼重要 - 它不是理解我正在處理數組。謝謝,我會在6分鐘內給你答案。 :) –

4

正如XPDA提到的,任何以$結尾的變量名都是一個字符串。 幾年前我寫了一些GW-BASIC,幸好我還有很多與編譯器一起打包的舊文檔。 我已經上傳了已存檔的CHM副本,您可能會在其中找到一些有用的信息。 http://www.mediafire.com/?3h9z133ok8wx1l9

+0

爲什麼幾年前你必須寫gwbasic,誰會想要一個用gwbasic編寫的程序? ,我只是好奇:) –

+0

@dotNetSoldier它是我正在幫助的課程的一部分 –