1

QBasic の古いプログラムを Java に「変換」しようとしています。デバッグ中に問題が発生しましたが、この GOTO ステートメントに関連していると思います。アポストロフィのある行が無視されることはわかっていますが、この場合、ステートメント GOTO はその行をターゲットにしています。最初とその後の GOTO ステートメントは無視されますか?アポストロフィは、変数 R12 と X12 または R22,X22 のみに関係しますか?

これは.BASファイルです:)

*

    4010 'R12 = R2MA + ((R2A * R2M * (R2A + R2M) + S ^ 2 * (R2A * X2M ^ 2 + R2M * X2A ^ 2)) / ((R2A + R2M) ^ 2 + S ^ 2 * (X2A + X2M) ^ 2))
    4014 'X12 = X2D + ((R2A ^ 2 * X2M + R2M ^ 2 * X2A + S ^ 2 * X2A * X2M * (X2A + X2M)) / ((R2A + R2M) ^ 2 + S ^ 2 * (X2A + X2M) ^ 2))
         R22 = ((R2A * XMMU ^ 2 + R2M * XAVVMU ^ 2) * S ^ 2 + R2A * R2M * RT2) / (RT2 ^ 2 + S ^ 2 * XT2 ^ 2)
         X22 = (X2A * (R2M ^ 2 + S ^ 2 * X2M ^ 2) + X2M * (R2A ^ 2 + S ^ 2 * X2A ^ 2) + 2 * X2AVM * (R2A * R2M - S ^ 2 * X2AVM * XT2)) / (RT2 ^ 2 + S ^ 2 * XT2 ^ 2)
         X22 = X22 + X2D
         R22 = R22 / ZUN: X22 = X22 / ZUN
    4016 A1 = R22 * E1 ^ 2 / (P2 * X22 ^ 2 + R22 * E1 ^ 2)
    4020 S = .5 * A1 - SQR(A1 * (.25 * A1 - R22 * P2 / E1 ^ 2))
    4030 G1 = (PFE / (3 * (VF * (FR / 100)) ^ 2)) * ZUN
    4040 A2 = (R22 / S) ^ 2 + X22 ^ 2: B2 = R22 / (S * A2): C2 = X22 / A2: D2 = B2 + G1
    4050 E2 = C2 + B1: F2 = D2 ^ 2 + E2 ^ 2: G2 = D2 / F2: H2 = E2 / F2: Z2 = SQR(G2 ^ 2 + H2 ^ 2)
    4060 I2 = G2 + R11: L = H2 + X11: ZTOT = SQR(I2 ^ 2 + L ^ 2)
    4070 I1 = 1 / ZTOT
    4080 E3 = I1 * Z2
    4090 IF ABS(E1 - E3) > P0 THEN 5800
.
.
.

    5800 E1 = (E1 + E3) / 2
    5810 GOTO 4010



*
4

1 に答える 1

3

これは確かに QBasic プログラムの書き方としては奇妙です。通常は、すべての行に番号を付けるか、まったく番号を付けないかのどちらかです。小さなテスト プログラムを実行して、この場合に QB が GOTO をどのように処理するかを確認できます。だから、このようなもの:

10 I = 0
20 'PRINT "Test line 20"
30 'PRINT "Test line 30
    PRINT "Test line 40"
    PRINT "Test line 50"
60 PRINT "Test line 60"
70 I = I + 1
80 IF (I <= 1) GOTO 20
90 PRINT "THE END"

QB4.5 でこれを試したところ、出力は次のようになりました。

Test line 40
Test line 50
Test line 60
Test line 40
Test line 50
Test line 60
THE END

GOTO 文は通常どおり動作しますが、20 行目と 30 行目の内容は実行されず、コメントとして扱われます。したがって、あなたの質問に答えるために、あなたの場合、R12 = ..andX12 = ..の行は無視されて実行されず、 and などの行はR22 = ..通常X22 = ..どおり処理されます。

于 2015-09-25T10:45:30.233 に答える