2013-01-24 14 views
12

Tłumaczę nadmiernie stary program GW-BASICa na JavaScript i natknąłem się na kawałek składni, który mnie zaskoczył. Zauważ (ponownie): całkowicie nie mój kod, a nazwy zmiennych są szalone, dlatego właśnie je przenosiłem.Nieznana funkcja/składnia GW-BASICa: 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 

Znak zapytania to linia 1470: Q(Z) = KK. Q jest zdefiniowany wcześniej w programie jako zmienna wejściowa tak/nie, więc nie ma sensu umieszczać w niej float. Wcześniej nie zdefiniowano funkcji Q() i nie mogę znaleźć odwołania do funkcji Q() w GW-BASIC.

Każda pomoc?

+3

+1 za przypomnienie mi o GW-BASIC, to było LATA – Ali

+2

Muszę powiedzieć, że ten konkretny projekt był strzałem w dziesiątkę. –

Odpowiedz

12

Q i Q $ to oddzielne zmienne. Wszystko z $ jest zmienną łańcuchową. Q (Z) to tablica liczb.

Nazwy 1 i 2 znaki są wspólne, ponieważ we wcześniejszych wersjach języka podstawowego nazwy zmiennych były ograniczone do maksymalnie 2 znaków.

+0

O ile wiem, Q nigdy nie jest zdefiniowane, zanim zostanie użyte w tej konkretnej pętli. Czy to możliwe w BASIC? I dziękuję za podpowiedź składni tablicy dla BASIC. –

+0

Myślę, że tablice musiały być zadeklarowane w DIM, ale nie zmienne skalarne. Minęło trochę czasu i nie pamiętam tego na pewno. – xpda

+0

To nie jest aż tak ważne - bardziej nie rozumiałem, że mam do czynienia z tablicą. Dzięki, a dam ci odpowiedź za kolejne 6 minut. :) –

4

Jak wspomniano o XPDA, każda nazwa zmiennej suffixed z $ jest łańcuchem znaków. Napisałem kilka GW-BASIC kilka lat temu i na szczęście wciąż mam dużo starej dokumentacji, która została zapakowana wraz z kompilatorem. Przesłałem kopię CHM, którą zarchiwizowałem, prawdopodobnie tam znajdziesz przydatne informacje na jej temat. http://www.mediafire.com/?3h9z133ok8wx1l9

+0

Dlaczego kilka lat temu trzeba było napisać gwbasic, kto chciałby programu napisanego w gwbasic? , Jestem po prostu ciekawy :) –

+0

@dotNetSoldier było częścią kursu, z którym pomagałem –